标题:Qt音视频开发21-mpv内核万能属性机制
作者:liudianwu
日期:2023-03-08 13:58
内容:
## 一、前言
搞过vlc内核后又顺带搞了搞mpv内核,mpv相比vlc,在文件数量、sdk开发便捷性方面绝对占优势的,单文件(可能是静态编译),不像vlc带了一堆插件,通过各种属性来set和get值,后面发现easyplayer内核也是参考这种机制来提供函数接口,这种只需要会通用的一个函数的用法就行,不需要每个功能都有不同的set和get函数,不用去查找对应的函数,只需要传属性字典表中的字符串和对应的值即可。
用mpv来读取文件的信息,以及设置当前播放进度,音量、静音等,和当时vlc封装的功能一样,只不过vlc是通过调用函数接口去处理,而mpv是通过读取和设置属性来处理,vlc支持定时器或者线程中函数方法去读取状态,也支持事件回调去拿到对应的状态改变,mpv当然也支持,而且还更方便,主要的工作量或者花费的时间在如何知道有哪些属性、分别是什么功能含义,这个在官方都列出来了 [http://mpv.io/manual/master/#options](http://mpv.io/manual/master/#options)、[http://mpv.io/manual/master/#list-of-input-commands](http://mpv.io/manual/master/#list-of-input-commands)、[http://mpv.io/manual/master/#properties](http://mpv.io/manual/master/#properties),不过都是英文就是,大部分程序员应该是没有什么难度的,大不了鼠标右键翻译成中文即可,哈哈,相信不少人都这么干过,很多浏览器默认就支持鼠标右键菜单翻译的,实在是很方便的,本人在查阅很多英文文档的时候,用的也是蛮多的,包括Qt官方的文档和BUG报告页面,但是建议在搜索问题的时候还是建议尽量用英文的描述去搜索,这样才能搜索的更精确。
常用的一些属性:
- 原始宽高 width height
- 缩放宽高 dwidth dheight
- 保存文件 stream-record 为空则表示停止录像
- 宽高占比 video-aspect
- 暂停播放 pause yes表示暂停no表示继续
- 文件时长 duration
- 静音状态 mute yes表示静音/no表示非静音
- 音量大小 volume int值0-100
- 获取进度 time-pos
- 设置进度 seek
- 抓图截图 screenshot-to-file
## 二、效果图
## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article ..