Question by
Delidragon · Mar 14, 2018 at 02:12 PM ·
scripting problemaudiosoundvideoasynchronous
Sound not synchron pls help, my friend
heyho i have the problem that my audio and video isnt synchron. I have the feeling the sound start preparing after the clip started which leads to asynchron sound but i cant just make a timer which says start the video after few frames becasue when i build it on other devices the buffertime changes too pls help here my code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.Playables;
using UnityEngine.Audio;
public class startthevideomyprecious : MonoBehaviour {
//Raw Image to Show Video Images [Assign from the Editor]
//public RawImage image;
public string Scenecode;
public AudioMixerGroup mixerGroup;
//Video To Play [Assign from the Editor]
public VideoClip videoToPlay;
private VideoPlayer videoPlayer;
private VideoSource videoSource;
//Audio
private AudioSource audioSource;
// Use this for initialization
void Start()
{
Application.runInBackground = true;
StartCoroutine(playVideo());
audioSource.outputAudioMixerGroup = mixerGroup;
videoPlayer.loopPointReached += EndReached;
}
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;
//We want to play from video clip not from url
videoPlayer.source = VideoSource.VideoClip;
//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
while (!videoPlayer.isPrepared) {
Debug.Log ("Preparing Video");
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 ();
}
void EndReached(UnityEngine.Video.VideoPlayer vp)
{
UnityEngine.SceneManagement.SceneManager.LoadScene (Scenecode);
}
}
screenshot-09.jpg
(219.2 kB)
screenshot-10.jpg
(183.2 kB)
Comment
Answer by Delidragon · Mar 15, 2018 at 09:20 AM
no ideas?
i figured out when i delete audioSource.Play (); it still plays the audio maybe this information helps