FFmpeg入门详解之61:编解码层:理论与实战

本文详细介绍了FFmpeg的解码和转码流程,包括解码流程中的av_register_all(), av_open_input_file()等步骤,以及转码的核心功能解码和编码。同时,深入解析了编解码API,如avcodec_send_packet()和avcodec_receive_frame()的使用,并提供了编码和解码实战案例,帮助读者理解FFmpeg在音视频处理中的应用。" 108226376,5841718,RainBaseAdapter:轻量级RecyclerView万能适配器,"['Android开发', 'UI组件', '适配器库']
摘要由CSDN通过智能技术生成

FFmpeg解码流程

得到输入文件 -> 解封格式 -> 得到编码的数据包 -> 

解码数据包 -> 得到解码后的数据帧 ->

处理数据帧 -> 编码 -> 得到编码后的数据包 -> 

封装格式 -> 输出文件

(1)注册所有容器格式和CODEC:av_register_all()

(2)打开文件:av_open_input_file()

(3)从文件中提取流信息:av_find_stream_info()

(4)穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO

(5)查找对应的解码器:avcodec_find_decoder()

(6)打开编解码器:avcodec_open()

(7)为解码帧分配内存:avcodec_alloc_frame()

(8)不停地从码流中提取出帧数据:av_read_frame()

(9)判断帧的类型,对于视频帧调用:avcodec_decode_video()

(10)解码完后,释放解码器:avcodec_close()

(11)关闭输入文件:av_close_input_file()

FFmpeg转码流程

大流程可以划分为输入、输出、转码、播放四大块。

其中转码涉及比较多的处理环节,从图中可以看出,转码功能在整个功能图中占比很大。转码的核心功能在解码和编码两个部分,但在一个可用的示例程序中,编码解码与输入输出是难以分割的。

解复用器为解码器提供输入,解码器会输出原始帧,对原始帧可进行各种复杂的滤镜处理,滤镜处理后的帧经编码器生成编码帧,多路流的编码帧经复用器输出到输出文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福优学苑@音视频+流媒体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值