Encontrar todos os vídeos por codec (e não por formatos de contêiner ou tipo MIME)

1

Como posso obter a lista de todos os meus vídeos com o codec de vídeo usado?

Encontrei alguns comandos intersting como mediainfo , ffmpeg ou exiftool mas eles fornecem muitas informações apenas por um vídeo.

O comando mais intersting que eu encontrei é o arquivo e me dá esta saída:

$ file *
8 Mile (2002).avi:        RIFF (little-endian) data, AVI, 640 x 272, 23.98 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
1984 (1984).avi:          RIFF (little-endian) data, AVI, 960 x 540, ~24 fps, video: H.264 X.264 or H.264, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)

E eu gostaria de uma saída como esta (para converter em seguida, por exemplo, apenas vídeos com o codec XviD):

~/Movies/8 Mile (2002).avi     XviD
~/Movies/1984 (1984).avi       H.264

NB: Estou no MacOS Sierra (10.12), mas também posso traduzir comandos do Linux

    
por Klemart3D 28.02.2017 / 14:07

1 resposta

1

Atualizar

obrigado a @don_crissti por apontar que a passagem de {} para sh é sempre errado - a correção seria:

find ~/Movies/ -type f -iname "*.avi" -exec sh -c "echo $1; file $1 | cut -d, -f5 | cut -d: -f2 | sed 's/ //g' | sed 's/X.264orH.264//g'" {} \;

Você pode tentar isso - não testado.

find ~/Movies/ -type f -iname "*.avi" -exec sh -c "echo {}; file '{}' | cut -d, -f5 | cut -d: -f2 | sed 's/ //g' | sed 's/X.264orH.264//g'" \;
  • find : pesquisar todos os arquivos avi em ~/Movies/
  • echo {} imprime o nome do arquivo
  • execute file com esse filename
  • cut -d, -f5 obtém o quinto campo de texto cortado por coma (,)
  • cut -d: -f2 obtém o segundo campo de texto cortado por dois pontos (:)
  • sed remove espaços e possíveis sequências H264 duplicadas do texto
por 28.02.2017 / 16:56