Question by
RamyDergham · Jul 26, 2017 at 02:20 PM ·
videovideotextureurlvideo streamingvideos
Video player http url works in Editor but not in Android ?
It shows on error received event message "Can't play movie [http.....mp4]"
public class StreamVideo : MonoBehaviour {
public RawImage image;
public GameObject playIcon;
//public VideoClip videoToPlay;
private VideoPlayer videoPlayer;
private VideoSource videoSource;
private AudioSource audioSource;
private bool isPaused = false;
private bool firstRun = true;
public Text myText;
IEnumerator playVideo()
{
playIcon.SetActive(false);
firstRun = false;
//Add VideoPlayer to the GameObject
videoPlayer = gameObject.AddComponent<VideoPlayer>();
videoPlayer.loopPointReached += EndReached;
videoPlayer.errorReceived += VideoPlayer_errorReceived;
videoPlayer.prepareCompleted += VideoPlayer_prepareCompleted;
//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://docs.evostream.com/sample_content/assets/bun33s.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;
Debug.Log("will prepare Video");
myText.text = "will prepare Video";
videoPlayer.Prepare();
yield return 0;
}
private void VideoPlayer_prepareCompleted(VideoPlayer source)
{
Debug.Log("Done Preparing Video");
myText.text = "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();
}
private void VideoPlayer_errorReceived(VideoPlayer source, string message)
{
myText.text = "Error:" + message;
Debug.Log("Error:"+ message);
}
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());
}
}
void EndReached(UnityEngine.Video.VideoPlayer vp)
{
myText.text = "Video End";
Debug.Log("Video End");
}
void VideoError(UnityEngine.Video.VideoPlayer vp)
{
myText.text = "Video End";
Debug.Log("Video End");
}
}
Comment
Your answer
Follow this Question
Related Questions
AWS Cloudfront RTMP Video Streaming? 1 Answer
How to convert video links to have ".mp4" at the end? 0 Answers
Video Player & GearVR? 1 Answer
How to turn a video into a Material? 1 Answer
Videoplayer Hiccup first few seconds 1 Answer