AVPlayer отправляет AVPlayerItemFailedToPlayToEndTimeNotification примерно с 1 минутой воспроизведения до конца
Я пытаюсь HLS потоковое на Mac. Для некоторого содержимого воспроизведение не заканчивается до конца, и AVPlayer отправляет сигнал AVPlayerItemFailedToPlayToEndTimeNotification в течение 1 минуты воспроизведения. Это всегда происходит в одно и то же время.
AVPlayer получает плейлист с начальным сегментом =100. В 18-минутном видео он прекрасно воспроизводится в течение 16 минут. и затем это терпит неудачу с AVPlayerItemFailedToPlayToEndTimeNotification.
Вот журнал ошибок AVPlayerItem
error log: #Version: 1.0
Software: AppleCoreMedia/1.0.0.13E28 (Macintosh; U; Intel Mac OS X 10_9_4; en_us)
#Date: 2014/11/14 12:32:17.017
#Fields: date time uri cs-guid s-ip status domain comment
2014/11/14 12:32:15.015 http://localhost:12000/stream/content.ts?id=192.168.1.107-bd1ec9ddb674b1c67dd4&bps=1200000&segid=100 B4A5AB49-1647-4A3B-9768-61F3F99B133E 127.0.0.1 -12318 "CoreMediaErrorDomain" "Segment exceeds specified bandwidth for variant"
В журналах ошибок он жалуется на сегмент 100, который был воспроизведен 16 минут назад. Похоже, его старая информация об ошибке.
Вот информация журнала доступа при неудачном воспроизведении
Access log: #Version: 1.0
#Software: AppleCoreMedia/1.0.0.13E28 (Macintosh; U; Intel Mac OS X 10_9_4; en_us)
#Date: 2014/11/14 12:32:17.017
#Fields: date time uri cs-guid s-ip s-ip-changes sc-count c-duration-downloaded c-start-time c-duration-watched bytes c-observed-bitrate sc-indicated-bitrate c-stalls c-frames-dropped c-startup-time c-overdue c-reason c-observed-min-bitrate c-observed-max-bitrate c-observed-bitrate-sd s-playback-type sc-wwan-count c-switch-bitrate
2014/11/14 12:32:15.015 https://localhost:12100/stream/playlist.m3u8?id=192.168.1.107-bd1ec9ddb674b1c67dd4&bps=1200000 B4A5AB49-1647-4A3B-9768-61F3F99B133E 127.0.0.1 0 3 9.000 1.070 1.281 1831920 5991597.824 1369642 0 0 2.430 0 - 3063099.199 6966103.615 - VOD 0 -
Я сравнил журнал доступа для AVPlayerItem, когда воспроизведение не удается, и воспроизведение в порядке (я выкидываю состояние, когда воспроизведение приостановлено), и единственное заметное отличие - это поле c-reason, которое равно 1 в случае сбоя и - в случае успеха.
Что такое поле c-reason и где я могу получить больше информации об этом. AVPlayerItemAccessLogEvent ничего не говорит об этом.
Вот сравнение полей AVPlayerItemAccessLogEvent для случаев сбоя и успеха. Первое значение - это случай неудачи, а второе - случай успеха.
uri = https://localhost:12100/stream/playlist.m3u8?id=192.168.1.107-bd1ec9ddb674b1c67dd4&bps=1200000
https://localhost:12100/stream/playlist.m3u8?id=192.168.1.107-bd1ec9ddb674b1c67dd4&bps=1200000
cs-guid = 9B6DFB28-0AB5-4729-9744-5DD1C80AA974
B4A5AB49-1647-4A3B-9768-61F3F99B133E
s-ip = 127.0.0.1
= 127.0.0.1
s-ip-changes = 0
= 0
sc-count = 4
= 3
c-duration-downloaded = 12.000
= 9.000
c-start-time = 1.070
= 1.070
c-duration-watched = 3.948
= 1.281
bytes = 2368360
= 1831920
c-observed-bitrate = 4311328.532
= 5991597.824
sc-indicated-bitrate = 1369642
=1369642
c-stalls =0
= 0
c-frames-dropped = 0
= 0
c-startup-time = 2.574
= 2.430
c-overdue = 0
= 0
c-reason = 1
= -
c-observed-min-bitrate = 2987149.809
= 3063099.199
c-observed-max-bitrate = 6577841.971
= 6966103.615
c-observed-bitrate-sd = - -
s-playback-type = VOD VOD
sc-wwan-count = 0 0
c-switch-bitrate = - -
Я знаю его длинный вопрос, но если кто-то может проверить разницу выше, дайте мне знать, почему игрок терпит неудачу.
Спасибо за чтение этого длинного вопроса.
С уважением, D