播放视频时出现问题

时间:2019-05-22 05:15:59

标签: android unity3d arcore

我遵循了github上用于ARCore unity的AugmentedImageController上列出的示例代码:https://github.com/google-ar/arcore-unity-sdk/blob/master/Assets/GoogleARCore/Examples/AugmentedImage/Scripts/AugmentedImageExampleController.cs。即使按照本示例中的代码进行操作,它也不会播放视频播放器中的视频,如下面的AugmentedImageVisualizer代码所示:

如果我将AugmentedImageVirtulizer拖放到场景上并放置playOnAwake,则会播放视频。但是,当我关闭playOnAwake并将应用程序发送到手机,然后将相机指向增强后的图像(在我的情况下为空的奶瓶标签)时,它无法播放。我想要从奶瓶中冒出来的东西,例如鬼魂。

    using GoogleARCore;
    using UnityEngine;
    using UnityEngine.Video;

    public class AugmentedImageVisualizer : MonoBehaviour {

    private VideoPlayer vidPlayer;
    public VideoClip[] vidClips;
    public AugmentedImage Image;

// Use this for initialization
void Start () {
    vidPlayer = GetComponent<VideoPlayer>();
    vidPlayer.loopPointReached += OnStop;

}

   private void OnStop(VideoPlayer source)
   {
      gameObject.SetActive(false);
   }

   // Update is called once per frame
   void Update () {

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

    if (!vidPlayer.isPlaying)
    {
        vidPlayer.clip = vidClips[Image.DatabaseIndex];
        vidPlayer.Play();
    }

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

  }
      }

没有显示控制台错误,但没有显示视频

2 个答案:

答案 0 :(得分:0)

确保相机位置在origo中。 您的视频播放器是否处于活动状态? (videoplayer.setactive(true))

我的工作解决方案:

public class AugmentedImageVisualizer : MonoBehaviour
{
    private const string TAG = "AugmentedImageVisualizer";
    public AugmentedImage image;

    public GameObject video;
    public VideoClip[] videoClips;

    private VideoPlayer videoPlayer;

    private void Start() {
        videoPlayer = video.GetComponent<VideoPlayer>();
    }

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

        if (image == null || image.TrackingState != TrackingState.Tracking) {
            videoplayer.SetActive(false);
            return;
        }

        UpdateVideo();

    private void UpdateVideo() {
        if (!videoPlayer.isPlaying) {
            videoPlayer.clip = videoClips[image.DatabaseIndex];
            videoPlayer.Play();
            video.SetActive(true);
        }

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

别忘了将视频播放器组件添加到游戏对象中。

答案 1 :(得分:0)

编辑:我必须编辑答案以给出更多解释: 我使用了GoogleARCore随附的增强图像示例来创建AR。在这里,控制器需要一个增强的图像可视化器预制件。该预制件是一个Quad(在层次结构区域上单击鼠标右键,然后单击3D Object> Quad)并将其移动到prefab文件夹(这将通过Quad创建预制件)。该四核/预制有视频播放器(在检查器中添加了)。此quad(prefab)还具有一个脚本(augmentedimagevisualizer),其中包含您的代码段。因此,在检查器中(带有增强图像可视化器脚本),四边形已经具有视频剪辑,您可以在其中设置视频。 在层次结构中,有一个arcore设备,而内部是摄像头。该相机具有跟踪姿势驱动程序(在检查器中设置),其姿势来源为:彩色摄像机和AR Core Background Renderer脚本。 2. videolink具有相同的功能,并包含您的代码,因此该视频非常具有描述性。 我在youtube上找到了2个类似的视频。

    显示1个视频的
  1. https://www.youtube.com/watch?v=yjj5dV2v9Fs
  2. 在多个参考上显示多个视频。图片: https://www.youtube.com/watch?v=GkzMFNmvums

对于我来说,2.棘手,视频中的那个家伙创建了Quad,他将其重命名为AugmentedImageVisualizer,然后将其放置在Prefabs中。既然我意识到了这一点,我的视频就会出现在裁判上。图片。 我使用Unity 2019.3.15和arcore-unity-sdk-1.17.0.unitypackage