朱贝文 2025-09-20 11:33 采纳率: 100%
浏览 19
已结题

Unity打包PicoAVProVideo播放多个视频有问题

Unity打包Pico平台使用AVProVideo播放视频,使用代码OpenMedia打开视频人物走过去播放视频,一共18个视频,总是随机一两个视频播放不出来.使用for循环打开视频的话,总是最后两个无法播放,测试MediaOpened显示true,有什么解决方案?

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-09-20 11:33
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    根据你的描述,可能的原因是:

    1. 多线程问题: Unity中的多线程可能导致资源竞争等问题,这可能导致某些视频无法播放。
    2. 资源释放问题: 当视频播放完成后,相关资源未及时释放,这可能导致下一个视频无法播放。

    这里提供一个核心解决方案:

    使用Async/Await

    当打开一个视频时,使用异步等待(Async/Await)方式播放视频,等待上一个视频播放完成后,再打开下一个视频。代码示例:

    using UnityEngine;
    using AVProVideo;
    
    public class VideoPlayer : MonoBehaviour
    {
        private string[] videoPaths = new string[] { "视频1.mp4", "视频2.mp4", ..., "视频18.mp4" };
    
        private IEnumerator PlayVideos()
        {
            foreach (var videoPath in videoPaths)
            {
                OpenMedia(videoPath).Wait();
            }
        }
    
        private async void OpenMedia(string videoPath)
        {
            // 打开视频
            var media = MediaManager.GetMedia();
    
            // 等待视频播放完成
            await media.PlaybackTimeAsync(1, 1);
        }
    }
    

    这种方式可以防止多线程问题和资源竞争问题。

    注意: 上述代码示例仅为核心部分,请根据实际需要在Unity项目中适当调整和扩展代码。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 创建了问题 9月20日