国都建设集团网站,深圳燃气公司服务电话,昆山网络公司哪家比较好,广西金利建设有限公司网站本文为相关课程的学习记录#xff0c;相关分析均来源于课程的讲解#xff0c;主要学习音视频相关的操作#xff0c;对字幕的处理不做分析
ffplay播放器的意义
ffplay.c是FFmpeg源码⾃带的播放器#xff0c;调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。 ffplay实现了播…本文为相关课程的学习记录相关分析均来源于课程的讲解主要学习音视频相关的操作对字幕的处理不做分析
ffplay播放器的意义
ffplay.c是FFmpeg源码⾃带的播放器调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。 ffplay实现了播放器的主体功能掌握其原理对于我们独⽴开发播放器⾮常有帮助。
ffplay大致框架 播放初始化
初始化packet queue初始化frame queue初始化外部时钟clock创建数据读取线程read frame
线程的划分
数据读取线程 打开媒体⽂件开对应码流的decoder以及初始化对应的audio、video、subtitle输出队列创建decoder线程audio、video和subtitle的解码线程独⽴调⽤av_read_frame读取packet并根据steam_index放⼊不同stream对应的packet队列 ⾳频解码 从packet queue读取packet解出frame后放⼊frame queue 视频解码 从packet queue读取packet解出frame后放⼊frame queue 字幕解码 从packet queue读取packet解出frame后放⼊frame queue ⾳频播放或者回调函数 从frame queue读取frame进⾏播放 视频播放ffplay⽬前是在main主线程进⾏视频播放 从frame queue读取frame进⾏播放 字幕播放 ffplay⽬前是在main主线程进⾏字幕播放 从frame queue读取frame进⾏播放 控制响应播放/暂停/快进/快退等ffplay⽬前是在main主线程进⾏播放控制 event loop
packet队列的设计
线程安全⽀持互斥、等待、唤醒缓存数据⼤⼩缓存包数队列播放可持续时间进队列/出队列等
frame队列的设计
线程安全⽀持互斥、等待、唤醒缓存帧数⽀持读取数据⽽不出队列进队列/出队列等
⾳视频同步
⾳频同步视频同步外部时钟同步