如何在 Ubuntu 14.04 上安装或编译带有 libfdk_aac 的 avconv ?我也可以接受类似的 aac 编解码器,例如http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC
目前我正在尝试这个但是使用 avconv:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
我让你知道它是如何运作的。
答案1
以下是我的做法。但我必须警告你,这需要一点勇气,因为你必须自己构建 libav(这将为你提供 avconv 可执行文件和其他工具)。但不要害怕,我已经做过很多次了,我会向你展示如何构建和安装所有内容而不会弄乱你的系统。如果你不再需要自定义 libav 构建,你所要做的就是删除一个目录。
先决条件
首先我删除默认安装的 avconv:
apt-get remove --purge libav-tools
然后确保您拥有构建软件所需的工具:
apt-get install build-essential
为了获得最快的 avconv,您需要一个汇编编译器。这很简单:
apt-get install yasm
现在进入要构建的废料目录,我会这样做:
mkdir ~/src
cd ~/src
现在克隆 libav git repo(您需要安装 git):
git clone git://git.libav.org/libav.git
这将为您提供最新和最好的 libav 源代码,我发现前沿代码足够稳定,可以满足我的需求,并且在构建过程中没有遇到任何与代码相关的错误。
让 repo 克隆,然后通过包管理器安装 libfdk-aac:
apt-get install libfdk-aac-dev
为了简单起见,我们只需安装 libx264 库供 avconv 使用:
apt-get install libx264-dev
为稍后将构建的二进制文件和其他文件创建一个主目录(这也将使卸载变得容易):
mkdir ~/apps
安装后,avconv 可执行文件将位于 ~/apps/bin/。要从命令行运行 avconv,只需将 ~/apps/bin 添加到 $PATH
安装
现在,您需要配置 libav 源以使用新安装的 fdk-aac 库。只需在命令行中输入以下内容:
./configure \
--prefix=~/apps \
--enable-nonfree \
--enable-gpl \
--disable-shared \
--enable-static \
--enable-libx264 \
--enable-libfdk-aac
此命令将为您提供所有 libav 默认编码和解码库以及 libx264 和 libfdk_aac。注意:如果您想要更多编码功能,请尝试 ./configure --help 来查看您可以启用的所有外部库。
现在剩下要做的就是建造它!在一台不错的机器上,这只需要几分钟。
make && make install
如果您将 ~/apps/bin 添加到 $PATH,您现在应该能够运行“avconv”。
要更新您的自定义 libav 构建,只需运行:
git pull origin
在 ~/src/libav/ 中拉取最新代码。然后使用上面的命令重新配置,make 和 make install。
如果您想要摆脱自定义构建并重新安装 ubuntu 的默认 libav-tools 包,请运行:
rm -rf ~/apps/
apt-get install libav-tools
并从 $PATH 中删除 ~/apps/bin
抱歉,如果你想完成的任务看起来令人望而生畏,但使用定制的、最前沿的 avconv 版本让我感到自豪 :) 我认为额外的工作是有回报的。希望这能有所帮助 :)
确认
使用以下命令验证其是否安装正确:
avconv -codecs | grep aac
你想看:
AAC (Advanced Audio Coding) (decoders: aac libfdk_aac ) (encoders: aac libfdk_aac )
用法
avconv -f alsa -i default -c:a libfdk_aac -b:a 256k filename.aac
请注意,臭名昭著的实验标志现在不再是必要的,也不推荐了。
你想看:
Metadata:
encoder : Lavc58.12.1 libfdk_aac
答案2
或者如果你想使用较差的 aac:
sudo apt-get install libav-tools
然后不要使用 Fraunhofer,而是使用以下开关:
-acodec aac -strict experimental or -acodec libvo_aacenc
音频质量可能有所不同。