Я написал небольшой скрипт bash для извлечения аудио из видеофайлов в пакетном режиме.
Звук извлекается из каждого файла mp4 в формат flac с помощью avconv (и кодека flac).
#!/bin/sh
#
# Batch conversion of audio extraction from video
FOLDER_SRC="/home/Me/Music/TestBatchConv"
for myvid in $(find ${FOLDER_SRC} | grep mp4)
do
avconv -i $myvid -acodec flac "${myvid}.flac"
done
exit 0
Он отлично работает, но я бы хотел его улучшить.
Скрипт определяет только формат mp4. Можно ли распознать видеофайл с помощью команды (вместо тестирования каждого видеоформата)?
Спасибо за советы.
Вы ищете file
, например,
$ file -b 01--Frank_Sinatra--Close_to_You_And_More--Close_to_You.m4a
Audio file with ID3 version 2.4.0, contains: ISO Media, MPEG v4 system, iTunes AAC-LC
Он должен охватывать все известные типы носителей. Если чего-то не хватает, вы можете добавить это самостоятельно (см. man magic
).
Для тестирования в Bash, если $ file является видеофайлом, вы можете использовать
[[ $(ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name -print_format csv=p=0 "$file") ]] && echo $file is video
ffprobe
, предоставляемый пакетом ffmpeg. Ubuntu 14.04 не имеет ffmpeg в стандартных репозиториях, но вы можете добавить ppa: mc3man / trusty-media repository и установить пакет ffmpeg для получения необходимого программного обеспечения. См. здесь для деталей.