Запись HTTP-потокового видео в файл во время просмотра?
Я пытаюсь создать потоковое видео DVR как функциональность в приложении, которое я разрабатываю. У меня есть HTTP Live Stream, который я успешно получил на iPad. Я хочу, чтобы пользователь мог нажать кнопку "Запись" и начать запись видео, которое в данный момент воспроизводится с этой точки. Этот видеофайл будет доступен из приложения или из рулона камеры. В настоящее время я использую объект MPMoviePlayerController для воспроизведения видеопотока. Я не вижу никаких методов доступа к данным из объекта в документации Apple. Вот несколько мыслей о способах этого.
1) Как-то обращайтесь к видеоданным из MPMoviePlayerController и пишите это в файл. Или используйте другой тип игрового объекта, который позволит мне воспроизводить видео и получать доступ к воспроизводимым в данный момент данным.
2) Внедрение какой-то записи захвата экрана, которая получает видеозапись экрана iPad. Это позволит мне записывать видео в виде "скриншотов".
3) Найдите сегменты видео HTTP потокового видео, где они хранятся в MPMoviePlayerController. Предположительно, их нужно хранить где-то на iPad для воспроизведения. Есть ли способ доступа к этим файлам?
4) Ручная загрузка сегментов видеопотока поверх http при потоковой передаче файла. Это кажется не идеальным, поскольку поток нужно будет загружать дважды.
5) Это может сработать. Периодически загружайте сегменты видео на iPhone. Настройте локальный HTTP-сервер на iPhone и загрузите видео в MPMoviePlayerController. Таким образом, сегменты видео могут быть помечены для записи и собраны в видео.
6) У меня есть контроль над потоковым сервером. Я мог бы написать код на стороне сервера, чтобы записать видео на конец сервера, а затем отправить видео на iPad после факта. Я бы предпочел не делать этого.
Кто-нибудь сделал что-нибудь из этого? В идеале iPhone просто сможет получить доступ к видеоданным так или иначе и легко записать его. Я бы предпочел не попасть в варианты 4, 5 или 6 (см. Выше), если мне это не нужно.
Спасибо заранее.
Ответы
Ответ 1
DVR на устройстве несколько не поощряется из-за ограниченного пространства и других факторов, таких как время работы от батареи, мощность обработки, процедуры очистки после остановки пользователя dvr и т.д.
Если вы хотите добиться воспроизведения DVR на устройствах iOS (или других устройствах с использованием HLS), я предлагаю вам сохранить сторону видеосервера. Прямой поток уже захвачен и сегментирован на стороне сервера, все, что вам нужно сделать, это сохранить сегменты немного дольше, вместо их удаления. Используя EXT-X-PLAYLIST-TYPE и EXT-X-MEDIA -SEQUENCE, вы можете предложить игроку, что он открывает прямой эфир, имеющий доступ к видеорегистратору (ранее).
В качестве альтернативы вы можете использовать сервер, который делает это из коробки, например, Wowza. Вот статья о том, как добиться этого с помощью Wowza