我在 Mac OS 10.8.1 上,ffmpeg-devel
安装为 macport。我可以通过 Wine 运行(win32)。我可以使用一个简单的命令NeroAacEnc
将电影转码为 h264/aac :ffmpeg
ffmpeg -i INPUT.MP4 -vcodec libx264 -acodec libfaac OUTPUT.MP4
问题是,我更喜欢 AAC 编码器的声音NeroAACEnc
。使用 Nero 将波形音频文件转码为 AAC 也很简单:
wine start neroAacEnc.exe -if INPUT.wav -of OUTPUT.mp4
我怎样才能在一个命令中同时使用ffmpeg
视频编码和NeroAACEnc
音频编码?管道?脚本?自动程序?这些我都不擅长。
我需要帮助,因为我迷路了。提前致谢。
答案1
在 Linux 上,我可以使用管道通过 neroAacEnc 创建 M4A,如下所示
ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of output.m4a
您必须wine neroAacEnc.exe
在那里使用,而且我不知道在 wine 下运行的 Windows 版本是否可以使用管道。理论上,以下命令应该能够完成所有操作(假设您有一个最新的 ffmpeg):
ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of - | ffmpeg -i - -i input.mp4 -map 1:v -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
但不幸的是,neroAacEnc 似乎能够将管道作为输入,或将输出到管道,但不能同时进行,因此上述操作不起作用,您需要使用两个命令来执行此操作:
ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of temp-audio.m4a
ffmpeg -i input.mp4 -i temp-audio.m4a -map 0:v -map 1:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
我可以将其放入一个基本的 bash 脚本中(据我所知,该脚本应该可以在 OSX 上运行)
#!/bin/bash
ffmpeg -i "$1" -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of "temp.${1%.*}.m4a"
ffmpeg -i "$1" -i "temp.${1%.*}.m4a" -map 0:v -map 1:a -c:a copy -c:v libx264 -crf 22 -preset veryfast "output.${1%.*}.m4v"
rm "temp.${1%.*}.m4a
exit 0
将其作为 convert-to-M4V 保存在 $PATH 中的某个位置并将其标记为可执行文件,然后按如下方式使用它:
convert-to-M4V input.mov
执行目录中的每个 mov 操作:
for f in *.mov; do convert-to-M4V "$f"; done
注意:我没有使用 OSX,也从未真正使用过 OSX 上的命令行,因此其中一些可能不起作用/可能需要调整。roAA 编辑:由于您使用的是 OSX,因此您应该能够使用 quicktime AAC 编码器 qaac(在某些测试中优于 neroAacEnc),它可能对管道有更好的支持。而且它是一种原生解决方案。