Flutter媒体播放插件ys_play的使用
兑换中心 5526 2025-12-24 12:21:24

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 文件中添加:

相册权限:

NSPhotoLibraryAddUsageDescription

$(PRODUCT_NAME)需要使用手机相册

NSPhotoLibraryUsageDescription

$(PRODUCT_NAME)需要使用手机相册

麦克风权限:

NSMicrophoneUsageDescription

$(PRODUCT_NAME)需要使用手机麦克风

摄像头权限:

NSCameraUsageDescription

$(PRODUCT_NAME)需要使用手机照相机

配网权限:

NSLocalNetworkUsageDescription

$(PRODUCT_NAME)需要使用本地网络权限用于wifi配网

NSLocationAlwaysAndWhenInUseUsageDescription

$(PRODUCT_NAME)需要使用定位权限用于wifi配网

NSLocationAlwaysUsageDescription

$(PRODUCT_NAME)需要使用定位权限用于wifi配网

NSLocationWhenInUseUsageDescription

$(PRODUCT_NAME)需要使用定位权限用于wifi配网

在 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 createState() => _MyAppState();

}

class _MyAppState extends State {

[@override](/user/override)

Widget build(BuildContext context) {

// 使用OKToast包裹整个应用,以提供Toast提示

return OKToast(

child: MaterialApp(

// 设置首页为HomePage

home: HomePage(),

),

);

}

}

Copyright © 2022 GXLC网游资讯网-新版本速递_限时活动_礼包兑换 All Rights Reserved.