2017-01-02 11 views
15

Я пытаюсь воспроизвести видео из Vimeo в своем приложении. Проблема в том, что на устройствах Android 6 видео перестает играть через определенное время. На устройствах с более низким API все отлично.Vimeo видео перестает играть на устройствах Android 6

  • Время зависит от качества. Для видео предоставленного ниже url играет несколько минут (от 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 [Перенаправление URL] перенаправленному и unredirected URL,

https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/01/2013/7/185069251/610514667.mp4?token=586a9287_0xbb25f73405c612b30e0c64dc4c3a169e30137f84 [Не перенаправлены URL]

  • Используйте просмотр видео вместо медиаплеера

  • Мы пытались родной Android и реализацию Xamarin Android

  • Попытка загрузить файл => это работает, но мы хотим, чтобы поток, потому что некоторые видео являются более чем за 30 минут (> 100mb). Раскомментируйте код в onCreate в DownLoadActivity для тестирования загрузки.

В браузере все прекрасно работает.

Я поставил TestProject на We-Transfer, где вы можете увидеть проблему https://bazookas.wetransfer.com/downloads/40dadcc8a01f7ebf025345cdf88b731220170102160508/21970a

+0

Вы нашли решение? – Kotsu

+0

@ Kotsu Мы использовали Android ExoPlayer. Этот игрок работал нормально. https://developer.android.com/guide/topics/media/exoplayer.html –

+0

Я сделал то же самое. Я должен был решить эту проблему в старом приложении. Я мог бы исправить это с ответом, который я написал ниже, но проще было просто переписать модуль видеоплеера. – Kotsu

ответ

3

HI в моем приложении я также использую Vimeo, но по-другому. И он отлично работает без проблем в любой ОС. (Для 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"); 
     } 

для

WindowWidth: -..
INT WindowWidth = getWindowManager() getDefaultDisplay() GetWidth();
int windowheight = getWindowManager(). GetDefaultDisplay(). GetHeight();

+0

У меня есть собственный mediacontroller с конкретным расположением и функциональностью, которые могут управляться из основного (бизнес-уровня) моего приложения. Возможно, решение на основе webview работает, но это не вариант для меня или моего клиента. Мне нужно решение на основе медиапланера. Тем не менее, спасибо за усилия. –

2

Похож, что проблема с URL-адресом, который вы используете. Вы используете url из vimeo api для файла HD. И по какой-то причине система Android не позволяет кэшировать больше, чем некоторое количество КБ.

Если вы изменили URL-адрес от HD до vimeoHLS - ссылка для потоковой передачи, все работает нормально. Он исправил проблему для моего 7-го Android, но я еще не тестировал это для еще одной версии.

Невозможно найти причину, по которой это не работает на Android 6+, но отлично подходит для более низких версий.