Видео Vimeo перестает играть на устройствах Android 6
Я пытаюсь воспроизвести видео из Vimeo в своем приложении. Проблема в том, что на устройствах Android 6 видео перестает играть через определенное время. На устройствах с более низким API все отлично работает.
- Время зависит от качества. Для видео предоставленного ниже 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, но мы пробовали их предложения:
- Используйте перенаправленный и непереписанный URL
http://player.vimeo.com/external/185069251.hd.mp4?s=fd7b4178a59166b3f636f2e48f1d49b99db66ed2&profile_id=174 [Перенаправленный URL]
https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/01/2013/7/185069251/610514667.mp4?token=586a9287_0xbb25f73405c612b30e0c64dc4c3a169e30137f84 [Не перенаправленный URL]
-
Используйте просмотр видео вместо медиаплеера
-
Мы пробовали собственный Android и реализацию Xamarin Android
-
Попробуйте загрузить файл = > это работает, но мы хотим передать его, потому что какое-то видео длится более 30 минут ( > 100 Мб). Раскомментируйте код в onCreate в DownLoadActivity для тестирования загрузки.
В браузере все работает нормально.
Я разместил тестовый проект на We-Transfer, где вы можете увидеть проблему https://bazookas.wetransfer.com/downloads/40dadcc8a01f7ebf025345cdf88b731220170102160508/21970a
Ответы
Ответ 1
HI в моем приложении Я также использую 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");
}
для
ширина окна: -
int windowwidth = getWindowManager(). getDefaultDisplay(). getWidth(); int windowheight = getWindowManager(). getDefaultDisplay(). getHeight();
Ответ 2
Похож на проблему с URL-адресом, который вы используете.
Вы используете url из vimeo api для файла HD. И по какой-то причине система Android не позволяет кэшировать больше, чем некоторое количество КБ.
Если вы измените URL-адрес от HD до vimeoHLS - ссылку для потоковой передачи, все будет хорошо.
Он исправил проблему для моего 7-го Android, но я еще не тестировал это для еще одной версии.
Невозможно найти причину, почему это не работает на Android 6+, но отлично работает для более низких версий.