iPhone MPMoviePlayerController: загружайте файлы во время потоковой передачи и воспроизводите их локально

У меня есть файл m3u8 со всеми файлами TS. MPMoviePlayerController хорошо воспроизводит их через HTTP-запрос на потоковом сервере. Но я хотел бы получить файлы локально, чтобы потом воспроизвести их снова без какого-либо подключения.

Мне удалось загрузить файл m3u8 и все файлы TS локально на моем устройстве, я отредактировал файлы m3u8, чтобы они указывали на локальные.ts вместо http, но я не могу прочитать их из этого места. (VLC может сделать это хорошо)

Есть ли способ загрузить сегменты во время игры (чтобы избежать 2 загрузок), а затем воспроизводить их локально с помощью MPMoviePlayerController или еще.

1 ответ

Решение

.m3u8 - это Apple HTTP Live Streaming, верно? Я думаю, то, что вы пытаетесь сделать, просто противоречит дизайну этой технологии. Вы должны выставить оригинальный файл и разрешить его загрузку.

Насколько я понимаю, именно в дизайне потоковой передачи вы не получаете явного доступа к частям, чтобы собрать их вместе. Например, Netflix использует потоковую передачу через Silverlight, и одним из преимуществ (для Netflix) является то, что он защищает данные от сохранения, как если бы они были загружены. Кроме того, поскольку HTTP Live Streaming позволяет потоку переключать битрейты на лету, он спроектирован таким образом, что каждый фрагмент времени может быть закодирован с любым количеством битрейтов, и ни один из них не является каноническим.

Теоретически, может быть способ собрать все фрагменты для определенного битрейта и перекодировать их в одно видео. Но API воспроизведения Apple не предоставят вам такой возможности.

Вместо HTTP Live Streaming рассмотрим прогрессивную загрузку. Просто подайте исходный видеофайл (перекодируйте его в то, что нравится iPhone в случае необходимости). Если ваш сервер настроен правильно, API-интерфейсы воспроизведения будут выполнять небольшие запросы для получения отдельных фрагментов файла, а не всего этого за один раз, и это почти вторая секунда для правильной потоковой передачи. Я хотел бы найти, где я читал об этом, чтобы я мог дать правильное название для этого. Amazon S3 настроен для такой работы, если вам нужно быстрое решение.

Но будьте осторожны, документы Apple говорят,

Если ваше приложение передает видео по сотовым сетям, а продолжительность видео превышает 10 минут или 5 МБ данных в течение пятиминутного периода, вы должны использовать HTTP Live Streaming. (Прогрессивная загрузка может использоваться для небольших клипов.)

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