Невозможно просмотреть видео в веб-обозревателе Android

На моих веб-страницах есть видеофайлы с использованием видеотег html5.

У меня есть встроенный веб-сервер (NanoHTTPD), который служит для моего файла из файловой системы. Все остальное работает, но когда я нажимаю на воспроизведение видео в формате HTML5. Он дает следующую ошибку и видео не воспроизводится

09-29 20:38:36.620: D/HTML5VideoInline(11532): HTML5VideoInline created 09-29 20:38:36.625: V/MediaPlayer(11532): setVideoSurfaceTexture 09-29 20:38:36.625: V/MediaPlayer-JNI(11532): reset 09-29 20:38:36.625: V/MediaPlayer(11532): reset 09-29 20:38:36.625: I/MediaPlayer(11532): path is null 09-29 20:38:36.640: D/MediaPlayer(11532): setDataSource IOException happend : 09-29 20:38:36.640: D/MediaPlayer(11532): java.io.FileNotFoundException: No content provider: http://10.207.114.115:8765/SLC/Book3_html/Book3/book/BO/demo.mp4 09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:713) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:617) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:954) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoView.prepareDataCommon(HTML5VideoView.java:326) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoView.prepareDataAndDisplayMode(HTML5VideoView.java:363) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoInline.prepareDataAndDisplayMode(HTML5VideoInline.java:72) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoViewProxy$VideoPlayer.play(HTML5VideoViewProxy.java:289) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:465) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.os.Handler.dispatchMessage(Handler.java:99) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.os.Looper.loop(Looper.java:137) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.app.ActivityThread.main(ActivityThread.java:5306) 09-29 20:38:36.640: D/MediaPlayer(11532): at java.lang.reflect.Method.invokeNative(Native Method) 09-29 20:38:36.640: D/MediaPlayer(11532): at java.lang.reflect.Method.invoke(Method.java:511) 09-29 20:38:36.640: D/MediaPlayer(11532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 09-29 20:38:36.640: D/MediaPlayer(11532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 09-29 20:38:36.640: D/MediaPlayer(11532): at dalvik.system.NativeStart.main(Native Method) 09-29 20:38:36.640: D/MediaPlayer(11532): Couldn't open file on client side, trying server side 

Медиаплеер переходит к Content resolver, который пытается загрузить только файлы схемы контента. Мои uris имеют http-схему.

Мой веб-просмотр простой.

 WebSettings webViewSettings = webView.getSettings(); webViewSettings.setJavaScriptEnabled(true); //webViewSettings.setJavaScriptCanOpenWindowsAutomatically(false); //webViewSettings.setSupportMultipleWindows(true); webViewSettings.setPluginState(PluginState.ON); //webViewSettings.setMediaPlaybackRequiresUserGesture(false); webViewSettings.setAllowFileAccess(true); webView.setSoundEffectsEnabled(true); //webViewSettings.setSupportZoom(true); //WebView.setWebContentsDebuggingEnabled(true); webView.setWebViewClient(new CustomWebViewClient()); webView.setWebChromeClient(mWebChromeClient); 

Ура, Саурав

Solutions Collecting From Web of "Невозможно просмотреть видео в веб-обозревателе Android"

Вам нужно использовать loadDataWithBaseURL.

См. Это: https://stackoverflow.com/a/24592012/850347

Не делайте этого:

 mContentWebView.loadDataWithBaseURL(null, webViewContentString, "text/html", "UTF-8", null); 

ДЕЛАТЬ ЭТО ВМЕСТО:

 //veryVeryVery important for playing the videos! mContentWebView.loadDataWithBaseURL(theBaseUrl, webViewConentString, "text/html", "UTF-8", null); 

Кажется, у вас есть проблема с установкой setDataSource (), убедитесь, что вы вызываете

  SetDataSource (String path)