[iOS] AVPlayerItemVideoOutput.hasNewPixelBufferForItemTime не работает правильно

Это мой первый вопрос здесь, так что не будь серьезным.

Я играю видео из сети с помощью AVPlayer. Я вывожу текущий кадр, используяAVPlayerItemVideoOutput прикреплен кAVPlayerItem играетAVPlayer, Чтобы проверить, готов ли новый кадр, я звоню[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime], затем выведите его, используя OpenGL ES. Все отлично работает, если я читаю mp4, но если я пытаюсь прочитать m3u8, он работает около 1 секунды (~ 30 кадров), но после этого периода[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime] начинает возвращать только FALSE, поэтому текущий кадр не обновляется.

В случае, если я ищу текущий кадр, используя[AVPlayer seekToTime] до того, как эта проблема впервые возникла, все идет нормально.

Тест m3u8 видео, которое я использую, живет здесь:

http://195.16.112.71/adaptive/3006a26a-9154-4b38-a327-4fa2a2381ae6.video/3006a26a-9154-4b38-a327-4fa2a2381ae6.m3u8

Чтобы воспроизвести эту проблему, я модифицировал образец Apple AVPlayerDemo, вот он:https://yadi.sk/d/T2aVGoKnWmf5Z

Главное изменение в том, что я называю[Обновление AVPlayerDemoPlaybackViewController] какие звонки упоминаются[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime], Эта функция имеет статическую переменнуюсчетчик который хранит количество успешных[AVPlayerItemVideoOutput copyPixelBufferForItemTime] звонки.

URL-адрес видео установлен в[AVPlayerDemoPlaybackViewController setURL]это жестко закодировано в начале функции. По умолчанию его значение указывает на видео m3u8, которое воспроизводит проблему, в этом случае среднее значениесчетчик около 30, после кадра с этим индексом[AVPlayerItemVideoOutput hasNewPixelBufferForItemTime] возвращает только FALSE.

В случае, когда используется другой URL-адрес видео (см. Начало[AVPlayerDemoPlaybackViewController setURL] - есть альтернативный URL, который можно раскомментировать), все кадры успешно прочитаны.

Любая помощь будет оценена!

Ответы на вопрос(3)

Ваш ответ на вопрос