You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity导出Android库集成React Native后Quad对象视频无法播放求助

Unity导出Android库集成React Native后Video Player无法播放外部URL视频的排查与解决

问题场景

我搭建了一个Unity AR场景,包含以下层级对象:

ARCamera
ImageTarget
Quad
Video Player

将Video Player的源设置为外部MP4文件的URL,Quad绑定到Video Player的Target texture,在Unity编辑器内运行完全正常,但导出为Android库集成到React Native后,Quad仅显示原始白色,视频无法播放。

环境配置:

  • Unity版本:2022.3.19f1
  • React Native版本:0.73.5
  • Android版本:13

已尝试操作:

  • 确认视频URL可正常访问
  • 检查Android清单文件的视频播放权限
  • 验证Unity与React Native的集成流程无误

排查思路与解决方案

1. 检查Android网络权限与明文流量限制

  • Android 9及以上默认禁止明文HTTP请求,若视频URL为HTTP而非HTTPS,需在AndroidManifest.xml的<application>标签内添加:
    android:usesCleartextTraffic="true"
    
    也可配置网络安全文件指定允许的域名(更安全)。
  • 确保已添加必要网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

2. 调整Video Player初始化时机

  • 导出Android库后,Video Player过早初始化可能与React Native线程冲突,建议在AR识别到目标后再启动播放,比如在Unity脚本中添加:
    using UnityEngine;
    using UnityEngine.Video;
    
    public class VideoController : MonoBehaviour
    {
        public VideoPlayer videoPlayer;
        public string videoUrl = "你的外部MP4地址";
    
        void OnTrackingFound()
        {
            videoPlayer.url = videoUrl;
            videoPlayer.Play();
        }
    }
    
  • 务必将Video Player的PlayOnAwake设为false,避免提前触发播放。

3. 验证视频编码兼容性

  • Android对MP4编码有严格要求,需确保视频采用H.264(AVC)视频编码+AAC音频编码,分辨率和码率适配设备支持范围。可通过ffmpeg转换格式:
    ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline -c:a aac -b:a 128k output_compatible.mp4
    

4. 动态绑定纹理避免序列化丢失

  • 导出库时可能出现纹理关联丢失,可在Unity脚本中动态赋值:
    void Start()
    {
        Renderer quadRenderer = GetComponentInChildren<Renderer>();
        videoPlayer.targetTexture = new RenderTexture(1920, 1080, 24);
        quadRenderer.material.mainTexture = videoPlayer.targetTexture;
    }
    

5. 通过Android日志定位具体错误

  • 使用adb logcat过滤Unity和Video相关日志,快速定位问题:
    adb logcat -s Unity VideoPlayer
    
    常见错误包括网络请求失败、纹理创建失败、编码不支持等,根据日志针对性修复。

6. 处理React Native-Unity视图生命周期

  • React Native中的Unity视图可能存在暂停/恢复状态,需监听视图激活事件,在Unity端重新触发视频播放。例如React Native发送激活信号,Unity接收后调用videoPlayer.Play()。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:16:24