Доступ к данным AVPlayer при воспроизведении видео из HTTP Live Streaming - PullRequest
6 голосов
/ 21 декабря 2011

Я играю потоковое HTTP-видео в потоковом режиме с помощью AVPlayer.

Можно ли каким-то образом получить доступ к кэшированным данным проигрывателя, чтобы сохранить их локально?

1 Ответ

9 голосов
/ 22 декабря 2011

TLDR;Это не невозможно, но результаты, скорее всего, не будут такими хорошими.

Имейте в виду, что поток HTTP-видео фактически состоит из нескольких потоков пропускной способности.Каждый из них разделен на более мелкие порции транспортного потока MPEG.

Для воспроизведения этих потоков AVPlayer обычно выбирает один из доступных потоков пропускной способности, начинает предварительную загрузку и вскоре также воспроизводит.Теперь AVPlayer начинает поднимать планку и начинает загружать куски из потока с более высокой пропускной способностью.AVPlayer будет снова поднимать планку, пока не достигнет максимально возможной пропускной способности.Этот процесс будет инвертирован, как только AVPlayer определит проблемы с сохранением определенной воспроизводимой длины, предварительно загруженной в свою очередь.Таким образом, в случае, если пропускная способность сети уменьшается, выбирается поток с меньшей пропускной способностью.Точные детали реализации не указаны, но это примерно так.

Теперь представьте, что вы будете локально хранить / кэшировать эти данные.Вы могли бы получить смесь различных блоков TS с полосой пропускания, а не все, что вы могли бы воспроизвести «из коробки».Также вы бы добавили дополнительную нагрузку на этот процесс, так как доступ к файловой системе в наши дни довольно дорогой на мобильных устройствах.

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

...