В чем разница между свойствами воспроизведенияBufferFull и воспроизведениемBufferEmpty?

Я видел 2 свойства AVPlayerItem:

@property (nonatomic, readonly, getter=isPlaybackBufferFull) BOOL playbackBufferFull;

@property (nonatomic, readonly, getter=isPlaybackBufferEmpty) BOOL playbackBufferEmpty;

А вот что говорится в документации Apple:

playbackBufferFull:

Это свойство сообщает, что буфер данных, используемый для воспроизведения, имеет достаточную емкость. Несмотря на то, что буфер воспроизведения достиг своего предела, может не хватить статистических данных для поддержки прогноза playbackLikelyToKeepUp для YES.

playbackBufferEmpty:

Это указывает на то, что воспроизведение израсходовало все буферизованные носители и что воспроизведение будет остановлено или остановлено.


Из этих утверждений я понимаю, что:

playbackBufferFull:

Все данные были загружены для воспроизведения. Например, я воспроизводю видео с URL-адреса продолжительностью 5 минут. Когда весь этот контент до конца будет загружен, это будет правдой.

playbackBufferEmpty:

Фактическое воспроизведение израсходовало весь буфер, загруженный до сих пор. Например, данные до 2,3 минуты были загружены, и воспроизведение тоже дошло до этого времени, и больше нет контента для представления. (думаю самое время запустить нашу карусель, индикатор)

Я что-то неправильно понял? Если да, то поправьте меня..

Любые глубокие знания или советы приветствуются!


person NSPratik    schedule 03.06.2016    source источник


Ответы (1)


Я не эксперт в этом, но вот мое понимание:

Видео хранятся в сжатом формате. Они не распаковываются до тех пор, пока кадры не потребуются для отображения. Это происходит в буфере воспроизведения в режиме реального времени, когда отображается видео.

Буфер воспроизведения — это буфер распакованных кадров, готовых к отображению. Если он полный, это не означает, что полное видео готово к воспроизведению. Буфер воспроизведения занимает всего несколько секунд. Это означает, что несколько секунд воспроизведения, которые хранятся в буфере воспроизведения, заполнены.

Если он пуст, это означает, что нет видео, готового к воспроизведению, поэтому воспроизведение либо завершено, либо зависнет и отобразит сообщение о «буферизации», пока загружается больше контента.

person Duncan C    schedule 03.06.2016
comment
Дункан С, это многое добавляет к моему пониманию... проголосовал за - person NSPratik; 03.06.2016
comment
@NSPratik, если я ответил на твой вопрос, ты должен принять мой ответ. (голосование приветствуется, но полностью зависит от вас.) - person Duncan C; 04.06.2016