FFmpeg中的libx264编码流程 [转]

FFmpeg中的libx264编码流程 [转]

【参考原文链接】:https://www.jianshu.com/p/cff67a47b504

  • 编码流程主要有三个步骤:
    • 编码器初始化:打开编码器并设置各种编码参数。
    • 编码:输入待编码的图像数据和一些参数,获取编码后的数据。
    • 关闭编码器:释放各种资源。

FFmpeg中的libx264编码流程

  • FFmpeg的libx264编码器AVCodec ff_libx264_encoder定义在libavcodec/libx264.c
    • 是H.264编码库libx264的一个wrapper,libavcodec和libx264中间的一个代理,必要时对libx264和FFmpeg定义的一些数据结构进行转换。
  • ① 编码器初始化

  • 虚线的箭头表示在某些特定情况下会调用。
  • 以x264开头的结构体和函数为libx264中定义的。
x264_param_default():        设置默认参数。
x264_param_default_preset(): 设置默认的preset,在preset或tune不为空时设置。
x264_param_apply_profile():  设置profile,在profile不为空时设置。
  • 设置的各种参数有两个来源:AVCodecContext 和 X264Context.
    • X264Context保存在AVCodecContext.priv_data中。
    • AVCodecContext包含了一些编码器的通用选项
    • X264Context包含了一些libx264的特有选项
x264_encoder_open():   打开编码器,返回一个编码器句柄x264_t *。
x264_encoder_headers():需要全局头的时候,输出头信息。

②编码

  • x264_encoder_encode为执行编码的函数,输入的待编码的数据为x264_picture_t中,输出的编码数据为x264_nal_t数组。
  • 在输入端 ff_libx264_encoder AVFrame中的待编码的数据的buffer地址赋给了 x264_picture_t 中的对应变量,数据buffer是原来AVFrame中分配的,没有数据拷贝的过程。
  • 在输出端ff_libx264_encoder把已编码的数据从x264_nal_t数组拷贝到AVPacket中。
  • x264_encoder_delayed_frames:返回当前延迟的(缓冲的)帧的数量。
    • x264_encoder_encode的调用会循环进行直到x264_encoder_delayed_frames返回的值为0,图中没有表示出来。

③关闭编码器

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在FFmpeg安装libx264,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了x264库。你可以从x264的官方网站下载源代码,并按照它们的指南进行安装。 2. 安装完x264库后,你需要在FFmpeg的configure命令添加--enable-libx264选项。这样,FFmpeg在编译时会包含libx264库的支持。 3. 在configure命令,你还可以指定libx264库的安装路径,例如--prefix=/path/to/libx264。这样,编译后的FFmpeg将会使用指定路径下的libx264库。 4. 接下来,使用make命令编译FFmpeg。你可以使用-j参数指定并行编译的线程数,例如make -j12。 5. 最后,使用make install命令安装编译后的FFmpeg。这将把FFmpeg可执行文件和相关的库文件安装到系统。 综上所述,安装libx264库的步骤如下所示: 1. 安装x264库。 2. 在FFmpeg的configure命令添加--enable-libx264选项,并可选地指定libx264库的安装路径。 3. 使用make命令编译FFmpeg。 4. 使用make install命令安装编译后的FFmpeg。 请注意,以上步骤的路径和参数根据你的实际情况可能会有所不同,你需要根据自己的环境进行相应的调整。 #### 引用[.reference_title] - *1* *2* *3* [FFmpeg引入x264扩展](https://blog.csdn.net/u012117034/article/details/125619731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值