Найти все файлы MP4 с DTS или AC3 / A52 Audio?

1

Итак, потратив много времени на кодирование (или перекодировку) файлов в mp4, надеясь, что они будут совместимы с iTunes, выясняется, что iTunes не будет воспроизводить файлы со звуком DTS или AC3 / A52, поэтому я мне придется перекодировать аудио в таких файлах в AAC (где раньше я просто проходил через него).

В любом случае, мне нужен способ найти все файлы с этими типами аудио или, если проще, все файлы MP4 без аудио AAC.

Каков наилучший способ сделать это? В идеале я хотел бы использовать Spotlight, если смогу, хотя я попробовал несколько критериев поиска без особой удачи, но я также приму ответы, которые используют решения на основе терминалов, поскольку я, вероятно, ffmpegв любом случае буду использовать для преобразования звука.

Haravikk
источник
Я работаю над сценарием оболочки.
Rnhmjoj

Ответы:

1

Я сделал сценарий оболочки. Это напечатает любой файл, который имеет другой кодек. Установите каталог и расширение для поиска.

#!/bin/zsh
directory=~/Music
extension=m4a
codec=aac

find $directory -type f -name "*.$extension" -print0 | while read -d $'\0' file
do
    file_codec="$(ffprobe -v quiet -show_streams -print_format json $file | jq '.streams[0].codec_name')"
    [[ "${file_codec//\"}" != $codec ]] && echo $file
done

Вам нужно ffmpegи jq. Вы можете установить их оба из доморощенного .

Rnhmjoj
источник
1
Спасибо за помощь, я должен был знать, что это будет что-то из ffmpegнабора инструментов! Просто заметка, мне удалось упростить команду, не требуя jqследующих изменений ffprobe -v quiet -show_streams -select_streams a -show_entries stream=codec_name "$file" | grep -F 'codec_name' | sed 's/^.*=//':; Вывод должен быть проверен в случае, если он возвращает несколько строк (более одного аудиопотока), но должен иметь возможность обрабатывать случаи, когда звук не является потоком 0.
Haravikk
@Haravikk Отлично, я думал о седе, но я не так хорош.
Rnhmjoj