У меня есть куча видеофайлов со звуком DTS, которые мне нужно преобразовать в AC3. Я нашел команды, которые могут выполнять разные части задачи, но я не уверен, как собрать все это вместе, чтобы сделать скрипт, который работает. Я нашел следующий сценарий, который преобразует аудио из всех моих файлов в AC3, однако я бы предпочел, чтобы он конвертировал только аудиофайлы DTS в AC3. Сценарий выглядит следующим образом.
shopt -s globstar
for f in **/*.mkv;
do
fname="${f##*/}"
ffmpeg -i "$f" -c:v copy -c:s copy -c:a ac3 "/some/directory/$fname" &&
mv "/some/directory/$fname" "$f"
done
Я также нашел эту команду, которая возвращает, какой тип звукового кода c использует файл mkv.
`ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mkv`
Итак, я ' Мне интересно, как я могу объединить их, чтобы создать сценарий, который будет делать то, что я хочу. Я предполагаю, что могу добавить функцию if, используя ffprobe в начале скрипта? Примерно так ...
shopt -s globstar
for f in **/*.mkv;
do
fname="${f##*/}"
if ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of
default=nokey=1:noprint_wrappers=1 "$f" | egrep "DTS"; then
ffmpeg -i "$f" -c:v copy -c:s copy -c:a ac3 "/some/directory/$fname" &&
mv "/some/directory/$fname" "$f"
fi
done
А с этим проблемы? Я не писал сценариев с тех пор, как учился в старшей школе, играя со своим графическим калькулятором, потому что мне было скучно, поэтому любая помощь будет очень благодарна.