播放器:七牛播放器小记

  • 1. 版本迭代
  • 2. 播放器特点
  • 3. 集成注意点

目前开源播放器很多,项目中采用了七牛播放器,再次小结一下

1. 版本迭代

最近几个版本更新,更多记录点我查看:

GitHub:播放器地址
文档地址:官方SDK文档

2. 播放器特点

2.1 播放控件有2种方法可选

  • PLVideoView,基于 SurfaceView

  • PLVideoTextureView,基于TextureView

2.2 播放器参数

  • 软硬解自动切换

  • 变速播放

/*** 设置倍数播放* @param speed 倍数值,16 进制表示,高 4 位代表分子,低 4 位代表分母* 例如:0X00010002 表示 0.5 倍数,0X00040001 表示 4 倍数* 范围:0.1~32 倍数*/
public boolean setPlaySpeed(int speed);/*** 设置倍数播放* @param speed 倍数值,0.1 - 32*/
public boolean setPlaySpeed(float speed);
  • 视频截图(captureImage视频截图,截图数据将会在 PLOnImageCapturedListener 中回调)
/*** Capture video image* @param delayTimeMs 截取调用此方法后相应毫秒后的视频画面,仅对点播流生效*/
public void captureImage(long delayTimeMs);
  • 播放地址,可以是 /path/to/local.mp4 本地文件绝对路径,或 HLS URL,或 RTMP URL,所以是支持直播的
  • 通过 setVideoArea 方法,播放视频的一部分区域。若所有参数均为 0,则不裁剪画面
/*** Set video area* @param topLeftX top left x* @param topLeftY top left y* @param bottomRightX bottom right x* @param bottomRightY bottom right y*/public void setVideoArea(int topLeftX, int topLeftY, int bottomRightX, int bottomRightY);

3. 集成注意点

  1. 由于 Android 7.0 使用 BoringSSL 替换了 OpenSSL,一些依赖系统内建 OpenSSL 的程序在一些 7.0+ 的 ROM 里可能会崩溃。如果您的应用 targetSdkVersion >= 24,那么强烈推荐将 libopenssl.so 加入至 jniLibs 目录

  2. 集成播放器可设置预加载动画

View loadingView = findViewById(R.id.LoadingView);
mVideoView.setBufferingIndicator(loadingView);
  1. 画面预览模式
// 原始尺寸、适应屏幕、全屏铺满、16:9、4:3
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_ORIGIN);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_FIT_PARENT);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_PAVED_PARENT);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_16_9);
mVideoView.setDisplayAspectRatio(PLVideoView.ASPECT_RATIO_4_3);
  1. 一个常见的场景是多个播放器实例并排播放,PLVideoTextureView 对此场景进行了专门优化,可以通过设置 PLVideoTexureView.setSplitMode() 进行处理
/*** Set split mode* @param mode the mode* @param preferredSplitWidth preferred width, in px* @param preferredSplitHeight preferred height, in px               */
public void setSplitMode(int mode, int preferredSplitWidth, int preferredSplitHeight)/*** Disable split mode*/
public void disableSplitMode() 
  1. 当播放完成,系统退出时,不要忘记调用 release 函数释放资源
mMediaPlayer.release();
  1. 功能设置相关几个参数
AVOptions options = new AVOptions();public final static int MEDIA_CODEC_SW_DECODE = 0;
public final static int MEDIA_CODEC_HW_DECODE = 1;
public final static int MEDIA_CODEC_AUTO = 2;// DNS 服务器设置
// 若不设置此项,则默认使用 DNSPod 的 httpdns 服务
// 若设置为 127.0.0.1,则会使用系统的 DNS 服务器
// 若设置为其他 DNS 服务器地址,则会使用设置的服务器
options.setString(AVOptions.KEY_DNS_SERVER, server);// DNS 缓存设置
// 若不设置此项,则每次播放未缓存的域名时都会进行 DNS 解析,并将结果缓存
// 参数为 String[],包含了要缓存 DNS 结果的域名列表
// SDK 在初始化时会解析列表中的域名,并将结果缓存
options.setStringArray(AVOptions.KEY_DOMAIN_LIST, domainList);// 解码方式:
// codec=AVOptions.MEDIA_CODEC_HW_DECODE,硬解
// codec=AVOptions.MEDIA_CODEC_SW_DECODE, 软解
// codec=AVOptions.MEDIA_CODEC_AUTO, 硬解优先,失败后自动切换到软解
// 默认值是:MEDIA_CODEC_SW_DECODE
options.setInteger(AVOptions.KEY_MEDIACODEC, codec);// 若设置为 1,则底层会进行一些针对直播流的优化
options.setInteger(AVOptions.KEY_LIVE_STREAMING, 1);// 快开模式,启用后会加快该播放器实例再次打开相同协议的视频流的速度
options.setInteger(AVOptions.KEY_FAST_OPEN, 1);// 打开重试次数,设置后若打开流地址失败,则会进行重试
options.setInteger(AVOptions.KEY_OPEN_RETRY_TIMES, 5);// 预设置 SDK 的 log 等级, 0-4 分别为 v/d/i/w/e
options.setInteger(AVOptions.KEY_LOG_LEVEL, 2);// 打开视频时单次 http 请求的超时时间,一次打开过程最多尝试五次
// 单位为 ms
options.setInteger(AVOptions.KEY_PREPARE_TIMEOUT, 10 * 1000);// 默认的缓存大小,单位是 ms
// 默认值是:500
options.setInteger(AVOptions.KEY_CACHE_BUFFER_DURATION, 500);// 最大的缓存大小,单位是 ms
// 默认值是:2000,若设置值小于 KEY_CACHE_BUFFER_DURATION 则不会生效
options.setInteger(AVOptions.KEY_MAX_CACHE_BUFFER_DURATION, 4000);// 是否开启直播优化,1 为开启,0 为关闭。若开启,视频暂停后再次开始播放时会触发追帧机制
// 默认为 0
options.setInteger(AVOptions.KEY_LIVE_STREAMING);// 设置拖动模式,1 位精准模式,即会拖动到时间戳的那一秒;0 为普通模式,会拖动到时间戳最近的关键帧。默认为 0
options.setInteger(AVOptions.KEY_SEEK_MODE, 1);// 设置 HLS DRM 密钥
byte[] key = {0x##, 0x##, 0x##, 0x##, 0x##, ……};
options.setByteArray(AVOptions.KEY_DRM_KEY, key);// 设置 MP4 DRM 密钥
String key = "AbcDefgh";
options.setString(AVOptions.KEY_COMP_DRM_KEY, key);// 设置偏好的视频格式,设置后会加快对应格式视频流的打开速度,但播放其他格式会出错
// m3u8 = 1, mp4 = 2, flv = 3
options.setInteger(AVOptions.KEY_PREFER_FORMAT, 1);// 开启解码后的视频数据回调
// 默认值为 0,设置为 1 则开启
options.setInteger(AVOptions.KEY_VIDEO_DATA_CALLBACK, 1);// 开启解码后的音频数据回调
// 默认值为 0,设置为 1 则开启
options.setInteger(AVOptions.KEY_VIDEO_DATA_CALLBACK, 1);// 设置开始播放位置
// 默认不开启,单位为 ms
options.setInteger(AVOptions.KEY_START_POSITION, 10 * 1000);// 请在开始播放之前配置
mVideoView.setAVOptions(options);
  1. 错误码的我觉得还是有必要贴张图
  2. 播放首开时间过长,注意一下DNS 解析优化
  3. 版本迭代更新细节,可参考更新文档滑到页面底部查看

播放器:七牛播放器小记相关推荐

  1. php 选股器,超牛选股器帮你选出潜力股,走过路过不要错过,绝对纯干货分享...

    东方财经网 一股票之计在选股作为一个老股民,要说起如何选取股票,我的首要选择就是用选股器,方便快捷,且准确率高.今天给大家分享出我常用的选股器,大家直接看结果就行. 1.均线出牛股选股器 均线一直是大 ...

  2. 七牛直播播放端flutter插件

    // Android端参数, 详细使用请见七牛播放SDK(https://developer.qiniu.com/pili/1210/the-android-client-sdk) data clas ...

  3. 手把手教你做音乐播放器(七)播放音乐(上)

    第7节 播放音乐 音乐播放列表也准备好了,我们来播放音乐吧.完成后效果如下, 实现音乐的播放,我们需要播放界面和音乐服务两个方面的合作. 7.1 MusicService 前面我们已经为播放音乐的功能 ...

  4. video.min.js php,在WordPress中使用videojs来播放七牛私有空间视频

    首先,在主题函数文件functions.php中添加一个获取七牛下载凭证的函数.这部分参考 function qiniu_download_url($url){ $url = trim($url, ' ...

  5. 【毕业设计】28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文)

    typora-root-url: ./ [毕业设计]28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文) 文章目录 typora-root-url: ./ ...

  6. Linux项目设计:斗罗大陆宣传系统、基于Linux系统的媒体播放器、可播放音视频图片(基于gec6818项目设计)

    哔哩哔哩项目视频链接:https://www.bilibili.com/video/BV1Hp4y1v7Pt 代码资料链接:https://download.csdn.net/download/mbs ...

  7. 播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...

    最近用使开辟的过程中涌现了一个小题问,顺便录记一下因原和法方--播放视频 44_在线视频播放器 ------------------------- 1.注意这里,在模拟器中,android2.2和an ...

  8. 视频云:点播播放器和直播播放器冲突如何解决?

    1.问题 开发者有点播和直播都需要用,既有播放网络视频的需求也有直播播放视频流的需求,这个时候如果用户先集成了点播播放器再去集成直播播放器的时候会出现冲突报错. 2.解决方案 开发者仅仅使用直播播放器 ...

  9. 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现

    1 编写以下案例: 当点击了"播放"之后,在手机上的/mnt/sdcard2/natural.mp3就会播放. 2 编写布局文件activity_main.xml <Line ...

  10. Android-Frame布局,UI布局切换,录音,照相机,影音播放器,音频播放器

    <FrameLayout anroid:layout_weight="1"> <ImageView android:scaleType="fitCent ...

最新文章

  1. R语言基于可视化进行多变量离群(Mulltivariate outliers)点检测识别:散点图可视化多变量离群点、模型平滑多变量异常检测、使用平行坐标图查看钻石数据集中的异常值
  2. 看一下操作闪电网络最大的节点是什么感觉
  3. DevExpress v18.1新版亮点——WinForms篇(七)
  4. (转载)浏览器兼容性问题大汇总
  5. mysql zip 安装
  6. 冲刺第三天 11.27 TUE
  7. windows2008配置来
  8. js用函数实现输出100以内与7有关的数_走近(javascript, 函数式)
  9. DCMTK3.6.0(MD支持库)安装说明
  10. SpringCloud工作笔记73---Http协议操作工具集合
  11. mysql s授权所有用户_查看MYSQL数据库中所有用户及拥有权限
  12. Eclipse中直接执行sql语句(图文说明)
  13. 怎么判断有用户在远程连接目标电脑_你的电脑是肉鸡吗?
  14. java塔防兽人种族_兽人TD1.09下载
  15. 联想台式计算机 不启动u盘,联想电脑没有u盘启动项怎么回事_联想电脑bios没有U盘启动项如何处理-系统城...
  16. 实现px和vw的转换
  17. happen-before原则与JMM内存模型
  18. 京东2018秋招编程题
  19. Java实现计数排序
  20. ZBrush: Stylized Sculpting ZBrush教程之程序化的雕刻 Lynda课程中文字幕

热门文章

  1. 格式化json的方法
  2. 服务器保存qq群聊天图片无法显示,电脑中qq群聊天图片无法查看的解决方法
  3. 【安装库】matlab2020b安装及百度网盘提速
  4. ORK进行物体检测过程中出现的报错及解决方案
  5. 勒索病毒家族信息判断
  6. 公司电脑和家里电脑如何实现自动文件同步?
  7. nas 和 远程文件夹同步_群晖NAS同步文件夹功能打开有什么需要注意的?
  8. java生成流程图_java源代码转换为流程图
  9. Python遗传算法解决作业调度问题(JSP)
  10. window eclipse快速导入svn项目以及软件汉化