У меня есть приложение, которое запускает ffmpeg/ffprobe как дочерний процесс (аналогично запуску в командной строке), а затем анализирует выходные данные команды, чтобы получить метаданные о файле и / или выполнить транскодирование файла. И мое приложение должно знать, защищен ли данный файл DRM.
ПРИМЕЧАНИЕ. - Я посмотрел на этот вопрос. В нем не рассматривается программный анализ выходных данных для определения защиты DRM. Он касается только анализа результатов работы человеком.
Я уже знаю, что могу запустить ffprobe, и если я просматриваю вывод глазами и вижу что-то вроде «Обнаружена защита DRM ... декодирование, скорее всего, потерпит неудачу» где-то в выводе, я знаю, что файл защищен. Посмотрите этот пример вывода:
ffprobe -hide_banner CelticWoman-OnlyAWomansHeart.wma
[asf @ 0x7f9bab000000] DRM protected stream detected, decoding will likely fail!
Input #0, asf, from 'CelticWoman-OnlyAWomansHeart.wma':
Metadata:
...
Однако есть две проблемы с вышеупомянутым выводом:
1 - Это не для машин. Я должен просмотреть целую кучу выходных данных, чтобы найти несколько слов. Разбор такого вывода неэффективен, потому что он предназначен для потребления человеком, а не машиной.
2 - я не знаю, является ли приведенный выше вывод одинаковым для разных типов файлов. Другими словами, приведенный выше пример вывода предназначен для файла WMA в контейнере ASF. Что, если это был FLAC или DTS или другой тип файла? Будет ли использоваться одно и то же слово, чтобы мое приложение могло каждый раз анализировать и обнаруживать его?
Что мне нужно, это какое-то свойство вывода, которое мое приложение может надежно и предсказуемо проанализировать ... некоторая пара ключ-значение, например, "drm-protected = true", которая согласована для всех типов файлов мультимедиа
Итак, какие опции в ffprobe/ffmpeg дадут мне парославируемую машиной пару ключ-значение, которая говорит мне, имеет ли файл защиту DRM?
Бесконечно благодарен !