Как я могу передать имя файла в команду ffmpeg? - PullRequest
0 голосов
/ 20 октября 2019

Я хотел бы запустить эту команду в терминале: ffmpeg -i <input-file> -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 <output-file.mp3> для каждого mp3 файла в папке.

Вход и выход могут быть одинаковыми (перезапись), но если этоневозможно, если есть способ взять имя файла и добавить _converted может быть?

Я не эксперт по bash, но я знаю, что мне нужно передать результаты команды ls вВозможно, команда ffmpeg использует переменную?

Ответы [ 2 ]

2 голосов
/ 20 октября 2019

Не могли бы вы попробовать следующее, так как у меня нет команды ffpmeg, поэтому я не смог ее протестировать. Это должно сохранить выходные данные в том же самом файле Input_file, лучше протестировать его в тестовой папке, и когда результаты будут удовлетворены, они могут работать в реальной папке.

for file in *.mp3
do
   ffmpeg -i "$file" -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 "temp" && mv "temp" "$file"
done

ИЛИ согласно OP вы хотите получить строку вывода _convertedв имя выходного файла, затем попробуйте следующее.

for file in *.mp3
do
   output_file="${file}_converted"
   ffmpeg -i "$file" -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 "$output_file"
done

ИЛИ согласно @Gordon Davisson, сэр использует следующий комментарий.

for file in *.mp3
do
   output_file="${file%.mp3}_converted.mp3"
   ffmpeg -i "$file" -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 "$output_file"
done
1 голос
/ 20 октября 2019

С xargs:

printf "%s\0" * | xargs -0 -I {} ffmpeg -i {} -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 converted_{}

См .: man xargs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...