Android ExoPlayer寻求非常慢

时间:2014-09-09 16:23:27

标签: android video streaming

我正在从VideoView切换到ExoPlayer。我使用了GIT存储库中ExoPlayer附带的示例代码,如果我启动视频并让它播放到最后,我可以播放视频。

当我使用搜索栏来回移动时会出现问题。如果我只是点击栏并等待它寻找位置有一点延迟我可能会在日志文件中看到关于程序在主线程上做太多工作的消息。

如果我拖动搜索栏,我会看到一堆“新范围:偏移= ######”类型的消息,好像他们在向服务器发出请求之前没有在每个搜索栏移动点之间等待。可能需要很长时间,因为在最终搜索发生之前,应用程序没有响应消息,并且视频会从该位置再次播放。

我使用DefaultRendererBuilder作为视频,因为托管内容的服务器不响应SmoothStreaming或DashVod模式。

所有这一切都可以正常使用iOS项目中的标准MPMoviePlayerController,相同的视频,相同的服务器,顺利搜索开始结束,所以看起来服务器正在抛出合理的内容。

我真的希望从VideoViewer切换到ExoPlayer可以解决这些问题。我在VideoViewer中遇到了同样的问题,在那里寻找过去的缓冲区会导致它适合。至少在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 个答案:

答案 0 :(得分:0)

如果您仍然需要答案,请不要这样做,但微调一些参数(如缓冲区段大小和缓冲区段数)将极大地影响缓冲速度。