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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章