音频和视频未在 Android WebView HTML5 中播放

Posted

技术标签:

【中文标题】音频和视频未在 Android WebView HTML5 中播放【英文标题】:Audio and Video not playing in Android WebView HTML5 【发布时间】:2017-06-15 06:18:50 【问题描述】:

每当在其中打开此网页时,我都无法从 android WebView 播放音频和视频。这两个链接都支持 html5。 WebView 无法正常播放音频和视频。

示例网页链接:

音频 - https://kulturpunkt.org/owner/49/group/175/record/3550

视频 - https://kulturpunkt.org/owner/49/group/175/record/3285

尝试过的解决方案:

1.之前,音频和视频链接不安全 (https),​​我们现在将其更改为安全链接 (https)。这是根据以下错误完成的

音频错误:Screenshot

I/chromium: [INFO:CONSOLE(13)] "Mixed Content: The page at 'https://kulturpunkt.org/owner/49/group/175/record/3550' was loaded over HTTPS, but requested an insecure video 'http://mm.dimu.org/multimedia/032wX1jg2tKY.mp3?mmid=032wX1jg2tKY&a=none'. This request has been blocked; the content must be served over HTTPS.", source: https://kulturpunkt.org/assets/kp.footer.2.0.19.js (13)
I/chromium: [INFO:CONSOLE(0)] "Uncaught (in promise) NotSupportedError: Failed to load because no supported source was found.", source: https://kulturpunkt.org/owner/49/group/175/record/3550 (0)

视频错误:Screenshot

I/chromium: [INFO:CONSOLE(13)] "Mixed Content: The page at 'https://kulturpunkt.org/owner/49/group/175/record/3285' was loaded over HTTPS, but requested an insecure video 'http://mm.dimu.org/multimedia/012wWXC2dbyh.mp4?mmid=012wWXC2dbyh&a=none'. This content should also be served over HTTPS.", source: https://kulturpunkt.org/assets/kp.footer.2.0.19.js 
I/chromium: [INFO:CONSOLE(0)] "Uncaught (in promise) NotSupportedError: Failed to load because no supported source was found.", source: https://kulturpunkt.org/owner/49/group/175/record/3550 (0)

2. 其次,我将音频和视频的大小减小到 7.33MB25.6MB,因为我认为大小可能不是允许媒体正确加载并在 WebView 中播放。

3.最后,我们尝试将音频和视频的编解码器更改为Android WebView支持的格式。 p>

4. Android System WebView 应用程序也从装有 Android 6.0 (M) 操作系统的设备中的 Play 商店更新。 App Version - 55.0.2883.91 (09 Dec 2016)

我尝试在具有不同操作系统的所有不同设备上对其进行测试,但 Android WebView 行为保持不变。

我不明白这里到底是什么问题。我该如何解决这个问题?

我不能使用this answer 中解释的JavascriptInterface,尽管我可以控制服务器更改和应用程序更改。我想用 WebView 的默认行为来实现它。

下面是我的 WebView 的代码:

inAppWebView = (WebView)findViewById(R.id.in_app_web_view);
inAppWebView.setWebChromeClient(new MyWebChromeClient());
inAppWebView.setWebViewClient(new WebViewClient() 

        public boolean shouldOverrideUrlLoading(WebView view, String url) 
            inAppWebView.loadUrl(webURL);
            return true;
        

        public void onLoadResource(WebView view, String url) 
            dismissProgressDialog();
        

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) 
            loadProgressDialog(InAppWebViewActivity.this);
            super.onPageStarted(view, url, favicon);
        

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) 
            dismissProgressDialog();
            super.onReceivedError(view, request, error);
        

        public void onPageFinished(WebView view, String url) 
            dismissProgressDialog();
            super.onPageFinished(view, url);
        
    );
inAppWebView.getSettings().setDomStorageEnabled(true);
inAppWebView.getSettings().setjavascriptEnabled(true);
inAppWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
inAppWebView.loadUrl(webURL);

任何建议或参考都会有所帮助。

【问题讨论】:

你找到解决这个@amrut的方法了吗? @Shubhral - 还没有找到 你有什么解决办法吗? (我只有缺少音频、视频作品的问题)。任何更新?我们使用了 50 版的 WebView 和音频作品,但一旦我们再高,它就会停止。 (但较低版本在 CSS 100% 高度等方面存在不同的问题)。期待任何信息! 【参考方案1】:

将此添加到您的清单文件中。

android:usesCleartextTraffic="true"

这在你的 webview 创建之后

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
    webView.getSettings().setMixedContentMode( 
        WebSettings.MIXED_CONTENT_ALWAYS_ALLOW );

【讨论】:

以上是关于音频和视频未在 Android WebView HTML5 中播放的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 视频未在 android webview 中播放

视频未在 Webview android (Google TV) 内播放

HTML5在android WebView中没有视频只有音频播放

Android WebView 混合内容未在 api 级别 < 21 中加载

YouTube 视频在 WebView Android 中仅在屏幕旋转时播放音频

android解决webview,页面关闭之后,视频或者音频还在播放的问题