У меня есть около 70 файлов mp4, и я хочу извлечь аудиофайлы напрямую без дальнейшего перекодирования. Все файлы mp4 имеют аудио файлы aac.
Я понимаю, что могу использовать следующую команду для извлечения аудиофайла из одного из файлов mp4:
avconv -i "INPUT FILE" -map 0:1 -c:a copy "OUTPUT FILE"
Как извлечь все аудиофайлы из всех файлов 70 mp4, чтобы я получил 70 файлов aac?
bash /path/to/the/script %F
- как здесь-map
может по-прежнему вызывать просмотр видео при переключении на другой формат вывода (если этот формат может содержать как аудио, так и видео). Безопаснее оставить все как есть.Ответ Сяо, как правило, наиболее полезен, если у вас есть все файлы в одном каталоге; но если в разных каталогах разбросаны файлы MP4, вы можете использовать эту
find
команду для их преобразования.При этом в конце используется немного другая форма подстановки строки bash: «$ {0 /% mp4 / m4a}» говорит bash заменить mp4 на m4a, но только если mp4 находится в конце строки.
источник
%
, он выполнит замену для первого экземпляра найденной строки; вы также можете использовать#
его для замены строки, только если она находится в начале переменной; поэтому $ {0 / mp4 / m4a} заменит первый экземпляр mp4 на m4a (что может быть проблемой, если у вас действительно странные имена файлов); и $ {0 / # mp4 / m4a} заменит mp4 вместо m4a, но только если строковое значение переменной начинается с mp4 (здесь, очевидно, бесполезно, но оно может пригодиться в другом месте).Чтобы избежать одновременной обработки нескольких файлов (которые могут использовать слишком много ресурсов), используйте
parallel
. По умолчанию он выполняет только одну работу за раз. Если вы хотите использовать несколько процессорных ядер параллельно, попробуйте выполнитьparallel -j 4 ...
4 задания параллельно. Также проверьтеman parallel
.Эта строка будет извлекать
aac
аудио файлы из выбранных видео и помещать их вm4a
контейнеры.При работе прямо в CLI, замените
%F
список ваших входных файлов. Например*.mp4
.Вдохновленный этим ответом предыдущим ответом на этот вопрос и комментарием evilsoup к последнему (говоря: «сырые файлы aac не могут содержать метаданные; если вы хотите сохранить метаданные из исходных файлов, используйте m4a (который это просто другое название для mp4, но довольно широко признано аудио-плеерами) вместо aac как расширение файла ' ).
Я использую такие команды в пользовательских действиях Thunar,
ограничивая приложение видео, которые содержат
aac
аудио.Чтобы во время обработки было открыто окно терминала, которое закрывается в конце, команду можно изменить следующим образом:
источник
Я расширил ответ @ Xiao-Long Chen, превратив его в скрипт, который пропускает файлы, когда выходной файл новее:
источник