Веб-просмотр Android не может отображать видео в YouTube с помощью iframe

Речь идет о загрузке видеороликов YouTube с использованием последнего встроенного формата (iframe) внутри webview.

Пример формата вставки iframe

 

Проверьте код на устройствах Android 2.3.3 и 3.2 (HTC Desire & Asus Transformer), веб-просмотр будет показывать только черный прямоугольник.

Я пробовал аналогичную вставку из vimeo

  

В 2.3 видео воспроизводится правильно
В 3.2 черный прямоугольник вспыхнул и исчез, область iframe пуста.

Наконец, если используется старый формат вставки (с использованием тега объекта), видео отображается правильно внутри webview в 2.3.3 и 3.2.

Я проверил связанные вопросы и добавил

 android:hardwareAccelerated="true" 

в теге приложения и / или активности, но по-прежнему нет видео в обоих устройствах 2.3 и 3.2.

Это большая проблема, потому что больше веб-сайтов теперь использует новейший формат (iframe) для встраивания своих видео в YouTube. Android / Youtube Team, пожалуйста, взгляните на эту проблему.

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());
  • Как отключить видеоролики YouTube от автоматического воспроизведения?
  • Самый простой способ добавить фотографии в MP3-аудио саундтрек
  • Проводка встроенной видеосвязи с использованием API-интерфейса Facebook Graph
  • Как я могу извлечь аудио из видео YouTube?
  • Есть ли способ контролировать Youtube через мультимедийные клавиши на клавиатуре?
  • YouTube не работает на Ubuntu 10.04
  • Как использовать распознавание речи Google Google без загрузки видео на YouTube?
  • Chrome / OSX: розовые пятна на изображении YouTube
  • Регулярное выражение для ссылок на YouTube
  • Youtube не нравится некоторые видеоролики
  • Как остановить сайт для переопределения коротких сокращений на клавиатуре
  • Interesting Posts

    Преобразование растровых изображений в один многостраничный TIFF-образ в .NET 2.0

    Могу ли я установить приложение Windows 8 прямо с веб-сайта магазина приложений?

    Плохая производительность и странное поведение с момента обновления Windows 10 Creators

    Программа запускается и появляется в диспетчере задач, но затем выделяет половину моего процессора и сбои

    Добавьте горизонтальную линию к сюжету и легенде в ggplot2

    Использование функции в Sass возвращает строку, содержащую имя функции, а не результат

    Skype 4.3 без PulseAudio, только ALSA. Любые варианты?

    Как изменить значки на жестком диске в Windows XP

    Могу ли я обновить видеокарту Dell Studio XPS 16?

    Excel – тестовые 3 ячейки

    В чем разница между минимальной версией SDK версии / целевой версии SDK и компиляцией версии SDK?

    База данных SQLite: только для чтения

    Доступ к объектам анонимного типа C #

    Как открыть чистый терминал в Mac OS X Lion?

    Невозможно загрузить файлы с использованием рассола и нескольких модhive

    Давайте будем гением компьютера.