使用 ffmpeg 将电影文件转码为 h264/aac 用于视频,使用 neroacenc 将音频转码为

使用 ffmpeg 将电影文件转码为 h264/aac 用于视频,使用 neroacenc 将音频转码为

我在 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),它可能对管道有更好的支持。而且它是一种原生解决方案。

脚注:您可能还会发现有用的在 ffmpeg 上使用 x264 进行编码的指南,以及NeroAacEnc 指南。

相关内容