安卓ExoPlayer快进非常缓慢

3
我正在从VideoView切换到ExoPlayer。我已经使用了ExoPlayer GIT存储库中包含的示例代码,如果我开始播放视频并让它播放到结束,那么视频是可以正常播放的。
当我使用进度条来前后跳转时会出现问题。如果我只是轻触进度条,并等待其跳转到位置,则会有一点延迟,并且我可能会在日志文件中看到有关程序在主线程上执行太多工作的消息。
如果我拖动进度条,我会看到一堆“new range: offset=######”类型的消息,好像它们在请求服务器之前没有在每个进度条移动点之间等待。在最终跳转发生之前,可能需要很长时间,甚至会出现应用程序无响应的消息,然后视频才能再次从该位置开始播放。
由于托管内容的服务器不响应SmoothStreaming或DashVod模式,所以我正在为视频使用DefaultRendererBuilder。
在iOS项目中,使用标准MPMoviePlayerController完全可以正常工作,同样的视频,同样的服务器,平滑地从头到尾搜索,因此似乎服务器提供了合理的内容。
我真的希望从VideoViewer切换到ExoPlayer可以解决这些问题。我在VideoView中也遇到了同样的问题,其中超出缓冲区的搜索将引起问题。至少在ExoPlayer中它效果更好,但现在我有了新的问题,即通过拖动进行搜索几乎无法使用。
如果需要在服务器端进行更改,则可以完成,因为我们拥有和编写双方的代码。由于从iOS的一切都看起来很正常,所以我认为这更多是Android代码方面的问题,而不是服务器端的问题。
这些视频的长度在30秒到4分钟之间,格式为MP4。这是典型的响应头:
response.headers={ 
"Accept-Ranges" = bytes; 
"Content-Length" = 24267506; 
"Content-MD5" = [[redacted]]; 
"Content-Type" = "application/octet-stream"; 
Date = "Mon, 08 Sep 2014 19:27:04 GMT"; 
Etag = [[redacted]]; 
"Last-Modified" = "Mon, 08 Sep 2014 16:44:48 GMT"; 
Server = "Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0"; 
"x-ms-blob-type" = BlockBlob; 
"x-ms-lease-state" = available; 
"x-ms-lease-status" = unlocked; 
"x-ms-meta-aspect_ratio_x" = 16; 
"x-ms-meta-aspect_ratio_y" = 9; 
"x-ms-meta-audio_bit_rate" = 1536000; 
"x-ms-meta-created_date" = "9/8/2014 4:44:45 PM"; 
"x-ms-meta-essence_typeid" = 2359823; 
"x-ms-meta-expected_filesize" = 24267506; 
"x-ms-meta-framerate" = "29.97"; 
"x-ms-meta-generation" = 102; 
"x-ms-meta-height" = 288; 
"x-ms-meta-interlaced" = True; 
"x-ms-meta-video_bit_rate" = 974503; 
"x-ms-meta-width" = 512; 
"x-ms-request-id" = [[redacted]]; 
"x-ms-version" = "2014-02-14"; 
} 
1个回答

1

如果你仍需要答案,调整一些参数,如缓冲段大小和缓冲段计数,将极大地影响缓冲速度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接