You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android WebView加载MP4视频仅播音频、画面黑屏问题求助

针对WebView加载MP4仅音频播放、视频黑屏的解决方案

我之前也踩过WebView播放MP4黑屏只出声音的坑,结合你提供的Manifest信息(已经配置了INTERNET权限),给你列几个大概率能解决的方向,建议按顺序尝试:

  • 调整WebView硬件加速设置
    硬件加速冲突是这类黑屏问题的高发原因,你可以先试试给WebView单独关闭硬件加速:

    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    

    或者在AndroidManifest的对应Activity标签里配置硬件加速(注意是Activity级别,不是全局Application):

    <activity android:name=".MainActivity" android:hardwareAccelerated="true">
    

    不同设备的兼容性不一样,两种配置都测试下。

  • 补全WebView媒体相关Settings配置
    很多视频播放依赖JS和本地存储,确保你开启了必要的设置:

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true); // 多数网页视频播放器依赖JS
    webSettings.setDomStorageEnabled(true); // 开启DOM存储支持
    webSettings.setMediaPlaybackRequiresUserGesture(false); // 如果视频是自动播放,需要关闭手势要求
    webSettings.setAllowFileAccess(true);
    
  • 验证视频编码格式兼容性
    Android WebView只支持H.264(AVC)视频编码 + AAC音频编码的MP4文件。你可以用FFmpeg工具查看视频编码信息:

    ffmpeg -i your_video.mp4
    

    如果编码不符合要求,需要转码后再测试。

  • 排查系统WebView版本与网络限制

    • 不同Android版本的WebView内核差异极大,尤其是Android 7.0以下设备,你可以打印当前WebView版本确认:
      Log.d("WebViewVersion", WebView.getCurrentWebViewPackage().versionName);
      
      旧版本建议引导用户更新「Android System WebView」应用。
    • 如果你用的是HTTP明文视频链接,Android 10及以上需要在Manifest的Application标签里添加:
      android:usesCleartextTraffic="true"
      
  • 排除视频源本身问题
    先用Android原生VideoView加载同一个MP4链接测试:如果VideoView也黑屏,说明是视频源的问题;如果VideoView能正常播放,那问题肯定出在WebView的配置上。


内容的提问来源于stack exchange,提问作者Strepk

火山引擎 最新活动