Воспроизведение зашифрованного видео с AVPlayer - PullRequest
17 голосов
/ 16 марта 2012

Я реализую приложение, которое содержит видеоплеер. По некоторым причинам видеофайлы шифруются с помощью AES, и размер этих файлов может быть довольно большим, чтобы избежать загрузки его в ОЗУ как единое целое. Я ищу способ играть с AVPlayer.

Пробовал:

1) Пользовательский NSURLProtocol, как предлагается здесь http://aptogo.co.uk/2010/07/protecting-resources/ Не сработало, я полагаю, что AVPlayer использует его, а мой не вызывается.

2) Используйте AVAsset, чтобы нарезать видео на небольшие куски, а затем передать их в AVPlayer - не удалось, потому что в AVPlayer для этого нет API.

Любой обходной путь будет принят с благодарностью:)

Ответы [ 2 ]

4 голосов
/ 20 января 2014

У вас есть 2 варианта:

  1. Если вы нацелены на iOS 7 и новее, проверьте AVAssetResourceLoaderDelegate.Это позволяет вам делать то же, что и с пользовательским NSURLProtocol, но специально для AVPlayer.

  2. Эмулировать HTTP-сервер с поддержкой заголовка Range и указывать AVURLAsset на localhost.

Я реализовал # 2 раньше и могу предоставить больше информации при необходимости.

3 голосов
/ 30 марта 2016

Я только что скачал пример проекта Apple https://developer.apple.com/library/ios/samplecode/sc1791/Listings/ReadMe_txt.html, и он, кажется, делает именно то, что вы хотите.

Делегат ловит каждый AVURLAsset, звонит AVAssetResourceLoader и составляет брендновый .m3a8 файл с пользовательским ключом дешифрования.
Затем он передает плееру все .ts URL-адреса файла в m3a8.

. Проект представляет собой хороший обзор того, чем он является.можно делать с каналами HLS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...