AVPlayer抛出:"内部错误:重启太远"

时间:2016-03-07 23:33:20

标签: ios avplayer hls avplayeritem

我正在观察AVPlayer的KVO AVPlayerItemNewErrorLogEntryNotification,我发现以下错误:

  •   

    errorStatusCode:-12645 errorDomain:CoreMediaErrorDomain   errorComment:内部错误:重启太远(-1.4084s)

我无法理解以下内容的真正含义。

  

"内部错误:重启太远"

任何人都可以帮我找到这个问题的根本原因。

2 个答案:

答案 0 :(得分:5)

  

如果很长.ts视频文件响应:-12645。

没有MPMediaPlayer在MPMovieErrorLogEvent类中返回的错误状态代码的文档。 但其中一些是:

HTTP status - errorStatusCode - errorDomain - errorComment

400     -12666  CoreMediaErrorDomain    unrecognized http response 400  
401     -12937  CoreMediaErrorDomain    Authentication Error    
402     -12666  CoreMediaErrorDomain    unrecognized http response 402  
403     -12660  CoreMediaErrorDomain    HTTP 403: Forbidden     
404     -12938  CoreMediaErrorDomain    HTTP 404: File not found    
405     -12666  CoreMediaErrorDomain    unrecognized http response 405  
406     -12666  CoreMediaErrorDomain    unrecognized http response 406  
407     -12937  CoreMediaErrorDomain    Authentication Error    
409     -12666  CoreMediaErrorDomain    unrecognized http response 409  
...                 
415     -12666  CoreMediaErrorDomain    unrecognized http response 415  

500     -12666  CoreMediaErrorDomain    unrecognized http response 500  
501     -12666  CoreMediaErrorDomain    unrecognized http response 501  
502     -12666  CoreMediaErrorDomain    unrecognized http response 502  
503     -12661  CoreMediaErrorDomain    HTTP 503: Unavailable   
504     -12666  CoreMediaErrorDomain    unrecognized http response 504  
505     -12666  CoreMediaErrorDomain    unrecognized http response 505  

if long .ts video file respons  -12645  CoreMediaErrorDomain    No response for media file in 10 s  

video .ts file bitrate differ from m3u8 declaration     -12318  CoreMediaErrorDomain    Segment exceeds specified bandwidth for variant     

for live stream.playlist m3u8 did not change too long   -12642  CoreMediaErrorDomain    Playlist File unchanged for 2 consecutive reads     

if wrong host ip    -1004   kCFErrorDomainCFNetwork     -   

if wrong dns host name  -1003   kCFErrorDomainCFNetwork     -   

if bad formatted URL    -1000   kCFErrorDomainCFNetwork     -   

if invalid https/ssl request    -1202   kCFErrorDomainCFNetwork     -

答案 1 :(得分:3)

根据Apple员工的说法,此错误消息表示:

  

玩家抱怨它正在尝试重新启动直播,   但只有1.4秒的材料可用。有多少段   在你的直播播放列表?这些天我们建议你总是在   播放列表中至少有六个段。我相信唯一的影响是   延迟palyback,直到它有足够的数据。

来源:https://forums.developer.apple.com/thread/40791

错误的原因很可能源自m3u8本身。

当流式传输直播节目(例如任何电视频道)时,事件数据的可用性与编码器创建媒体片段(.ts)之间会有延迟,然后将其附加到播放列表。

我可以想象,如果playerItem播放头的位置位于缓冲区的最边缘,并且新的媒体片段在服务器上的提供速度不够快,则会生成这些类型的错误。

是否应在客户端防止或处理这些错误:

由于这些错误报告为internal并且AVPlayer显然从中恢复,因此可以安全地假设它们在内部处理。因此,可以将它们理解为简单的错误报告,并且可以选择忽略它们。

如果想要阻止它们,唯一的方法可能是在几秒钟内手动设置活动缓冲区的边缘。