需要在 videoview 中仅通过缓冲而不首先下载完整视频来播放视频。有这方面的图书馆吗?
Need to play video in videoview only by buffering it without downloading full video at first. Is there any library for this?
我有一个项目处理在 videoview 中播放视频。视频播放良好,没有问题。问题是视频在完全下载后正在 videoview 加载。所以它需要一个初始时间来启动视频。这对我来说是个大问题,我需要一个解决方案或任何适合缓冲视频 url(20%)并在不完全加载的情况下播放的库。
videoView.setOnPreparedListener(
new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
progress_bar.setVisibility(View.GONE);
if (mCurrentPosition > 0) {
videoView.seekTo(mCurrentPosition);
} else {
videoView.seekTo(1);
}
videoView.start();
}
});
如评论中所述,ExoPlayer 通常是在 Android 上播放视频的好主意,因此值得考虑使用它。
然而,对于您的特定问题,您可能需要查看服务器端,特别是确保您的服务器接受范围请求,并确保视频设置为快速启动(如果是 MP4)- 这会移动元数据信息到视频的开头而不是结尾。
您可以在此处找到有关范围请求的更多信息,以及如何检查服务器是否接受它们的示例:https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
curl -I http://i.imgur.com/z4d4kWk.jpg
HTTP/1.1 200 OK
...
Accept-Ranges: bytes
Content-Length: 146515
大多数服务器确实接受它们,所以如果您发现它不接受,则可能只是配置问题。
要移动 mp4 'MooV atom'、元数据头信息,有很多工具可以让您执行此操作,包括开源手刹工具(查看 'web optimised'复选框):
我有一个项目处理在 videoview 中播放视频。视频播放良好,没有问题。问题是视频在完全下载后正在 videoview 加载。所以它需要一个初始时间来启动视频。这对我来说是个大问题,我需要一个解决方案或任何适合缓冲视频 url(20%)并在不完全加载的情况下播放的库。
videoView.setOnPreparedListener(
new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
progress_bar.setVisibility(View.GONE);
if (mCurrentPosition > 0) {
videoView.seekTo(mCurrentPosition);
} else {
videoView.seekTo(1);
}
videoView.start();
}
});
如评论中所述,ExoPlayer 通常是在 Android 上播放视频的好主意,因此值得考虑使用它。
然而,对于您的特定问题,您可能需要查看服务器端,特别是确保您的服务器接受范围请求,并确保视频设置为快速启动(如果是 MP4)- 这会移动元数据信息到视频的开头而不是结尾。
您可以在此处找到有关范围请求的更多信息,以及如何检查服务器是否接受它们的示例:https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
curl -I http://i.imgur.com/z4d4kWk.jpg
HTTP/1.1 200 OK
...
Accept-Ranges: bytes
Content-Length: 146515
大多数服务器确实接受它们,所以如果您发现它不接受,则可能只是配置问题。
要移动 mp4 'MooV atom'、元数据头信息,有很多工具可以让您执行此操作,包括开源手刹工具(查看 'web optimised'复选框):