【发布时间】:2016-06-28 17:34:16
【问题描述】:
我正在从 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";
}
【问题讨论】: