Воспроизведение зашифрованного MP4

Я делаю (локальное - мультиплатформенное) приложение для защиты видео, но я не знаю, какое правильное решение сначала "зашифровать -> сохранить на HDD", а затем "загрузить с HDD->decrypt->play" в зашифрованном виде видео.

Я прочитал о MPEG-DASH и некоторых DRM и нашел эту команду Bento4:

mp4dash --encryption-key=000102030405060708090a0b0c0d0e0f:00112233445566778899aabbccddeeff --encryption-args="--property 1:ClearLeadFragments:10 --property 2:ClearLeadFragments:10" movie.mp4

но я не уверен, что MPEG-DASH может быть частью решения или нет.

Как я могу решить это?

1 ответ

Решение

После многих поисков в Google я нашел ответ Erti-Chris Eelmaa здесь:

Воспроизведение зашифрованного видео

Я написал свой собственный Videoplayer, используя openGL+FFMPEG, который мог воспроизводить mp4 и расшифровывать каждый кадр в GPU с помощью шейдеров. Я также экспериментировал с другими возможными решениями, такими как потоковая передача с веб-сервера с использованием VLC. (VLC предлагает какое-то шифрование / дешифрование при работе с потоками) и yada yada yada.

Также одним из решений было использование 4 медиаэлементов (WPF), и фактическое видео было фактически разделено на 4 области, и каждая область была повернута так, что видео не было доступно для просмотра. Загрузив видео в 4 медиаэлемента, вы можете наметить, какую часть вы хотите показать, а также повернуть его обратно. Но, честно говоря, MediaElement - это плохо.

Однако я закончил именно тем, что сказал RomanR. Я построил граф DirectShow с использованием mp4splitter, ffdshow, videorenderer и изменил исходный фильтр mp4splitter. Чтение происходит в BaseSplitter/AsyncReader.cpp (просто измените функцию SyncRead), который использует mp4splitter.

Если вы хотите реализовать это самостоятельно, просто используйте проект MPC-HC и измените фильтры так, как вам нравится. Мне потребовалось некоторое время, чтобы обойти концепцию DirectShow, но как только вы ее поняли, она стала отличным оружием.

HLS + S3 + CloudFront + MediaConvert + VideoJS.

Другие вопросы по тегам