音视频入门系列-FFmpeg篇(ffplay源码分析)

前面的文章介绍了FFmpeg的解码、编码、转码流程以及相关的函数调用,并以FFmpeg解码流程为主线,深入分析其中层层调用的FFmpeg代码,想必大家对FFmpeg的编解码有了一个全面的了解。学到这里,你可能想那是不是就可以做一个播放器了?

做一个真正的播放器,还有很多问题需要处理:音视频同步,多线程解复用、解码,线程安全等问题需要处理。那带着这些问题,本篇文章将分析下ffplay(FFmpeg提供的一个简单的播放器)的源码。

ffplay解码并播放音视频的源码分析如图所示(分为两条主线,一条为解复用、解码,另一条为事件循环(包含音视频播放)):

图片

1.解复用、解码
◆ stream_open:起始入口
◆ audio_thread:音频处理线程
◆ 音频数据流转:audioq(编码数据)->sampq(解码数据)
◆ video_thread:视频处理线程
◆ 视频数据流转:videoq(编码数据)->pictq(解码数据)
◆ subtitle_thread:字幕解码线程
◆ 字幕数据流转:subtitleq(编码数据)->subpq(解码数据)

2.事件循环(包含音视频播放)
◆ event_loop:起始入口
◆ refresh_loop_wait_event:显示音视频(包括音视频同步)
◆ 事件循环函数调用SDL_PeepEvents函数,查看事件队列中是否有事件存在
◆ 如果有事件(如键盘、鼠标等事件),优先处理事件
◆ 如果事件队列中没有事件,则播放音视频

音视频入门系列文章已同步在微信公众号(可扫下方二维码关注):八小时码字员

音视频入门系列,同步录制了学习视频,已上传至bilibili(八小时码字员):音视频入门系列(图像、音频、字幕、视频封装格式,FFmpeg、ffplay源码分析,解码、编码、转码,流媒体协议,服务器部署)_哔哩哔哩_bilibili

音视频学习交流QQ群:693316541

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值