// 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