Flutter插件iscflutterplugin的使用_isc_flutter_plugin 是一个基于海康isc平台原生SDK进行二次封装的播放器插件,支持Android和iOS平台

Flutter插件iscflutterplugin的使用_isc_flutter_plugin 是一个基于海康isc平台原生SDK进行二次封装的播放器插件,支持Android和iOS平台

Flutter插件iscflutterplugin介绍

isc_flutter_plugin 是一个基于海康isc平台原生SDK进行二次封装的播放器插件,支持Android和iOS平台。

  • 插件已在本公司及多家友商公司实际项目中使用,效果良好。
  • 插件提供了Dart版AK/SK验证代码,支持直接调用ISC平台部分常用API。
  • 插件经测试最低支持v1.2.0,最高支持V2.1.0,其他版本未经过测试。
  • 苹果支持iOS 11及以上。

不同状态下的功能支持

预览状态

在预览状态下,插件支持以下功能:

  • 预览
  • 抓拍
  • 录像
  • 云台控制
  • 语音对讲
  • 声音控制
  • 码流平滑切换(仅支持Android设备)

回放状态

在回放状态下,插件支持以下功能:

  • 回放
  • 抓拍
  • 录像
  • 指定回放开始时间位置
  • 查询当前播放时间戳

API接口能力

插件提供了丰富的API接口能力:

  • ISC平台认证
  • 获取预览地址
  • 获取回放地址
  • 云台控制
  • 获取语音对讲地址
  • 获取海康SDK版本号

注意事项

  • 需要根据实际情况使用HTTP或HTTPS请求,可以与运维人员确认。
  • 根据实际情况选择版本,1.4+以上版本的API接口地址有变化,需要注意。
  • 如果开启了混淆,需要在混淆文件中增加以下代码:
# 海康威视视频取流播放相关库的混淆配置
-keep class org.MediaPlayer.PlayM4.** {*;}
-keep class com.hikvision.netsdk.** {*;}
-keep class com.hikvision.audio.** {*;}
-keep class hik.common.isms.hpsclient.** {*;}
-keep class com.hikvision.open.hikvideoplayer.** {*;}
  • iOS端海康的SDK仅支持真机,不支持模拟器。
  • 如遇到打包后Android端视频无法播放的情况,可以参照demo中app/build.gradle文件中的步骤进行配置,主要包括:
    • apk用命令行打包时用到的签名配置
    • 开启混淆的,注意一定要添加海康SDK的反混淆
    • so库过滤

使用教程及常见问题汇总

使用教程及常见问题汇总详见 此处

技术支持

接入过程中遇到问题可先参考使用教程及常见问题汇总,或加入技术支持群:QQ 856941179 大家一起研究学习。

版权声明

  • 本插件使用的是MIT License授权,在任何项目中都可以使用。
  • 插件中使用了海康的SDK,在项目中使用时,需保证具有海康SDK的使用授权。

关于作者

北京金控数据技术股份有限公司是一家2008年注册于中关村核心区的国家级高新技术企业,主要从事智慧水厂、智慧水务系统开发和运营,致力于提高水务行业智能化水平,改善人们的工作环境和方式。公司是中关村“瞪羚企业”、海淀区“海帆企业”、北京市专利试点单位、北京市软件企业、中国水协智慧水务委员会常务委员,拥有强大的自主技术研发能力,承担了十三五“水专项”重大科技研发项目,已获得20多项发明专利、60多项软件著作权、2项北京市新技术新产品、2项首台(套)重大装备示范项目,并获得了启明创投与中信建投两家知名投资机构的风险投资。

完整示例Demo

import 'package:flutter/material.dart';
import 'package:iscflutterplugin/isc_http.dart';
import 'package:iscflutterplugin_example/video_play_back.dart';
import 'package:iscflutterplugin_example/video_real_play.dart';

void main() => runApp(MaterialApp(
      home: HomePage(),
    ));

class HomePage extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() {
    return _HomePageState();
  }
}

class _HomePageState extends State<HomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 初始化配置
    // ArtemisConfig.host = "xxx";
    // ArtemisConfig.appKey = "xxx";
    // ArtemisConfig.appSecret = "xxx";

    return Scaffold(
      appBar: AppBar(
        title: Text(
          '海康isc播放器插件,支持android/ios',
        ),
      ),
      body: Container(
        width: double.infinity,
        height: double.infinity,
        child: Column(
          children: <Widget>[
            Container(
              width: double.infinity,
              child: ElevatedButton(
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (_) {
                        return VideoRealPlayPage();
                      },
                    ),
                  );
                },
                child: Text('实时预览'),
              ),
            ),
            Container(
              width: double.infinity,
              child: ElevatedButton(
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (_) {
                        return VideoPlayBackPage();
                      },
                    ),
                  );
                },
                child: Text('视频回放'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter插件iscflutterplugin的使用_isc_flutter_plugin 是一个基于海康isc平台原生SDK进行二次封装的播放器插件,支持Android和iOS平台的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件iscflutterplugin的使用_isc_flutter_plugin 是一个基于海康isc平台原生SDK进行二次封装的播放器插件,支持Android和iOS平台的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,作为IT专家,了解和分析Flutter插件的潜在用途通常涉及到对插件源码、文档及其提供的功能接口的深入理解。由于我们不能直接访问一个假想的插件(如iscflutterplugin),以下是一个假设性的分析框架和示例代码,旨在展示如何探索和使用一个未知功能的Flutter插件。

分析框架

  1. 插件安装与导入

    • pubspec.yaml中添加依赖。
    • 在Dart文件中导入插件。
  2. 查看插件文档与示例

    • 查阅插件的官方文档或README文件,了解其功能和使用方法。
  3. 探索插件接口

    • 查看插件提供的类、方法和属性,理解其用途。
  4. 编写测试代码

    • 根据插件的功能接口,编写测试代码,验证其功能。

示例代码框架

假设iscflutterplugin提供了某些基础功能,如数据处理或UI组件,以下是一个探索性的示例代码框架:

1. 安装插件

pubspec.yaml中添加依赖(注意:以下依赖是假设的):

dependencies:
  flutter:
    sdk: flutter
  iscflutterplugin: ^0.1.0  # 假设的版本号

然后运行flutter pub get来安装插件。

2. 导入插件

在Dart文件中导入插件:

import 'package:iscflutterplugin/iscflutterplugin.dart';

3. 探索插件接口(假设)

假设iscflutterplugin提供了一个SomeDataProcessor类,用于处理数据,以及一个CustomWidget用于UI展示:

// 假设的SomeDataProcessor类
class SomeDataProcessor {
  // 假设的方法,用于处理数据
  String processData(String input) {
    // 假设的处理逻辑
    return input.toUpperCase();
  }
}

// 假设的CustomWidget类,用于UI展示
class CustomWidget extends StatelessWidget {
  final String data;

  CustomWidget({required this.data});

  @override
  Widget build(BuildContext context) {
    return Text(data);
  }
}

4. 编写测试代码

在Flutter应用中使用这些假设的类和方法:

import 'package:flutter/material.dart';
import 'package:iscflutterplugin/iscflutterplugin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('iscflutterplugin Demo'),
        ),
        body: Center(
          child: BuilderDemo(),
        ),
      ),
    );
  }
}

class BuilderDemo extends StatefulWidget {
  @override
  _BuilderDemoState createState() => _BuilderDemoState();
}

class _BuilderDemoState extends State<BuilderDemo> {
  late String processedData;

  @override
  void initState() {
    super.initState();
    // 使用SomeDataProcessor处理数据
    final processor = SomeDataProcessor();
    processedData = processor.processData('hello world');
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 使用CustomWidget展示处理后的数据
        CustomWidget(data: processedData),
      ],
    );
  }
}

总结

上述代码框架提供了一个探索性使用未知Flutter插件的方法。在实际操作中,你需要根据插件的真实功能和提供的API进行调整。重要的是查阅插件的官方文档、示例代码和源代码(如果开源),以深入理解其工作原理和使用方法。

回到顶部