首页 > 解决方案 > 如何在 UNITY3D 的 AR 核心会话期间从 url 加载视频?

问题描述

在使用 AR 核心进行增强现实会话期间尝试从 url 加载视频时,我一直面临挑战。

以前我一直在使用本地放置在文件夹中的视频,但我想优化应用程序的大小,这就是我需要使用 URL 的原因。

这是我一直用于不想播放视频的 URL 的代码:

using UnityEngine;
using UnityEngine.Video;
using GoogleARCore;


public class ScreenV : MonoBehaviour
{

[SerializeField] string[] _VideoURLs;
public AugmentedImage Image;
private VideoPlayer videoPlayer;



void Start()
{
    videoPlayer = GetComponent<VideoPlayer>();
    videoPlayer.source = VideoSource.Url;
    
}

void Update()
{
    if (Session.Status != SessionStatus.Tracking) 
        return;

    if (Image == null || Image.TrackingState != TrackingState.Tracking)
    {

        return;
    }

    
    if (Image != null || Image.TrackingState == TrackingState.Tracking)
        {
        videoPlayer.url = _VideoURLs[Image.DatabaseIndex];
        videoPlayer.Play();
        }
    
    

    transform.localScale = new Vector3(Image.ExtentX, Image.ExtentZ, 1);
}

以前,我一直在使用类似的代码行在增强现实中播放视频剪辑,这些都没有问题。

public class ScreenV : MonoBehaviour
{

[SerializeField] VideoClip[] _Clips;
public AugmentedImage Image;
private VideoPlayer videoPlayer;



void Start()
{
    videoPlayer = GetComponent<VideoPlayer>();
    videoPlayer.source = VideoSource.VideoClip;
    
}

void Update()
{
    if (Session.Status != SessionStatus.Tracking) 
        return;

    if (Image == null || Image.TrackingState != TrackingState.Tracking)
    {

        return;
    }

    
    if (Image != null || Image.TrackingState == TrackingState.Tracking)
        {
        videoPlayer.clip = _Clips[Image.DatabaseIndex];
        videoPlayer.Play();
        }
    
    

    transform.localScale = new Vector3(Image.ExtentX, Image.ExtentZ, 1);
}

我试图在开始阶段获取 url,它工作正常,所以 AR 会话可以从 url 播放视频。

void Start()
{
    videoPlayer = GetComponent<VideoPlayer>();
    videoPlayer.source = VideoSource.Url;
    videoPlayer.url = _VideoURLs[5];
    
}

但是,我需要根据跟踪的图像来索引 URL,因此它需要处于更新循环中。

有谁知道为什么 AR 会话不想在更新循环中从 url 加载视频?

先感谢您

标签: c#unity3dvideo-streamingarcore

解决方案


推荐阅读