Vimeo视频停止在Android 6设备上播放

时间:2017-01-02 16:10:15

标签: android vimeo vimeo-android

我正在尝试在我的应用中播放Vimeo的视频。问题是,在Android 6设备上,视频会在一段时间后停止播放。在API较低的设备上,一切正常。

  • 时间取决于质量。对于下面提供的网址的视频播放一定的分钟(1到3)。视频质量如何降低的持续时间。
  • 1到3分钟后,媒体播放器抛出ProtocolException。该应用程序不会崩溃,但视频会在播放缓冲的视频片段时冻结。 [MediaHTTPConnection] readAt 25182208 / 32768 => java.net.ProtocolException: unexpected end of stream and shows this in de log
  • 在视频播放30秒(缓冲)之后,应用程序输出此[MediaPlayer] error (1, -1004)

我们现在通过Vimeo支持向他们发送电子邮件数周,但他们无法提供解决方案或可能的原因。现在经过数周的邮寄后,支持部门表示他们不支持Android,但我们已经尝试了他们的建议:

  • 使用重定向和未重定向的网址

http://player.vimeo.com/external/185069251.hd.mp4?s=fd7b4178a59166b3f636f2e48f1d49b99db66ed2&profile_id=174 [重定向的网址]

https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/01/2013/7/185069251/610514667.mp4?token=586a9287_0xbb25f73405c612b30e0c64dc4c3a169e30137f84 [未重定向的网址]

  • 使用视频观看代替媒体播放器

  • 我们尝试过原生Android和Xamarin Android实现

  • 尝试下载文件=>这是有效的,但我们想要流式传输,因为一些视频超过30分钟(> 100mb)。取消注释DownLoadActivity中onCreate中的代码以测试下载。

在浏览器中一切正常。

我在We-Transfer上放置了一个测试项目,您可以在其中看到问题https://bazookas.wetransfer.com/downloads/40dadcc8a01f7ebf025345cdf88b731220170102160508/21970a

2 个答案:

答案 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+上不起作用的原因,但对于较低版本可以正常工作。