Я на Mac OS 10.8.1, с ffmpeg-devel установленным как macport. Я могу запустить NeroAacEnc(win32) через Wine. Я могу перекодировать фильм в h264/aac с помощью простой команды ffmpeg :

ffmpeg -i INPUT.MP4 -vcodec libx264 -acodec libfaac OUTPUT.MP4

Проблема в том, что я предпочитаю звук кодера NeroAACEnc AAC. Транскодирование звукового аудиофайла в AAC с помощью Nero также очень просто:

wine start neroAacEnc.exe -if INPUT.wav -of OUTPUT.mp4

Как я могу использовать ffmpeg для кодирования видео и NeroAACEnc для кодирования звука в одной команде? Трубы? Сценарий? Automator? Я не хорош ни с одним из них.

Помощь нужна, так как я потерялся. Заранее спасибо.

1 ответ1

1

В Linux я могу использовать канал для создания M4A с neroAacEnc, например, так

ffmpeg -i input.mp4 -vn -f wav - | neroAacEnc -if - -ignorelength -q 0.5 -of output.m4a

Вы должны будете использовать wine neroAacEnc.exe там, и я понятия не имею, может ли версия Windows, работающая под Wine, использовать каналы. Теоретически, следующее должно быть в состоянии сделать все это в одной команде (при условии, что у вас есть актуальный 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 (который AFAIK должен работать на 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

Сохраните его где-нибудь в вашем $ PATH как convert-to-M4V и пометьте его как исполняемый, используйте его так:

convert-to-M4V input.mov

Чтобы сделать каждый MOV в каталоге:

for f in *.mov; do convert-to-M4V "$f"; done

ПРИМЕЧАНИЕ: я не на OSX, и я никогда не использовал командную строку на OSX, поэтому некоторые из них могут не работать / могут нуждаться в адаптации. РЕДАКТИРОВАНИЕ roAA: Поскольку вы работаете в OSX, вы должны иметь возможность использовать (в некоторых тестах превосходящий neroAacEnc) быстродействующий кодер AAC qaac, который может лучше поддерживать каналы. И это нативное решение.

СНОСКА: Вы также можете найти полезное это руководство , чтобы кодирующий с x264 на FFmpeg, и это руководством по neroAacEnc.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .