我正在尝试在我的应用中播放Vimeo的视频。问题是,在Android 6设备上,视频会在一段时间后停止播放。在API较低的设备上,一切正常。
[MediaHTTPConnection] readAt 25182208 / 32768 => java.net.ProtocolException: unexpected end of stream and shows this in de log
[MediaPlayer] error (1, -1004)
我们现在通过Vimeo支持向他们发送电子邮件数周,但他们无法提供解决方案或可能的原因。现在经过数周的邮寄后,支持部门表示他们不支持Android,但我们已经尝试了他们的建议:
使用视频观看代替媒体播放器
我们尝试过原生Android和Xamarin Android实现
尝试下载文件=>这是有效的,但我们想要流式传输,因为一些视频超过30分钟(> 100mb)。取消注释DownLoadActivity中onCreate中的代码以测试下载。
在浏览器中一切正常。
我在We-Transfer上放置了一个测试项目,您可以在其中看到问题https://bazookas.wetransfer.com/downloads/40dadcc8a01f7ebf025345cdf88b731220170102160508/21970a
答案 0 :(得分:3)
在我的应用程序中我也使用Vimeo,但以另一种方式。 并且它在任何操作系统中都没有问题。 (适用于原生Android)
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("", "Processing webview url click...");
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
Log.i("", "Finished loading URL: " + url);
Const.disMisProgressdialog();
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
});
if(windowwidth < 480) {
webView.loadUrl("https://player.vimeo.com/video/<YOUR VEMIO ID>?player_id=player&autoplay=1&title=0&byline=0&portrait=0&api=1&maxheight=320&maxwidth=480");
}else{
webView.loadUrl("https://player.vimeo.com/video/<YOUR VEMIO ID>?player_id=player&autoplay=1&title=0&byline=0&portrait=0&api=1&maxheight=480&maxwidth=800");
}
代表
windowwidth: -
int windowwidth = getWindowManager()。getDefaultDisplay()。getWidth();
int windowheight = getWindowManager()。getDefaultDisplay()。getHeight();
答案 1 :(得分:2)
看起来您使用的网址存在问题。 你使用vimeo api中的url来获取高清文件。并且由于某种原因,android系统不允许缓存超过一定量的KB。
如果您将网址从高清更改为vimeoHLS - 用于流媒体的链接,一切正常。 它修复了我的7个android的问题,但我还没有测试过这个版本的其他版本。
找不到这个在Android 6+上不起作用的原因,但对于较低版本可以正常工作。