33.FFmpeg学习笔记 - ffplay源码解读1之概述

学习ffplay也有一段时间了,打算写几篇文章记录一下。

ffplay版本:4.1

ffplay源码只有3000多行,但是其中包含了音视频播放,前进/后退,暂停/继续,切换音视频流,逐帧播放等功能,可以说比较全面了。

ffplay总的简略流程图如下所示:

(1)在steam_open()函数中,创建了一个线程read_thread()。在这个线程中,循环调用av_read_frame(),获取packet放入packet队列中。如果队列满了,则线程等待,等待视频或音频解码线程消耗pakcet,发出信号,然后read_thread线程继续读取packet。

ffplay创建了三个packet队列:视频packet队列,音频packet队列、字幕packet队列。pakcet队列,用的是链表构造的。

(2)在stream_component_open函数中创建了一个视频解码线程video_thread,一个音频解码线程audio_thread()。video_thread线程从视频packet队列中循环读取packet,解码后,将得到的frame存入视频frame队列。如果队列满了,则线程等待,等待frame被播放消耗,然后线程继续。音频线程一样。

ffplay中创建了三个frame队列:视频frame队列,音频frame队列,字幕frame队列。frame

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值