当前位置:   article > 正文

FFMPEG开发快速入坑——附录一:音视频同步_ffmepg 编程 视频同步

ffmepg 编程 视频同步

本章节主要以本地音视频播放为例,简要描述讲解一个基本的播放器中,音视频播放如何实现同步的。

一、通用媒体播放框架

通用媒体播放器框架

其中各个组件模块:

1、Media Demux: 进行媒体文件的解析,分别解析出音频流数据包和视频流数据包。主要使用 libavformat库中的函数。

2、Video Decoder:视频解码器,解码后的视频帧放入到帧队列,主要使用libavcodec库中的函数。

3、Audio Decoder:音频解码器,解码后的PCM数据放入缓存队列,主要使用libavcodec库中的函数。

4、Video Post-process:视频帧后处理,通常是进行色彩格式转换、大小缩放、特效等处理,主要使用libswscale库中的函数

5、Audio Post-process:音频帧后处理,通常是重采样、均衡器、变声等处理,主要使用libswresample库中的函数。

6、Video Display:视频帧显示,正常播放时直接显示到界面控件。这个是跟平台相关的处理,通常使用 OpenGL进行视频帧渲染,包括一些特效处理。

7、Audio Render:音频设备输出,通常的音频设置输出每播放完一段会有相应的回调通知。这个是跟平台相关的处理,需要调用系统平台支持的一些API进行音频输出,如果要跨平台处理,可以考虑使用 OpenSL接口(前提是平台支持)

另外:

(1)音视频同步控制(AV Sync Control)通常都是在音视频数据解码后进行同步控制。

(2)很多时候,视频后处理(Video Post Process) 和 视频显示(Video Display) 模块可以集中在一个模块中,直接在GPU中进行处理。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/994967
推荐阅读
相关标签
  

闽ICP备14008679号