Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vimeo视频停止在Android 6设备上播放_Android_Vimeo_Vimeo Android - Fatal编程技术网

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

Vimeo视频停止在Android 6设备上播放,android,vimeo,vimeo-android,Android,Vimeo,Vimeo Android,我正在尝试在我的应用程序中播放Vimeo的视频。问题是在安卓6设备上,视频在一段时间后停止播放。在API较低的设备上,一切都很好 时间取决于质量。对于提供的url的视频,下面播放一定的时间(1到3分钟)。视频质量有多低,播放时间有多长 1到3分钟后,mediaplayer抛出一个ProtocolException。应用程序不会因此崩溃,但在播放缓冲视频片段时,视频会冻结[MediaHTTPConnection]读取地址25182208/32768=>java.net.ProtocolExcep

我正在尝试在我的应用程序中播放Vimeo的视频。问题是在安卓6设备上,视频在一段时间后停止播放。在API较低的设备上,一切都很好

  • 时间取决于质量。对于提供的url的视频,下面播放一定的时间(1到3分钟)。视频质量有多低,播放时间有多长
  • 1到3分钟后,mediaplayer抛出一个ProtocolException。应用程序不会因此崩溃,但在播放缓冲视频片段时,视频会冻结<代码>[MediaHTTPConnection]读取地址25182208/32768=>java.net.ProtocolException:意外的流结束,并在de日志中显示
  • 异常发生后,视频播放30秒(缓冲),然后应用程序输出此
    [MediaPlayer]错误(1,-1004)
我们已经向Vimeo支持部门发送了数周的电子邮件,但他们无法提供解决方案或可能的原因。经过几周的邮寄,支持人员表示他们不支持Android,但我们尝试了他们的建议:

  • 使用重定向和未重定向url的
[重定向的URL]

[未重定向URL]

  • 使用视频视图而不是mediaplayer

  • 我们已经尝试了本地Android和Xamarin Android实现

  • 尝试下载文件=>这可以工作,但我们希望流式播放,因为有些视频的长度超过30分钟(>100mb)。取消对DownLoadActivity中onCreate中的代码的注释,以测试下载

在浏览器中,一切正常


我已经在We Transfer上放置了一个测试项目,您可以在我的应用程序中看到问题,我也在使用Vimeo,但方式不同。 而且它在任何操作系统中都可以正常工作。(适用于本机Android)

webView.setWebViewClient(新的WebViewClient(){
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
Log.i(“,”正在处理webview url单击…);
view.loadUrl(url);
返回true;
}
公共void onPageFinished(WebView视图,字符串url){
Log.i(“,”已完成加载URL:“+URL”);
常量disisProgressDialog();
}
@凌驾
public void onLoadResource(WebView视图,字符串url){
super.onLoadResource(视图、url);
}
});
如果(窗宽<480){
webView.loadUrl(“https://player.vimeo.com/video/?player_id=player&autoplay=1&title=0&byline=0&portrait=0&api=1&maxheight=320&maxwidth=480");
}否则{
webView.loadUrl(“https://player.vimeo.com/video/?player_id=player&autoplay=1&title=0&byline=0&portrait=0&api=1&maxheight=480&maxwidth=800");
}
为了

窗口宽度:-
int windowwidth=getWindowManager().getDefaultDisplay().getWidth()
int windowheight=getWindowManager().getDefaultDisplay().getHeight()


看起来您使用的url有问题。 对于HD文件,您使用VimeoAPI中的url。由于某些原因,android系统不允许缓存超过一定数量的KB

如果您将url从HD更改为vimeoHLS-link以进行流式传输,那么一切都可以正常工作。 它解决了我的7安卓系统的问题,但我还没有在另一个版本上测试它


找不到这在Android 6+上不起作用的原因,但在较低版本上效果很好

我有一个自己的mediacontroller,它具有特定的布局和功能,可以从应用程序的核心(业务层)进行控制。也许基于webview的解决方案可行,但这不是我或我的客户的选择。我需要一个基于mediaplayer的解决方案。不过谢谢你的努力。你找到解决方案了吗?@Kotsu我们已经使用了Android ExoPlayer。这名球员打得很好。我也这么做了。我必须在旧应用程序中修复此问题。我可以用我在下面发布的答案来修复它,但更简单的解决方案是重写视频播放器模块。
 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");
        }