unity 播放视频videoplayer

https://forum.unity.com/threads/videoplayer-plays-video-without-sound.446137/
http://www.appzinside.com/2017/05/26/getting-sound-of-the-new-video-player-in-unity-working-for-hololens-developers/
https://justcode.me/unity2d/how-to-play-videos-on-unity-using-new-videoplayer/

更改AudioManager.asset的静音,参考:
https://blog.csdn.net/kuangben2000/article/details/103263926

第一种播放方式:direct方式
在这里插入图片描述

第二种方式:audio source

在这里插入图片描述

如果没有声音:
1、确保设置中无禁用
在这里插入图片描述
2、视频中有音频
3、音频未被静音
4、使用audiosource方式,保证有listener,保证有audiosource,并拖拽到videoplayer下
5、使用url方式播放,参考代码如下:

using System.Collections;
using UnityEngine;
using UnityEngine.Video;

public class NewBehaviourScript : MonoBehaviour
{

    //public RawImage image;

    public VideoClip videoToPlay;

    private VideoPlayer videoPlayer;
    private VideoSource videoSource;

    private AudioSource audioSource;

    // Use this for initialization
    void Start()
    {
        Application.runInBackground = true;
        StartCoroutine(playVideo());
    }

    IEnumerator playVideo()
    {

        //Add VideoPlayer to the GameObject
        videoPlayer = gameObject.AddComponent<VideoPlayer>();

        //Add AudioSource
        audioSource = gameObject.AddComponent<AudioSource>();

        //Disable Play on Awake for both Video and Audio
        videoPlayer.playOnAwake = false;
        audioSource.playOnAwake = false;
        audioSource.Pause();

        //We want to play from video clip not from url

        videoPlayer.source = VideoSource.VideoClip;

        // Vide clip from Url
        //videoPlayer.source = VideoSource.Url;
        //videoPlayer.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";


        //Set Audio Output to AudioSource
        videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;

        //Assign the Audio from Video to AudioSource to be played
        videoPlayer.EnableAudioTrack(0, true);
        videoPlayer.SetTargetAudioSource(0, audioSource);

        //Set video To Play then prepare Audio to prevent Buffering
        videoPlayer.clip = videoToPlay;
        videoPlayer.Prepare();

        //Wait until video is prepared
        WaitForSeconds waitTime = new WaitForSeconds(1);
        while (!videoPlayer.isPrepared)
        {
            Debug.Log("Preparing Video");
            //Prepare/Wait for 5 sceonds only
            yield return waitTime;
            //Break out of the while loop after 5 seconds wait
            break;
        }

        Debug.Log("Done Preparing Video");

        //Assign the Texture from Video to RawImage to be displayed
        //image.texture = videoPlayer.texture;

        //Play Video
        videoPlayer.Play();
        /*videoPlayer.controlledAudioTrackCount = 1;             // <-- We have added this line. It tells video player that you will have one audio track playing in Unity AudioSource.
        videoPlayer.EnableAudioTrack(0, true);
        videoPlayer.SetTargetAudioSource(0, audioSource);*/

        //Play Sound
        audioSource.Play();
      
        Debug.Log("Playing Video");
        while (videoPlayer.isPlaying)
        {
            Debug.LogWarning("Video Time: " + Mathf.FloorToInt((float)videoPlayer.time));
            yield return null;
        }
        Debug.Log("Done Playing Video");
    }
}

mp4视频测试下载地址:
链接:https://pan.baidu.com/s/1WqxUvrKU6CuE49iblO3V0Q
提取码:z4q5

Unity中,`VideoPlayer`组件是一个用于播放视频的强大工具,尤其适合制作交互式的游戏或应用。以下是使用Unity VideoPlayer切换视频的基本步骤: 1. **创建和设置VideoPlayer组件**: - 首先,在Unity编辑器中,从GameObject菜单选择"UI" > "Video", 然后将其添加到场景中的合适位置。 - 双击打开`VideoPlayer`组件,在Inspector窗口中设置视频源路径,可以是内置的网络流URL或本地文件路径。 2. **控制播放**: - 调用`Play()`方法开始播放视频,`Pause()`暂停,`Stop()`停止,`Seek()`则可用于跳转到指定的时间点。 3. **切换视频**: - 当需要切换视频时,你可以先暂停当前视频(`Pause()`),然后清除当前的`src`属性(URL),再设置新的视频源并调用`Play()`来启动新视频。 4. **管理状态**: - 如果想让切换过程更平滑,可以在`OnWillPlay`或`OnPrepared`事件中开始切换,并在`OnAudioCompleted`事件中确认新的视频已播放完毕。 ```csharp public class VideoSwitcher : MonoBehaviour { public VideoPlayer videoPlayer; private AudioSource audioSource; void Start() { audioSource = GetComponent<AudioSource>(); } public void SwitchToVideo(string newVideoPath) { // 先暂停当前视频 videoPlayer.Pause(); // 清除并更换新的视频源 videoPlayer.url = newVideoPath; // 等待准备完成后再播放 StartCoroutine(PrepareAndPlay()); } IEnumerator PrepareAndPlay() { yield return new WaitUntil(() => videoPlayer.isPlayingOrHasPlayFinished); audioSource.Play(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值