FFMEPG函数avformat_find_stream_info作用
来源:互联网 发布:淘宝买家退款流程 编辑:程序博客网 时间:2024/06/03 21:14
现象:
FFMPEG打开媒体文件并查看媒体文件相关信息流程如下:
- avformat_open_input;
- avformat_find_stream_info;
- av_dump_format;
针对同一个媒体文件,不调用与调用avformat_find_stream_info函数获取的媒体文件相关信息如下:
- 未调用avformat_find_stream_info信息:
- 调用avformat_find_stream_info信息:
从上述对比中可看出视频流和音频流所获取的信息的不同,调用了avformat_find_stream_info获取到的音视频流信息更完整,其中音频部分未调用avformat_find_stream_info时获取到的音频采样率是24000Hz,调用avformat_find_stream_info之后显示的音频采样率为48000Hz,为什么同一个文件会显示不同呢?
现象分析:
我们通过MediaInfo分析此媒体文件的音频信息得到的结果如下:
可以发现音频流格式是AAC,但是格式概况显示HE-AAC/LC两种,采样率显示48.0kHz/24.0kHz,其实也就是HE-AAC对应48.0kHz采样率,而LC对应24.0kHz的采样率,出现这样的现象表示如果解码器支持HE-AAC格式解码,则选择48.0kHz采样率,如果只支持LC格式则只能选择24.0kHz采样率来解码,至于HE-AAC和LC这些音频相关的知识,这里就不做详细介绍,后续有专门文章来详细说明。
如果我们不调用avformat_find_stream_info则获取到的采样率是24.0kHz,但是采样大小和声道个数获取到的是对应48.0kHz的,这个时候去播放音频,则声音是不正常的。
为什么调用了avformat_find_stream_info之后,就能获取正确的采样率呢,因为avformat_find_stream_info内部会根据不同的流去打开对应的解码器并实际进行解码来获取到每条媒体流真正的参数信息,也就是说调用avformat_find_stream_info之后,FFMEPG发现可支持音频流的HE-AAC格式,于是就把音频的采样率设置为48.0kHz。
总结:
调用avformat_open_input之后,我们无法获取到正确的媒体参数,所以还得要调用avformat_find_stream_info进一步的去获取。
- FFMEPG函数avformat_find_stream_info作用
- avformat_find_stream_info函数卡住问题
- avformat_find_stream_info
- FFmpeg函数简单分析:avformat_find_stream_info()
- ffmpeg学习七:avformat_find_stream_info函数源码分析
- 图解FFMPEG打开媒体的函数avformat_open_input&avformat_find_stream_info
- ffmepg的extradata指针和has_codec_parameters函数
- avformat_find_stream_info 崩溃
- avformat_find_stream_info分析
- ffmepg 中RTP封包的函数调用过程
- avformat_find_stream_info接口延迟降低
- FFMPEG avformat_find_stream_info替换
- FFMEPG安装
- FFMEPG安装
- FFmepg - 编译
- ffmepg tutorial1
- ffmepg指令
- ffmepg学习
- sign check fail: check Sign and Data Fail!-错误处理
- 从数组中找出乘积最大的三个数
- Spring @Value注解的用法
- 用php解决http无状态的本质 -- 会话的意义
- java重载、重写和this、super
- FFMEPG函数avformat_find_stream_info作用
- [POJ](2506)Tiling ---递推+Java大数
- 瀑布开发模式和敏捷开发模式的区别和思考
- MySQL 存储引擎归纳总结
- 欢迎使用CSDN-markdown编辑器
- JSONPath-简单入门
- Hhbase性能优化配置
- 产品需求分析万能公式
- Hadoop核心模块之Yarn