七牛直播播放端flutter插件

// Android端参数, 详细使用请见七牛播放SDK(https://developer.qiniu.com/pili/1210/the-android-client-sdk)
data class VideoConfig(
    var path: String? = null,
    /**
     * KEY_PREPARE_TIMEOUT = "timeout"
     * 打开视频时单次 http 请求的超时时间,一次打开过程最多尝试五次,单位为 ms
     */
    var timeout: Long? = null,
    /**
     * KEY_MEDIACODEC = "mediacodec"
     * 0: AVOptions.MEDIA_CODEC_SW_DECODE 软解
     * 1: AVOptions.MEDIA_CODEC_HW_DECODE 硬解
     * 2: AVOptions.MEDIA_CODEC_AUTO 硬解优先,失败后自动切换到软解
     */
    var mediacodec: Int? = null,
    /**
     * KEY_LIVE_STREAMING = "live-streaming"
     * 若开启,视频暂停后再次开始播放时会触发追帧机制
     * 0: 关闭
     * 1: 开启,底层会进行一些针对直播流的优化
     * default 0
     */
    var liveStreaming: Int? = null,
    /**
     * KEY_CACHE_BUFFER_DURATION = "cache-buffer-duration"
     * 默认的缓存大小,单位是 ms,默认值是:500
     */
    var cacheBufferDuration: Long? = null,
    /**
     * KEY_CACHE_BUFFER_DURATION_SPEED_ADJUST = "cache-buffer-duration-speed-adjust"
     */
    var cacheBufferDurationSpeedAdjust: Boolean? = null,
    /**
     * KEY_MAX_CACHE_BUFFER_DURATION = "max-cache-buffer-duration"
     * 最大的缓存大小,单位是 ms
     * 默认值是:2000,若设置值小于 KEY_CACHE_BUFFER_DURATION 则不会生效
     */
    var maxCacheBufferDuration: Long? = null,
    /**
     * KEY_HTTP_HEAD_REFER = "http-head-refer"
     */
    var httpHeadRefer: String? = null,
    /**
     * KEY_DRM_KEY = "drm-key"
     * 设置 HLS DRM 密钥
     * byte[] key = {0x##, 0x##, 0x##, 0x##, 0x##, ……};
     */
    var drmKey: List? = null,
    /**
     * KEY_COMP_DRM_KEY = "comp-key"
     * 设置 MP4 DRM 密钥
     */
    var compKey: String? = null,
    /**
     * KEY_CACHE_DIR = "cache-dir"
     * 设置本地缓存目录
     * 目前只支持 mp4 点播
     * 默认值是:无
     */
    var cacheDir: String? = null,
    /**
     * KEY_CACHE_EXT = "cache-ext"
     * 设置本地缓存文件的后缀名
     * 只有在设置了缓存目录后才会生效
     * 一个流地址在设置了自定义后缀名后,再次播放前必须设置相同的后缀名,否则无法打开
     * 默认值是 mp4
     */
    var cacheExt: String? = null,
    /**
     * KEY_CACHE_FILE_NAME_ENCODE = "cache-filename_encode"
     */
    var cacheFilenameEncode: Int? = null,
    /**
     * KEY_VIDEO_DATA_CALLBACK = "video-data-callback"
     * 开启解码后的视频数据回调
     * 0: 关闭
     * 1: 开启
     * default 0
     */
    var videoDataCallback: Int? = null,
    /**
     * KEY_AUDIO_DATA_CALLBACK = "audio-data-callback"
     * 开启解码后的音频数据回调
     * 0: 关闭
     * 1: 开启
     * default 0
     */
    var audioDataCallback: Int? = null,
    /**
     * KEY_VIDEO_DISABLE = "video-disable"
     */
    var videoDisable: Boolean? = null,
    /**
     * KEY_VIDEO_RENDER_EXTERNAL = "video-render-external"
     * 开启自定义视频数据渲染
     * 0: 关闭,由 SDK 内部渲染视频
     * 1: 开启
     * default 0
     */
    var videoRenderExternal: Int? = null,
    /**
     * KEY_AUDIO_RENDER_EXTERNAL = "audio-render-external"
     * 开启自定义音频数据播放
     * 0: 关闭,由 SDK 内部播放音频
     * 1: 开启
     * default 0
     */
    var audioRenderExternal: Int? = null,
    /**
     * KEY_FAST_OPEN = "fast-open"
     * 快开模式,启用后会加快该播放器实例再次打开相同协议的视频流的速度
     */
    var fastOpen: Boolean? = null,
    /**
     * KEY_PREFER_FORMAT = "prefer-format"
     * 设置偏好的视频格式,设置后会加快对应格式视频流的打开速度,但播放其他格式会出错
     * 1: m3u8
     * 2: mp4
     * 3: flv
     */
    var preferFormat: Int? = null,
    /**
     * KEY_DNS_SERVER = "dns-server"
     */
    var dnsServer: String? = null,
    /**
     * KEY_DOMAIN_LIST = "domain-list"
     */
    var domainList: List? = null,
    /**
     * KEY_SEEK_MODE = "accurate-seek"
     * 0: 普通模式,即会拖动到时间戳的那一秒
     * 1: 精准模式,会拖动到时间戳最近的关键帧
     * default 0
     */
    var accurateSeek: Int? = null,
    /**
     * KEY_OPEN_RETRY_TIMES = "open-retry-times"
     * 打开重试次数,设置后若打开流地址失败,则会进行重试
     */
    var openRetryTimes: Int? = null,
    /**
     * KEY_START_POSITION = "start-position"
     * 设置开始播放位置
     * 默认不开启,单位为 ms
     */
    var startPosition: Long? = null,
    /**
     * KEY_MP4_PRELOAD = "mp4-preload"
     */
    var mp4Preload: Boolean? = null,
    /**
     * KEY_SDK_ID = "sdk-id"
     */
    var sdkId: String? = null,
    /**
     * KEY_LOG_LEVEL = "log-level"
     * 2: VERBOSE
     * 3: DEBUG
     * 4: INFO
     * 5: WARN
     * 6: ERROR
     * other: ERROR
     */
    var logLevel: Int? = null,
    /**
     * 0: PLVideoView.ASPECT_RATIO_ORIGIN
     * 1: PLVideoView.ASPECT_RATIO_FIT_PARENT
     * 2: PLVideoView.ASPECT_RATIO_PAVED_PARENT
     * 3: PLVideoView.ASPECT_RATIO_16_9
     * 4: PLVideoView.ASPECT_RATIO_4_3
     */
    var displayAspectRatio: Int? = null,
    /**
     * 0: 0度
     * 1: 90度
     * 2: 180度
     * 3: 270度
     */
    var displayOrientation: Int? = null,
    /**
     * 画面的镜像变换
     */
    var isMirror: Boolean? = false,
    /**
     * 播放视频的一部分区域
     */
    var videoAreaX: Int? = null,
    var videoAreaY: Int? = null,
    var videoAreaWidth: Int? = null,
    var videoAreaHeight: Int? = null,

    var zOrderOnTop: Boolean? = null,
    var zOrderMediaOverlay: Boolean? = null
) {
}
// Swift, iOS端参数, 使用详情请见七牛播放SDK(https://developer.qiniu.com/pili/1211/ios-playback-end-the-sdk)
import Foundation
import PLPlayerKit

public class VideoConfig {

    var path: String? = nil

    /**
     * PLPlayerOptionKeyTimeoutIntervalForMediaPackets
     * 播放器所用 RTMP 连接的超时断开时间长度,单位为秒。小于等于 0 表示无超时限制
     */
    var timeoutIntervalForMediaPackets: Int? = nil
    /**
     * PLPlayerOptionKeyMaxL1BufferDuration
     * 一级缓存大小,单位为 ms,默认为 1000ms,增大该值可以减小播放过程中的卡顿率,但会增大弱网环境的最大累积延迟
     */
    var maxL1BufferDuration: Int? = nil
    /**
     * PLPlayerOptionKeyMaxL2BufferDuration
     * 二级缓存大小,单位为 ms,默认为 1000ms,增大该值可以减小播放过程中的卡顿率,但会增大弱网环境的最大累积延迟
     */
    var maxL2BufferDuration: Int? = nil
    /**
     * PLPlayerOptionKeyVideoToolbox
     * 是否使用 video toolbox 硬解码
     */
    var videoToolbox: Bool? = nil
    /**
     * PLPlayerOptionKeyLogLevel
     * PLLogLevel 配置 log 级别
     */
    var logLevel: Int? = nil
    /**
     * PLPlayerOptionKeyDNSManager
     * DNS 配置,使用内置的 DNS解析
     */
    var dNSManager: String? = nil
    /**
     * PLPlayerOptionKeyVideoCacheFolderPath
     * NSString	点播 mp4 视频缓存目录
     */
    var videoCacheFolderPath: String? = nil
    /**
     * PLPlayerOptionKeyVideoPreferFormat
     * PLPlayFormat	视频预设值播放 URL 格式类型
     */
    var videoPreferFormat: Int? = nil
    /**
     * PLPlayerOptionKeyVideoCacheExtensionName
     * 点播 mp4 视频缓存扩展名
     */
    var videoCacheExtensionName: String? = nil
    /**
     * PLPlayerOptionKeyHeadUserAgent
     * 设置 http 的 header,类似 “key:value” 的形式,
     * 例如:给 http 的 header 添加 referer,则以 “Referer:http://xxx.xxx.com” 格式配置
     */
    var headUserAgent: String? = nil
    /**
     * PLPlayerOptionKeyVideoFileNameEncode
     * 缓存文件名是否加密
     */
    var videoFileNameEncode: Bool? = nil
    /**
     * 设置 player 相关属性支持后台播放
     */
    var isBackgroundPlayEnable: Bool? = nil
    /**
     * 例如: "Referer:http://xxx.xxx.com"
     */
    var referer: String? = nil
    /**
     * 私有DRM
     * 该属性仅对 HLS 点播有效
     */
    var drmKey: String? = nil
    /**
     * 是否渲染画面,默认为 YES
     * 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效
     */
    var enableRender: Bool? = nil
    /**
     * 是否循环播放,默认为 NO
     * 该属性仅对点播有效
     */
    var loopPlay: Bool? = nil
    /**
     * 是否缓存下载
     * 是否允许,默认为 YES,允许缓存下载
     * 当 bufferingEnabled 为 YES 时,文件正常下载。若下载中,修改 bufferingEnabled 为 NO,则下载暂停
     */
    var isBufferingEnabled: Bool? = nil
    /**
     * 是否开启重连,默认为 NO
     * 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效
     */
    var isAutoReconnectEnable: Bool? = nil
}
// VideoPlayerView 使用, 可使用上述Android/iOS端相关参数 
@override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: VideoPlayerView(
            //path: "http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8",
            //path: "rtmp://ns8.indexforce.com/home/mystream",
            path: "rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp",
            onViewCreated: (VideoPlayerViewController controller) {},
          ),
        ),
      ),
    );
  }

源码下载:https://download.csdn.net/download/songtao542/86514121

你可能感兴趣的:(flutter,plugin,Android,flutter,android)