bash script: é possível reconhecer o formato de vídeo dos arquivos (extrair o áudio em lote deles)?

2

Eu escrevi um pequeno script bash para extrair o áudio de arquivos de vídeo no modo batch.

O som é extraído de cada arquivo mp4 para o formato flac usando avconv (e o codec 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

Funciona bem, mas eu gostaria de melhorá-lo.

O script detecta apenas o formato mp4. É possível reconhecer um arquivo de vídeo com um comando (em vez de testar cada formato de vídeo)?

Obrigado por conselhos.

    
por riimzzai 07.03.2013 / 16:51

2 respostas

2

Você está procurando por file

por exemplo,

 $ 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

Deve abranger todos os tipos de mídia conhecidos. Se algo estiver faltando, você pode adicioná-lo você mesmo (veja man magic ).

    
por H.-Dirk Schmitt 07.03.2013 / 17:19
2

Para testar no Bash, se $ file for um arquivo de vídeo, você poderia usar

[[ $(ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name -print_format csv=p=0 "$file") ]] && echo $file is video

ffprobe é fornecido pelo pacote ffmpeg. O Ubuntu 14.04 não possui ffmpeg em repositórios padrão, mas você pode adicionar o repositório ppa: mc3man / trusty-media e instalar o pacote ffmpeg para obter o software necessário. Veja aqui para detalhes.

    
por jarno 19.03.2016 / 21:10