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

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

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

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

1 Ответ

3 голосов
/ 25 марта 2011

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

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

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

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

Но будьте осторожны, Документы Apple скажем,

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

...