如何使用ffmpeg为Mac进行视频硬解码/硬编码(在Qt环境)
- 科普
- 前期准备
- 安装ffmpeg
- 将ffmpeg的库文件添加到Qt项目的.pro文件中
- 在源文件用引入头文件
- 第一步:先查看本机支持哪种硬件加速
- 第二步:查看这个硬件加速方案支持哪种编码器&解码器
- 第三步:在Qt源码中指定使用哪个编码器或解码器
- 核心代码
- MacBook自带摄像头参数设置
- 总结
ffmpeg正确读法: f - f - m - peg
而不是每个字母分开读
基本市面上的播放器底层都是ffmpeg,例如最近挂掉的暴风影音,就知道这东西有多牛逼了。
安装ffmpeg
直接使用homebrew安装就可以了,会自动把所有拓展都装齐
将ffmpeg的库文件添加到Qt项目的.pro文件中
在源文件用引入头文件
指令:ffmpeg -hwaccels
这里我们可以了解到设备硬件加速只支持videotoolbox,videotoolbox是苹果官方出品的硬件加速工具,mac和ios都是用这个。
指令:ffmpeg -codecs | grep videotoolbox
以上输出说明videotoolbox只支持H.264和H.265的硬编码(不支持解码),h264与hevc这两个都是编码器,要留意。
核心代码
MacBook带有自家的rawvideo解码器,生成的数据可直接输送视频流。
MacBook自带摄像头参数设置
以上任一参数超出范围程序就会crash掉。
第一第二步流程适用于各种平台,来查看手上设备能够支持的硬件加速方案与编码解码器,而第三步代码也支持所有C++开发环境使用,后续遇到问题再进一步补充。