Веб-просмотр Android не может отображать видео в YouTube с помощью iframe
Речь идет о загрузке видеороликов YouTube с использованием последнего встроенного формата (iframe) внутри webview.
Пример формата вставки iframe
Проверьте код на устройствах Android 2.3.3 и 3.2 (HTC Desire & Asus Transformer), веб-просмотр будет показывать только черный прямоугольник.
- Встроенное видео Youtube: функция автозапуска не работает в iphone
- Как остановить воспроизведение видео на YouTube в Android-браузере?
- Проверьте, воспроизводится ли видео YouTube и запускает скрипт
- Как получить фид комментариев, введенных через поле «чат» во время прямой трансляции YouTube?
- Просмотр видео Youtube в Thunderbird
Я пробовал аналогичную вставку из vimeo
В 2.3 видео воспроизводится правильно
В 3.2 черный прямоугольник вспыхнул и исчез, область iframe пуста.
Наконец, если используется старый формат вставки (с использованием тега объекта), видео отображается правильно внутри webview в 2.3.3 и 3.2.
Я проверил связанные вопросы и добавил
android:hardwareAccelerated="true"
в теге приложения и / или активности, но по-прежнему нет видео в обоих устройствах 2.3 и 3.2.
Это большая проблема, потому что больше веб-сайтов теперь использует новейший формат (iframe) для встраивания своих видео в YouTube. Android / Youtube Team, пожалуйста, взгляните на эту проблему.
- Как остановить людей от загрузки онлайн-видео для офлайн-воспроизведения?
- Как проверить, транслируется ли канал YouTube в прямом эфире
- Код для загрузки видео с Youtube на Java, Android
- Проблема с загрузкой видео YouTube с помощью Free Download Manager
- Как я могу автовоспроизвести видео с помощью нового стиля встраиваемого кода для Youtube?
- API YouTube для получения всех видео на канале
- Встраивание YouTube дает ошибку «с ограниченным воспроизведением на определенных сайтах», несмотря на метаданные API, указывающие на то, что
- Видео YouTube не воспроизводится в WebView
Android-браузеры абсолютно бесполезны, что происходит с воспроизведением видео и вложением. Он просто не работает через устройства. Попытка заставить его работать – это просто трата вашего времени. Мое предложение состоит в том, что вы не пытаетесь включить а просто предоставляете миниатюру видео, которое напрямую ссылается на страницу YouTube или файл h264.
Предыдущее обсуждение с возможным решением.
Оптимизация WebViews на Android в Google Reader-esque
Если вы хотите воспроизводить видео в своем WebView
вам НЕОБХОДИМО загружать данные базовым URL-адресом!
Не делайте этого:
mContentWebView.loadDataWithBaseURL(null, webViewContentString, "text/html", "UTF-8", null);
ДЕЙСТВУЙТЕ ВЕСЬ :
//veryVeryVery important for playing the videos! mContentWebView.loadDataWithBaseURL(theBaseUrl, webViewConentString, "text/html", "UTF-8", null);
Базовый URL-адрес будет чем-то вроде «оригинального» URL-адреса того, что вы показываете в своем WebView
. Итак, скажем, вы создаете читателя WebView's
базовый url WebView's
URL-адресом оригинальной истории.
Удачи!
Также не забудьте настроить свой WebView … Так вот …
mContentWebView.setWebChromeClient(new WebChromeClient()); mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON); mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); mContentWebView.setWebViewClient(new WebViewClient()); mContentWebView.getSettings().setJavaScriptEnabled(true);
Вам необходимо включить аппаратное ускорение в манифесте (доступно только на SDK 14 и выше).
Ex. Аппаратное ускорение включено:
...
Поддержка видео HTML5
Чтобы поддерживать встроенный HTML5-видео в вашем приложении, вам необходимо включить аппаратное ускорение и установить WebChromeClient .
http://developer.android.com/reference/android/webkit/WebView.html
(Надеюсь, что это поможет кому-то)
Я бы предложил использовать некоторый код для обнаружения среды пользователя … использовать код iframe только для ios-устройств (iphone, ipod, ipad) и использовать старый код для всех остальных.
Этот код идеально подходит для разных устройств
webView.setInitialScale(1); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setAllowFileAccess(true); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); webView.setWebViewClient(new WebViewClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels; Log.e(SimpleBillsConstants.SIMPLE_BILLS, width + "-" + height); String data_html = " "; webView.loadDataWithBaseURL("http://vimeo.com", data_html, "text/html", "UTF-8", null);
Это сработало для меня – код открывает сайт YouTube и может воспроизводить его видео в WebView:
mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); String frameVideo = "Youtube video ..
"; mWebView.loadData(frameVideo, "text/html", "utf-8"); mWebView.loadUrl("http://www.youtube.com/"); mWebView.setWebViewClient(new WebViewClient());