.m3u8 - это Apple HTTP Live Streaming, верно?Я думаю, то, что вы пытаетесь сделать, просто противоречит дизайну этой технологии.Вы должны предоставить исходный файл и разрешить его загрузку.
Насколько я понимаю, в дизайне потоковой передачи вы не получаете явного доступа к частям, чтобы собрать их обратно.Например, Netflix использует потоковую передачу через Silverlight, и одним из преимуществ (для Netflix) является то, что он защищает данные от сохранения, как если бы они были загружены.Кроме того, поскольку HTTP Live Streaming позволяет потоку переключать битрейты на лету, он спроектирован таким образом, что каждый фрагмент времени может быть закодирован с любым количеством битрейтов, и ни один из них не является каноническим.
Теоретически,быть способом собрать все фрагменты для определенного битрейта и перекодировать их в одно видео.Но API воспроизведения Apple не предоставят вам такой возможности.
Вместо потоковой передачи по HTTP, рассмотрите возможность постепенной загрузки.Просто подайте оригинальный видеофайл (перекодируйте его в то, что iPhone нравится, если это необходимо).Если ваш сервер настроен правильно, API-интерфейсы воспроизведения будут выполнять небольшие запросы, чтобы получить определенные фрагменты файла, а не все это за один раз, и это близко к правильной потоковой передаче.Я хотел бы найти, где я читал об этом, чтобы я мог дать правильное название для этого.Amazon S3 настроен для такой работы, если вам нужно быстрое решение.
Но будьте осторожны, Документы Apple скажем,
Если ваше приложение доставляет видеопо сотовым сетям, а продолжительность видео превышает 10 минут или 5 МБ данных в течение пяти минут, вы должны использовать HTTP Live Streaming.(Прогрессивная загрузка может использоваться для небольших клипов.)