VideoDecoder的初始化与Open函数实现
VideoDecoder初始化与Open函数实现
注意事项
- FFmpeg版本兼容
1 | av_register_all(); // 在新版本中其实可省略 |
2. 初始化函数调用
- init函数在构造函数中始终未被调用
CMake配置问题
CMake设置的路径必须在add_executable()或qt_add_executable()之前配置
视频时长计算
1 | m_totalTime = m_formatContext->duration / (AV_TIME_BASE / 1000); |
- 计算视频总时长(毫秒)
- AV_TIME_BASE是基础时间单位
- 1000用于转换为毫秒单位
有理数转换
1 | qreal rationalToDouble(AVRational* rational); |
- 将AVRational结构体转换为double类型
- AVRational包含分子和分母
- 函数执行简单的除法运算
解码器识别
视频流中包含解码器ID信息:
1 | videoStream->codecpar->codec_id // 例如:AV_CODEC_ID_H264 |
- 通过ID可以找到对应的解码器(如h264)
性能优化设置
1 | // 允许不符合规范的加速技巧 |
注意:线程数设置需要根据具体机器情况调整,8线程并不一定是最优选择,某些情况下单线程可能更快。
评论