
FFmpeg原理
文章平均质量分 82
Loken2020
音视频工程师,《FFmpeg原理》作者
展开
-
init_output_stream初始化输出流
init_output_stream初始化输出流原创 2023-08-05 11:52:46 · 479 阅读 · 0 评论 -
do_video_out视频编码封装
如果不关注那 3 块复杂逻辑,do_video_out() 是比较简单的,就是从 buffer sink 读取 `AVFrame`,然后进行编码,转换时间基,写入文件就完事。原创 2023-08-04 19:06:04 · 1763 阅读 · 0 评论 -
reap_filters收割滤镜
reap_filters() 会收割(reap)所有输出滤镜(buffer sink),从 buffer sink 读取到 AVFrame 之后,就会发送给编码器进行编码,如果编码器有 AVPacket 出来,就会进行 muxer 操作,进行封装,写入文件保存。原创 2023-07-26 16:03:23 · 8075 阅读 · 0 评论 -
configure_filtergraph配置滤镜容器
当所有的 InputFilter 都初始化完成,InputFilter 里面的 format 不等于 -1 就是初始化完成,就会调 configure_filtergraph() 函数来配置与打开滤镜容器。configure_filtergraph() 会把所有的 InputFilter 与 OutputFilter 链接在一起。原创 2023-07-14 13:15:44 · 6301 阅读 · 1 评论 -
send_frame_to_filters滤镜处理
send_frame_to_filters()函数主要的职责是调 av_buffersrc_add_frame_flags() 把 AVFrame 往 滤镜里发送,但是如果滤镜没打开就会用 configure_filtergraph 打开滤镜原创 2023-07-14 13:13:43 · 164 阅读 · 0 评论 -
decode_video解码视频帧
decode_video() 不仅仅会对传递进来的 AVPacket 进行解码,如果解码出来数据,就会调 send_frame_to_filters() 发送给滤镜进行处理。原创 2023-07-14 13:10:49 · 2005 阅读 · 0 评论 -
process_input_packet解码封装
process_input_packet() 是对解码函数 decode_video() ,decode_audio() 的封装。主要功能是 解码第二个参数 const AVPacket *pkt,如果有解码数据出来,就发送给输入流关联的所有入口滤镜。原创 2023-07-10 18:26:07 · 206 阅读 · 0 评论 -
process_input处理输入文件
process_input() 主要是从输入文件读取一个 AVPacket,然后丢给 process_input_packet() 函数处理这个 AVPacket原创 2023-07-10 18:25:16 · 588 阅读 · 0 评论 -
transcode_step转码总函数
transcode_step() 函数是 ffmpeg.exe 转换编码格式,或者转换封装格式的总函数。transcode_step() 内部每次都会读取一个AVPacket,发送给解码器进行解码,解码器可能会输出 0个 ~ N个 AVFrame,然后把 AVFrame 发送给滤镜容器,如果滤镜容器有数据能出来,就会接着发送给编码器进行编码,如果编码器有 AVPacket 数据可以出来,就把 AVPacket 写入文件保存。原创 2023-07-10 18:24:31 · 2819 阅读 · 0 评论 -
FFmpeg与FFplay解析命令行的区别
transcode_init() 函数是 ffmpeg.exe 转换编码格式,或者转换封装格式之前的操作,主要是一些初始化的操作。原创 2023-06-30 13:15:18 · 221 阅读 · 0 评论 -
init_simple_filtergraph初始化简单滤镜
init_simple_filtergraph初始化简单滤镜原创 2023-06-30 13:13:37 · 5182 阅读 · 0 评论 -
new_video_stream添加视频输出流
new_video_stream添加视频输出流原创 2023-06-21 00:13:03 · 1463 阅读 · 0 评论 -
《FFmpeg原理》的创作之路
《FFmpeg原理》的创作之路—写作不是思考的记录,写作就是思考本身原创 2023-06-20 23:48:28 · 5277 阅读 · 9 评论 -
OutputFile数据结构分析
struct OutputFile 是单个输出文件的管理器原创 2023-05-27 17:22:26 · 596 阅读 · 0 评论 -
add_input_stream添加输入流
add_input_stream() 函数是一个添加输入流的函数,它会把文件里面的输入流全部添加进去 input_streams 数组。而 input_streams 数组是一个全局变量,包含了所有输入文件里面的所有输入流。nputStream **input_streams = NULL;int nb_input_streams = 0;你在二次开发 ffmpeg.exe 的时候,可以用 input_streams 全局变量来获取到所有的输入流。在学习 add_input_str原创 2023-05-27 17:21:42 · 5555 阅读 · 0 评论 -
InputStream数据结构分析
struct InputStream 是单个输入流的管理器。是由 add_input_stream() 函数申请内存,以及赋值 InputStream 的各个字段的。而 input_streams 数组是一个全局变量,包含了所有输入文件里面的所有输入流。原创 2023-05-27 17:21:05 · 188 阅读 · 0 评论