ffmpeg安装第三方编码器

当使用ffmpeg转换视频到h264或mp3等编码时,若出现'unknown encoder'错误,需安装额外编码器。本文介绍了在Linux下安装h264(x264)和mp3(mp3lame)编码器的步骤,包括下载源码、配置、编译和安装。通过./configure、make和sudo make install进行安装,并注意将库文件放置于正确路径。

安装好了ffmpeg后,如果你使用ffmpeg工具去把某个视频文件转成h264视频编码、mp3音频编码or其他ffmpeg自身不带的xxx编码类型,就会看到报错信息,unknown encoder 'xxx'。此刻你需要的只要去安装其他的编码器就行了,本质上其实是把其他的编码器以库的形式安装好,例如,把正确的libx264.so or libx264.a存放在/usr/lib下 or /usr/local/lib下

举两个例子吧,视频方面的编码器就拿h264来说,音频方面的例子就拿mp3(mp3lame)来说。

    Linux下安装一个正规的软件,一般都是三部曲,①、【./configure】(加一些可能的参数,比如enable一些功能,disable一些功能,究竟有哪些功能可以开启和关闭呢?一般通过./configure --help命令来查询),②、【make】(编译),③、【sudo make install】(把生成的二进制应用程序文件和.so和.a复制到/usr/local/下)


一.h264

     动手搜一下ffmpeg的工程代码库,会发现每个codec都有一下几个成员变量,但是有好几个codec缺少encoder,h264就是其中一个了。先不管什么原因,ffmpeg没有原生的支持h264,但是你可以查看一下avcodec_register_all这个API,会发现一大片的REGISTER_ENCODER(XXX, xxx)

REGISTER_DECODER(XXX, xxx)

这里分很多块,例如/* video codecs */,/* audio codecs */,/* external libraries */

但是你在/* video codecs */这一块却看不到h264的REGISTER_ENDECODER (H264, h264);这句话,如果你坚持往下翻,你会在/* external libraries */这块里面发现REGISTER_ENCODER (LIBX264, libx264);所以ffmpeg是有给h264准备好了接口的,但是需要第三方库来支持。

回到重点,怎么装呢?

    1.先下载x264的工程代码,【git clone git://git.videolan.org/x264.git】。

    2.进入x264目录,然后./configure --help看看它的帮助信息,我们这里需要的是x264以.so or .a的形式来支援ffmpeg,所以一般就关注shared和static关键词就可以了。执行./configure --enable-shared --enable-static就行了。

    3.完了make && sudo make install就可以了。

    你会发现我们在./configure的时候没有指定前缀--prefix=/usr,很明显,libx264.so和libx264.a就会复制到/usr/local/lib下去,记住这里,等下会因为这里要做一些修改。


二.mp3lame

    上面说了h264,相信mp3lame理解起来就简单多了。

    1.先下载mp3lame的工程代码,http://sourceforge.net/projects/lame/files/lame/,为什么这里要显得多余的讲一下mp3lame呢,是这样的。大家可以看到x264用的是git,mp3lame是用的sourceforge,不妨再多说一个faac(也是一种原生ffmpeg不支持的音频codec),faac用的是http://sourceforge.net/projects/faac/files/faac-src/,所以每一种codec或者很重要的软件都有一个团队或者社区在维护,所以需要什么东西,尽量去sourceforge或者git上找,其他地方找的可能不够新,可能不完整不正确。

    2.然后也是./configure --help先,看看哪些功能是我们需要打开关闭的

    3.完了make && sudo make install就可以了。

    很明显,我们又没有指定--prefix-/usr,所以mp3lame的libmp3lame.so和libmp3lame.a就被赋值到了/usr/local/lib下了。


三.重新编译ffmpeg

http://blog.youkuaiyun.com/u012814360/article/details/39345431


### 安装 FFmpeg 及其编码器 #### 使用包管理器安装 FFmpeg 对于基于 Debian 的 Linux 发行版,如 Ubuntu,可以通过 `apt-get` 来轻松安装 FFmpeg 和它的依赖项。执行以下命令可以完成这一过程: ```bash sudo apt-get update && sudo apt-get install ffmpeg ``` 这条命令不仅会更新软件源列表以获取最新的可用版本信息,还会下载并安装 FFmpeg 软件包以及任何必要的依赖库[^1]。 为了验证安装是否成功,可以在终端输入 `ffmpeg -version` 并查看是否有返回 FFmpeg 版本号的信息。如果有显示具体的版本号码,则说明 FFmpeg 已经正确安装;如果没有输出或提示找不到命令,则可能意味着安装过程中出现了某些问题[^2]。 #### 编译安装 FFmpeg (含特定编码器) 有时默认通过包管理器提供的 FFmpeg 可能不包含所有期望的功能或是最新特性。此时可以选择自行编译 FFmpeg,并加入所需的外部编码器支持,比如 libfdk_aac 或者其他专有的音频/视频编码工具。以下是简化后的步骤概述: - 获取 FFmpeg 源代码; - 下载额外的第三方库(例如 fdk-aac, x264/x265 等); - 配置构建选项来启用这些附加功能; - 进行实际编译工作; - 将新编译好的二进制文件复制到适当位置以便全局访问。 请注意,这种方法通常适用于高级用户或者是有特殊需求的情况,在大多数情况下推荐使用官方预编译版本即可满足日常开发测试的需求。 #### 提取 MP4 文件中的音频并转换成 AAC 格式 假设有一个名为 `a.mp4` 的视频文件想要从中抽取音频流并转码为 AAC 格式的音频文件,那么可以利用下面给出的 FFmpeg 命令实现此目的: ```bash ffmpeg -i a.mp4 -vn -c:a aac -ar 44100 -ac 2 -profile:a aac_low output.aac ``` 这里 `-vn` 参数用于忽略视频轨道而只保留音频部分,`-c:a aac` 设置目标音频编解码器为 AAC,同时指定了采样率 (`-ar`)、声道数目 (`-ac`) 和编码质量等级 (`-profile:a`)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值