Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vimeo video stops playing on Android 6 devices

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

like image 576
Robin Bruneel Avatar asked Jan 02 '17 16:01

Robin Bruneel


People also ask

Why are my Vimeo videos not playing?

Browser cache that has not been cleared and browser that is old and outdated. If your browser is not updated and you have an older browser you could face problems watching Vimeo videos. 1. Vimeo needs browsers that can decode videos in a player that has HTML5 functionality.

Why does Vimeo keep freezing?

Frequent buffering can occur when the viewer's Internet bandwidth does not support playback of the selected video quality. Try switching to “Auto” in the quality menu (the default), if available. If “Auto” is not available, switch to one of the lower quality options.

Does Vimeo work on Android?

The Vimeo Android mobile app is compatible with phones and tablets running Android 7.0 (Nougat) and newer. We do our best to support most Android mobile devices, but due to the open nature of Android, we're unable to comprehensively test the app in all environments and markets.


1 Answers

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();

like image 61
Arpan24x7 Avatar answered Oct 04 '22 07:10

Arpan24x7