FFplay源码分析-退出处理

本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8

FFplay 源码分析系列以一条简单的命令开始,ffplay -i a.mp4。a.mp4下载链接:百度网盘,提取码:nl0s 。


FFplay 退出处理分析,按键盘 Q 可以退出关闭播放器。

按下键盘 Q 的时候,会产生一个 SDK_q 事件,此事件在event_loop处理,执行 do_exit() 操作,如下图:

FFplay源码分析-退出处理_第1张图片

do_exit() 的流程图如下:

FFplay源码分析-退出处理_第2张图片

ffplay 有两个 abort_request ,struct VideoState 里面一个,struct PacketQueue 里面一个。

1,VideoState 的 abort_request 是用来控制read_thread 线程退出的,stream_close() 会把VideoState 的 abort_request 置为 1,然后等待 read_thread 线程退出。

2,PacketQueue 的 abort_request 是用来 控制 audio_thread 或者 video_thread 解码线程退出的,stream_component_close() 里 会把PacketQueue 的 abort_request 置为 1,然后等待 解码线程退出。


ffplay 源码分析,退出处理逻辑分析完毕。

©版权所属:知识星球:弦外之音,QQ:2338195090。

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,或者希望交流音视频技术的,可以加我微信 Loken1。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

你可能感兴趣的:(FFplay源码分析,音视频)