Кешировать потоковое видео со встроенным HTTP-прокси?

Несколько человек пытались кэшировать предварительно загруженные видеоданные, используя, например, AVPlayer или MPMoviePlayerController.

Казалось бы, самый простой подход — использовать AVExportSession на currentItem игрока, но, похоже, никто не может заставить его работать.

Мой вопрос: возможно ли прозрачно проксировать видеозапросы на устройстве с помощью встроенного HTTP-сервера, поддерживаемого дисковым кешем?

Я могу запустить встроенный веб-сервер (GCDWebServer), поэтому мой вопрос

  1. Не испортит ли кэширование код оптимизации пропускной способности AVPlayer, который пытается выбрать поток с максимально возможной пропускной способностью? Если это проблема, я могу управлять потоком, чтобы он предоставлял только один вариант.

  2. Достаточно ли производительности диска, чтобы обеспечить улучшение по сети? Казалось бы, это очевидно, но я видел множество статей в Интернете, в которых говорилось о том, насколько медленный дисковый ввод-вывод в iOS.

Спасибо!


person bcattle    schedule 03.12.2013    source источник
comment
из вашего вопроса и вопросов, на которые вы ссылаетесь, неясно, какова ваша цель здесь. Вы пытаетесь сохранить копию воспроизводимого видео локально (ваша ссылка на AVExportSession) или пытаетесь реализовать собственный кеш для улучшения воспроизведения?   -  person MDB983    schedule 16.05.2014
comment
Я не вижу различия, которое вы пытаетесь провести. В чем разница между сохранением копии воспроизводимого видео локально и реализацией кеша для улучшения воспроизведения? Разве это не одно и то же? Я не знаю методов кэширования, которые не сохраняли бы видео локально.   -  person bcattle    schedule 16.05.2014
comment
Отличие в реализации. Как вы указали, вы можете либо использовать прокси-механизм для захвата того, что находится в процессе загрузки (с точки зрения игроков), либо AVExportSession, который по существу захватывает уже загруженные/воспроизводимые данные.   -  person MDB983    schedule 16.05.2014
comment
Правильно. Таким образом, цель этого вопроса — спросить сообщество, возможна ли какая-либо из этих реализаций. Первый вопрос, связанный выше, показывает сомнения, связанные с подходом AVExportSession. Как я упоминал в теле вопроса, есть причины, по которым прозрачное проксирование AVPlayer также может не работать.   -  person bcattle    schedule 17.05.2014
comment
Привет, @bcattle. Я работаю над точно такой же проблемой. Я хочу кэшировать свои видео на iOS, но до сих пор все мои попытки с NSURLProtocol и пользовательским resourceLoader не увенчались успехом. Сейчас я собираюсь внедрить прозрачный прокси, поэтому хотел спросить, добились ли вы какого-либо прогресса в этом?   -  person ndbroadbent    schedule 01.06.2015


Ответы (1)


Для прямой трансляции HTTP:

Если встроенный веб-сервер предназначен для размещения файлов медиасегментов, которые составляют канал прямой трансляции HTTP, то файлы должны быть уже загружены на устройство, если только вы не перенастроите веб-сервер для работы в качестве прокси.

В любом случае кажется, что более простым способом было бы загрузить и проанализировать индексный файл (обычно prog_index.m3u8), чтобы получить список файлов сегментов мультимедиа, а затем просто инициировать загрузку каждого из них.

person augustzf    schedule 19.05.2014
comment
Спасибо за понимание. Я представлял себе прозрачный прокси. То есть вы предлагаете открыть и прочитать файл .m3u8, а затем прозрачно проксировать каждый поток в нем? - person bcattle; 19.05.2014