Você pode usar este pequeno script python junto com o find para imprimir todos os arquivos com um codec específico:
filterByCodec.py
import os
import sys
import json
inputPath = sys.argv[1]
codec = sys.argv[2]
type = sys.argv[3]
cmd = 'ffprobe -v quiet -show_streams -print_format json ' + inputPath
output = os.popen(cmd).read()
output = json.loads(output)
if not 'streams' in output:
sys.exit(0)
for stream in output['streams']:
if stream['codec_name'] == codec and stream['codec_type'] == type:
print inputPath
sys.exit(0)
Isso chamará ffprobe
, armazenará sua saída na cadeia json, iterará todos os fluxos e imprimirá o caminho de entrada caso o nome do codec e a correspondência de tipo. Você precisará de ffprobe
para isso. Você pode obtê-lo como uma versão estática de aqui se você não o tiver instalado em seu sistema.
Depois, você pode chamá-lo em todos os arquivos usando find
da seguinte forma:
find . -type f -exec python filterByCodec.py {} hevc video \;
isto imprimirá todos os vídeos contendo o codec de vídeo HEVC. Mais exemplos:
find . -type f -exec python filterByCodec.py {} h264 video \;
find . -type f -exec python filterByCodec.py {} mp3 audio \;
Você pode estender o script e mover esses arquivos para algum diretório ou qualquer outra coisa. Isso pode ser algo assim:
cmd = 'mv ' + inputPath + ' onlyhevcDir'
os.system(cmd)
Eu sei que essa não é a melhor maneira de fazer isso, mas usar python é muito simples de fazer.