首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
FFmpeg Principle
Loken1
创建于2022-05-25
订阅专栏
FFmpeg 全套学习资料
等 22 人订阅
共116篇文章
创建于2022-05-25
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
FFplay视频同步分析
以音频时钟为主时钟,是最常用的同步方式,也是FFplay里面默认的同步方式。当以音频时钟为主时钟,视频 就会向音频同步。 视频播放线程,会缩短或者拉长当前视频帧的播放时长,或者丢弃视频帧来向音频同步
音视频同步基础知识
之前的文章,已经把音频,视频的 解码线程,播放线程通通讲了一遍,现在到了播放器实现最复杂的功能之一,就是音视频同步。 FFplay 支持 3 种同步方式
video_refresh视频播放线程分析
视频播放线程就是 main 主线程,对于 FFplay 播放器,就是在 主线程 里面播放视频流的。event_loop 会不断用 refresh_loop_wait_event 函数检测是否有键盘事件
video_thread视频解码线程分析
之前在 stream_component_open() 里面的 decode_start() 函数开启了 video_thread 线程,如下:
sdl_audio_callback音频播放线程分析
音频播放线程是之前在 audio_open() 函数里面创建的,实际上就是回调函数 ( wanted_spec.callback)。当用 SDL 打开音频硬件设备的时候,SDL 库就会创建一个线程,来
FFplay序列号分析
在之前的几篇文章里面,都零零散散提及过序列号这个概念。但是 序列号 这个概念对于 FFplay 播放器 非常重要的,很多代码都跟序列号有关。所以单独写一篇文章介绍序列号。 序列号 主要是给 快进快退
FrameQueue队列分析
FFplay 播放器有两种队列,PacketQueue 跟 FrameQueue。FrameQueue 的数据就是从 PacketQueue 里面解码出来的(会经过滤镜)。
decoder_decode_frame解码函数分析
decoder_decode_frame() 其实是一个通用的解码函数,可以解码 音频,视频,字幕的 AVPacket。不过本文主要侧重于分析音频流的解码,但其他的流也是类似的逻辑。
audio_thread音频解码线程分析
之前在 stream_component_open() 里面的 decode_start() 函数开启了 audio_thread 线程
audio_open函数分析
audio_open() 的作用,就如同它的名字那样,就是打开音频设备。流程图如下: SDL 库播放音
FFplay音频滤镜分析
音频流的 滤镜是通过 configure_audio_filters() 函数来创建的,因为 ffplay 为了代码的通用性,即便命令行参数不使用滤镜,AVFrame 也会过一遍 空滤镜做下样子。
stream_component_open函数分析
stream_component_open() 函数主要作用是打开 音频流或者视频流 对应的解码器,开启解码线程去解码。
read_thread解复用线程分析
read_thread() 线程的主要作用从 MP4 里面读取 AVPacket,然后丢进去 PacketQueue 队列。所以需要先学习一下 strcut PacketQueue 跟 struct
stream_open函数分析
在讲 stream_open() 函数之前,需要先了解 stream_open() 里面使用到的一些基本的数据结构。如下: 第一个数据结构是 struct VideoState ,VideoStat
main入口函数分析
在开始讲解之前,分享一些阅读 项目代码的经验。无论学习哪方面的知识,都是需要正反馈才能继续学下去。在学习开源项目的时候,如果不掌握一些比较好的方法,会比较难拿到正反馈,或者要坚持学习很久才能拿到正反馈
FFplay播放器分析
FFplay 是 FFmpeg 官方提供的一个播放器的实现,全部的逻辑代码都在 ffplay.c 里面,只有不到 4 千行代码,麻雀虽小,五脏俱全。 FFplay 播放器支持大部分常见的播放器功能,例
FFmpeg编译参数分析
FFmpeg 的编译参数是通过 configure 脚本来提供的,configure 可以接受各种编译参数,生成 config.mak 来传递给 makefile ,还会生成 config.h。
FFmpeg二次开发
本文主要讲解 FFmpeg 的二次开发,ffmpeg.exe 的命令行功能特别强大,很多需求都能直接用命令行实现,但是总有一些需求用 命令行实现不太好做。 而你实现那些特殊需求,通常需要把 ffmp
makefile逻辑分析
在开始分析之前,讲一个 makefile 的调试技巧,推荐阅读《如何调试MAKEFILE变量》 make -f Makefile -f vars.mk HOSTPROGS 这里我对 vars.mk
makefile语法摘要
阅读本文需要有 makefile 基础,推荐先看一般 《跟我一起写 makefile》。 本文主要讲解 FFmpeg 的 Makefile 文件用到的 语法跟一些函数,可以当手册查询,在 makef
下一页