Flutter媒体播放插件ys_play的使用
ysPlay
Flutter萤石云直播插件,支持Android和iOS。
支持
账号对接(授权登录)
直播(可设置直播分辨率)
回放
直播、回放边播边录
直播、回放边播边截屏
云台控制
配网
对讲(包含半双工对讲和全双工对讲)
准备工作
集成之前,最好阅读官方文档.
安装
在pubspec.yaml文件中添加:
dependencies:
ys_play: ^0.1.0
工程配置
Android端
在 AndroidManifest.xml 文件中添加所需的权限:
在 app/build.gradle 中添加:
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
代码混淆:
#========SDK对外接口=======#
-keep class com.ezviz.opensdk.** { *;}
#========以下是hik二方库=======#
-dontwarn com.ezviz.**
-keep class com.ezviz.** { *;}
-dontwarn com.ez.**
-keep class com.ez.** { *;}
-dontwarn com.hc.CASClient.**
-keep class com.hc.CASClient.** { *;}
-dontwarn com.videogo.**
-keep class com.videogo.** { *;}
-dontwarn com.hik.TTSClient.**
-keep class com.hik.TTSClient.** { *;}
-dontwarn com.hik.stunclient.**
-keep class com.hik.stunclient.** { *;}
-dontwarn com.hik.streamclient.**
-keep class com.hik.streamclient.** { *;}
-dontwarn com.hikvision.sadp.**
-keep class com.hikvision.sadp.** { *;}
-dontwarn com.hikvision.netsdk.**
-keep class com.hikvision.netsdk.** { *;}
-dontwarn com.neutral.netsdk.**
-keep class com.neutral.netsdk.** { *;}
-dontwarn com.hikvision.audio.**
-keep class com.hikvision.audio.** { *;}
-dontwarn com.mediaplayer.audio.**
-keep class com.mediaplayer.audio.** { *;}
-dontwarn com.hikvision.wifi.**
-keep class com.hikvision.wifi.** { *;}
-dontwarn com.hikvision.keyprotect.**
-keep class com.hikvision.keyprotect.** { *;}
-dontwarn com.hikvision.audio.**
-keep class com.hikvision.audio.** { *;}
-dontwarn org.MediaPlayer.PlayM4.**
-keep class org.MediaPlayer.PlayM4.** { *;}
#========以上是hik二方库=======#
#========以下是第三方开源库=======#
# JNA
-dontwarn com.sun.jna.**
-keep class com.sun.jna.** { *;}
# Gson
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.idea.fifaalarmclock.entity.***
-keep class com.google.gson.stream.** { *; }
# OkHttp
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform
# 必须额外加的,否则编译无法通过
-dontwarn okio.**
#========以上是第三方开源库=======#
iOS端
在 Info.plist 文件中添加:
相册权限:
麦克风权限:
摄像头权限:
配网权限:
在 Xcode 中配置:
在 Xcode -> Runner -> Target -> Target-Signing & Capabilities 中,添加以下 2 项能力:
Access WiFi Information (获取手机连接的 WiFi 名称,配网需要)
Hotspot Configuration (连接指定 WiFi,配网需要)
注意:上述 2 项能力,同时需要在 App Store 官网证书上添加相关能力。
使用方式
具体请见 example 中的功能,里面有详细注释。
示例代码
import 'package:flutter/material.dart';
import 'package:oktoast/oktoast.dart';
import 'package:ys_play_example/home_page.dart';
// 配置参数
String appKey = '9ddc4fb7c0ef4996b04dd90156368f7c';
String accessToken = 'ra.bz92ts718snpgyaq0uo3phj9dwgwhlnq-490o8c9kzb-1wc7qfj-qxgzouvg1';
String deviceSerial = 'C63167422';
String verifyCode = 'PDSWCZ';
int cameraNo = 1;
void main() {
// 初始化Flutter框架
WidgetsFlutterBinding.ensureInitialized();
// 启动应用
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State
}
class _MyAppState extends State
[@override](/user/override)
Widget build(BuildContext context) {
// 使用OKToast包裹整个应用,以提供Toast提示
return OKToast(
child: MaterialApp(
// 设置首页为HomePage
home: HomePage(),
),
);
}
}