Question by
AsalazarG13 · Jul 11, 2018 at 10:12 PM ·
audiovideoaudiosource
Using videoPlayer by URL but the audio is not playing
Hi, the code is this, the video plays very well but the audio is not playing
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class StreamVideo : MonoBehaviour {
public RawImage image;
public GameObject playIcon;
private VideoPlayer videoPlayer;
private VideoSource videoSource;
private AudioSource audioSource;
private bool isPaused = false;
private bool firstRun = true;
IEnumerator playVideo() {
playIcon.SetActive(false);
firstRun = false;
//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;
// Video 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.Prepare();
//Wait until video is prepared
while (!videoPlayer.isPrepared) {
yield return null;
}
Debug.Log("Done Preparing Video");
//Assign the Texture from Video to RawImage to be displayed
image.texture = videoPlayer.texture;
//Play Video
videoPlayer.Play();
//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");
}
public void PlayPause() {
if(!firstRun && !isPaused) {
videoPlayer.Pause();
audioSource.Pause();
playIcon.SetActive(true);
isPaused = true;
} else if (!firstRun && isPaused) {
videoPlayer.Play();
audioSource.Play();
playIcon.SetActive(false);
isPaused = false;
} else {
StartCoroutine(playVideo());
}
}
}
Comment
Hi I'm having the same problem, could you tell me if you've solved it and share how you solved it? Thanks