Как проверить, защищен ли данный файл, например, аудиофайл, DRM?
Аудио DRM в основном зависит от формата, поскольку большинство форматов с поддержкой DRM легко идентифицируются по их контейнеру, что обычно отражается в их расширении. Это должно дать игроку знать, с чем он имеет дело, без необходимости анализировать файл. Типичным примером является файл AAC, который вы можете купить в iTunes. Если он защищен с помощью FairPlay DRM, файл называется .m3p
(против незащищенного .m4a
).
Нет ничего, что могло бы помешать компаниям шифровать .mp3
и оставить расширение тем же - это просто раздражает пользователей, когда они переключаются на один из миллиарда доступных MP3-плееров, и это не работает.
Для видео все может быть немного сложнее. Некоторые форматы контейнеров видео поддерживают DRM, поэтому их расширение не обязательно изменяется. Я бы посоветовал попытаться получить ffmpeg
или themonospot
для анализа каждого файла.
Вот небольшая bash-функция, которую я только что написал, которая может получить кодеки из файла:
function codec() {
ffmpeg -i "$1" 2>&1 | grep Stream | grep -Eo '(Audio|Video)\: [^ ,]+'
}
В действии:
oli@bert:~/Desktop$ codec "The Beatles - 01 - Back In The U.S.S.R.mp3"
Audio: mp3
Вы можете сократить это еще больше но сделайте снимок на некоторых известных DRM-носителях и посмотрите, что произойдет. Он либо взорвется, либо расскажет вам о DRM.
В любом случае, когда вы знаете, чего ожидать, вы можете пакетировать это или что-то в этом роде, чтобы быстро сказать вам, какие файлы имеют DRM.
Чтобы определить DRM на видео, вы можете использовать ffmpeg -i <filename>
Например. Для фильма, приобретенного у Apple, это можно увидеть в выходных данных:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] ignoring 'frma' atom of 'mp4a', stream format is 'drms'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] ignoring 'frma' atom of 'avc1', stream format is 'drmi'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] ignoring 'frma' atom of 'ac-3', stream format is 'drms'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] stream 0, timescale not set
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] Could not find codec parameters for stream 1 (Video: none (drmi / 0x696D7264), none, 1920x1032, 5234 kb/s): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] Could not find codec parameters for stream 2 (Audio: none (drms / 0x736D7264), 48000 Hz, 5.1(side), 384 kb/s): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc22d005600] Could not find codec parameters for stream 4 (Subtitle: none (p608 / 0x38303670), 1920x1032, 0 kb/s): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options