Vimeo video stops playing on Android 6 devices

Question

I'm trying to play video's from Vimeo in my app. The problem is that on Android 6 devices the video stops playing after a certain time. On devices with a lower API everything plays fine.

  • The time depends on the quality. For the video of the provided url's below plays a certain minutes (1 to 3). How lower the video quality how longer it keeps playing.
  • After 1 to 3 minutes the mediaplayer throws an ProtocolException. The app does not crash on this but the video freezes when the buffered video piece is played. [MediaHTTPConnection] readAt 25182208 / 32768 => java.net.ProtocolException: unexpected end of stream and shows this in de log
  • After the exception the video plays 30 seconds (buffered), then the application outputs this [MediaPlayer] error (1, -1004)

We're emailing for weeks now with Vimeo Support but they can't provide a solution or a possible cause. Now after weeks of mailing the support desk says that they're not supporting Android, but we've tried their suggestions:

  • Use the redirected and unredirected url's

http://player.vimeo.com/external/185069251.hd.mp4?s=fd7b4178a59166b3f636f2e48f1d49b99db66ed2&profile_id=174 [Redirected URL]

https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/01/2013/7/185069251/610514667.mp4?token=586a9287_0xbb25f73405c612b30e0c64dc4c3a169e30137f84 [Not redirected URL]

  • Use a video view instead of a mediaplayer

  • We've tried a native Android and a Xamarin Android implementation

  • Try to download the file => this works but we want to stream because some video's are longer then 30 minutes (>100mb). Uncomment the code in the onCreate in the DownLoadActivity to test downloading.

In the browser everything works fine.

I've placed a testproject on We-Transfer where you can see the problem https://bazookas.wetransfer.com/downloads/40dadcc8a01f7ebf025345cdf88b731220170102160508/21970a


Show source
| android   | vimeo   | vimeo-android   2017-01-02 17:01 1 Answers

Answers ( 1 )

  1. 2017-01-09 11:01

    HI in my app I'm also using Vimeo but in another way. And it' working fine without issue in any OS. (For Native 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");
            }
    

    for

    windowwidth :-
    int windowwidth = getWindowManager().getDefaultDisplay().getWidth();
    int windowheight = getWindowManager().getDefaultDisplay().getHeight();

◀ Go back