iscflutterplugin 1.0.7 copy "iscflutterplugin: ^1.0.7" to clipboard
iscflutterplugin: ^1.0.7 copied to clipboard

outdated

A Flutter plugin to play hikvision isc platform. It used hikvision native library, *.so for java and *.a for ios.

example/lib/main.dart

import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:iscflutterplugin/isc_http.dart';
import 'package:iscflutterplugin/isc_player.dart';
import 'package:iscflutterplugin/iscflutterplugin.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';



void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Iscflutterplugin _controller;
  String _previewUrl;
  var cameraCode;

  _MyAppState() {
    //初始化配置
    ArtemisConfig.host = "xxx";
    ArtemisConfig.appKey = "xxx";
    ArtemisConfig.appSecret = "xxx";
    cameraCode = 'xxx';

  }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('海康isc播放器插件,支持android/ios'),
        ),
        body: Column(
          children: <Widget>[
            Container(
              width: 500,
              height: 300,
              color: Colors.black,
              child: IscPlayerWidget(
                onCreated: _onCreated,
              ),
            ),
            Expanded(
              child: SingleChildScrollView(
                child: Container(
                  width: double.infinity,
                  child: Column(
                    children: <Widget>[
                      RaisedButton(child: Text("预览"), onPressed: _preview),
                      RaisedButton(
                          child: Text("码流平滑切换(仅支持Android)"),
                          onPressed: _changeStream),
                      RaisedButton(
                          child: Text("抓拍(需存储权限)"), onPressed: _capture),
                      RaisedButton(
                          child: Text(
                              _isRecording ? "结束录像(需存储权限)" : "开始录像(需存储权限)"),
                          onPressed: _record),
                      RaisedButton(child: Text("云台"), onPressed: _ptzs),
                    ],
                  ),
                ),
              ),
            )
          ],
        ),
      ),
    );
  }

  void _onCreated(controller) {
    _controller = controller;
  }

  void _changeStream() async {
    var ret = await _controller.changeStream(_previewUrl);
    print('码流切换 : $ret');
  }

  ///云台控制
  void _ptzs() async {
    //开始云台控制
    var ret = await IscApi.ptzControl(cameraCode, 0, 'ZOOM_OUT');
    print('开始云台控制 : $ret');
    sleep(Duration(milliseconds: 100));
    //停止云台控制
    var ret1 = await IscApi.ptzControl(cameraCode, 1, 'ZOOM_OUT');
    print('停止云台控制 : $ret1');
  }

  var _isRecording = false;

  ///录像
  void _record() async {
    String path;

    if (defaultTargetPlatform == TargetPlatform.android) {
      //申请权限
      _requestPermission();
      // //图片保存路径
      path =
          '${(await getExternalStorageDirectory()).path}/${DateTime.now().toString()}.mp4';
    }
    print('path = $path');

    if (_isRecording) {
      var ret = await _controller.stopRecord();
      if (ret['ret']) {
        _isRecording = false;
      }
      print('结束录像 : $ret');
    } else {
      var ret = await _controller.startRecord(path);
      if (ret['ret']) {
        _isRecording = true;
      }
      print('开始录像 : $ret');
    }
    setState(() {});
  }

  ///抓拍
  void _capture() async {
    String path;
    //抓拍
    if (defaultTargetPlatform == TargetPlatform.android) {
      //申请权限
      _requestPermission();
      //图片保存路径
      path =
          '${(await getExternalStorageDirectory()).path}/${DateTime.now().toString()}.jpg';
    }
    var ret = await _controller.capturePicture(path);
    print('path = $path');
    print('抓拍 : $ret');
  }

  ///预览
  void _preview() async {
    //获取预览地址
    Map ret = await IscApi.getPreviewURL(cameraIndexCode: cameraCode,version: 1);
    _previewUrl = ret['data']['url'];
    print('预览地址 = $_previewUrl');
    //设置播放器状态回调
    _controller.setStatusCallback((status) {
      print('播放器状态 = ${_controller.getStatusMessage(status)}');
    });
    //开始预览
    _controller.startRealPlay(_previewUrl);
  }

  ///申请权限
  void _requestPermission() async {
    if (await Permission.storage.request().isGranted) {
      print('已授权');
    }
  }
}
8
likes
0
points
73
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to play hikvision isc platform. It used hikvision native library, *.so for java and *.a for ios.

Homepage

License

unknown (license)

Dependencies

crypto, dio, flutter, path_provider, permission_handler

More

Packages that depend on iscflutterplugin

Packages that implement iscflutterplugin