ffplay源码分析
ffplay源码分析
SXM19940913sxm
这个作者很懒,什么都没留下…
展开
-
ffplay---命令(选项)及使用
ffplay命令格式:ffplay [选项] [‘输入文件’]选项:'-x width' 强制以 "width" 宽度显示'-y height' 强制以 "height" 高度显示'-an' 禁止音频'-vn' 禁止视频'-ss pos' 跳转到指定的位置(秒)'-t duration' 播放 "duration" 秒音/视频'-bytes' 按字节跳转'-nodisp原创 2020-08-03 16:37:36 · 993 阅读 · 0 评论 -
ffplay---源码解析---even_loop
/* handle an event sent by the GUI */static void event_loop(VideoState *cur_stream){ SDL_Event event; double incr, pos, frac; for (;;) { double x; refresh_loop_wait_event(cur_stream, &event); switch (event.type) {原创 2020-07-25 17:18:47 · 234 阅读 · 0 评论 -
ffmplay---seek实现播放进度控制
FFmpeg音视频播放器系列(第三篇:seek实现播放进度控制)如何实现播放进度控制想实现播放进度控制,就意味着需要随机的访问流媒体文件,那么就需要使用av_seek_frame或者avformat_seek_file函数。seek操作要点seek操作基准:即seek操作当前时间点,因此在进行播放时需要实时记录音视频流的DTS或者PTSseek时间单位:进行seek操作时,根据流索引,确定其时间单位time_base,seek时间大小:即向前或者向后seek的时间大小,根据此时间大小和当前时间点原创 2020-07-25 14:41:19 · 1193 阅读 · 1 评论 -
ffplay源码分析-播放控制 https://www.cnblogs.com/leisure_chn/p/10316225.html
ffplay源码分析-播放控制原创 2020-04-03 14:50:22 · 695 阅读 · 0 评论 -
ffplay---源码解析(零):ffmpeg-4.2.1代码架构简述
ffplay是用ffmpeg代码实现的一个播放器,可以播放本地文件,也可以播放网络资源,与vlc播放器功能类似。把ffmpeg环境配好后...原创 2020-03-15 18:08:02 · 844 阅读 · 0 评论 -
ffplay---源码分析(十一):同步到外部时钟
前面我们分析了音视频同步中的两种策略:视频同步到音频,以及音频同步到视频。接下来要分析的是第三种,音频和视频都同步到外部时钟。&nbs...转载 2020-03-14 11:39:34 · 246 阅读 · 0 评论 -
ffplay---源码分析(七):ffplay subtitle显示线程分析
ffplay里subtitle的显示比较简单,它是将subtitle当作video的附属进行显示,所以subtitle实际上没有独立的显示线程,它是和video的显示线程(主线程)共用一个线程...转载 2020-03-14 00:38:50 · 241 阅读 · 0 评论 -
ffplay---源码分析(十):音频同步视频
在“视频同步音频”的策略中,我们是通过丢帧或重复显示的方法来达到追赶或等待音频时钟的目的,但在“音频同步视频”时,却不能这样简单处理。&...转载 2020-03-14 00:36:56 · 168 阅读 · 0 评论 -
ffplay---源码分析(九):视频同步音频(ffplay默认同步方式)
ffplay默认也是采用的这种同步策略。 主流程ffplay中将视频同步到音频的主要方案是,如果视频播放过快,则重复播放上一帧,以等待音频;如果视频播放过慢,则丢帧追赶音频。...原创 2020-03-14 00:35:37 · 259 阅读 · 0 评论 -
ffplay---源码分析(八):音视频同步---原理
由于音频和视频的输出不在同一个线程,而且,也不一定会同时解出同一个pts的音频帧和视频帧。更有甚者,编码或封装的时候可能pts还是不连续的...原创 2020-03-14 00:34:24 · 341 阅读 · 0 评论 -
ffplay---源码分析(六):音频输出(忽略了filter相关代码)
ffplay的audio输出同样也是通过SDL实现的。同样地,本文主要介绍audio输出相关内容,且尽量不涉及音视频同步知识,音视频同步将在专门一篇分析。audio的输出在SDL下是被动输...原创 2020-03-14 00:32:18 · 446 阅读 · 0 评论 -
ffplay---源码分析(五):视频显示(输出)线程
ffplay显示部分代码包括了video、audio、subtitle的显示(输出)。我们知道要显示画面或者输出声音,在windows、linux、macos等不同平台上的接口都不尽相同,对于这个问题,ffplay选择了sdl作为显示SDK,以实现跨平台支持。在阅读本文前,需要读者具备初步的sdl知识,可以参考这篇文章及其系列:SDL入门_慕课手记,写的很好。在分析显示流程的过程中,为了方便...原创 2020-03-13 23:29:56 · 384 阅读 · 0 评论 -
ffplay---源码分析(四):解码线程分析 PacketQueueFrameQueue
ffplay的解码线程独立于读线程,并且每种类型的流(AVStream)都有其各自的解码线程PacketQueue用于存放从read_thread取到的各自播放时间内的AVPacket。FrameQueue用于存放各自解码后的AVFrame。Clock用于同步音视频。解码线程负责将PacketQueue数据解码为AVFrame,并存入FrameQueue。对于不同流,其解码过程大同...原创 2020-03-13 21:46:14 · 391 阅读 · 0 评论 -
ffplay---源码分析(三):read_thread https://zhuanlan.zhihu.com/p/43672062
read_thread流程:1、准备阶段:打开文件,检测Stream信息,打开解码器2、主循环读数据,解封装:读取Packet,存入PacketQueue准备阶段准备阶段,主要包括以下步骤:avformat_open_inputavformat_find_stream_infoav_find_best_streamstream_component_openavformat_op...原创 2020-03-13 21:11:26 · 750 阅读 · 0 评论 -
ffplay---源码分析(二):自定义队列---FrameQueue
不同于PacketQueue的设计,FrameQueue不是用链表实现队列,而是用数组实现队列(环形缓冲区)。从字段的定义上可以看出,FrameQueue的设计显然比PacketQueue要复杂。在深入代码分析之前,先给出其设计理念:1、高效率的读写模型(回顾PacketQueue的设计,每次访问都需要加锁整个队列,锁范围很大)2、高效的内存模型(节点内存以数组形式预分配,无需动态分配)...原创 2020-03-13 18:33:36 · 742 阅读 · 0 评论 -
ffmplay---源码分析(一):自定义队列---PacketQueue
PacketQueuetypedef struct PacketQueue { MyAVPacketList *first_pkt, *last_pkt; //队首,队尾 int nb_packets; //队列中一共有多少个节点 int size; //队列所有节点字节总数,用于计算cache大小 int64_t duration; //队...原创 2020-06-02 22:09:30 · 1069 阅读 · 0 评论