- Home /
Does videoPlayer.url supports playing live video from hosted url?
I'm following this sample code to play video from unity docs VideoPlayer and also came to this via google search. I'm using Unity 5.6.1f1
This code - > works fine when i play video from local file system or by assigning video clip in editor.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class StreamVideo : 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();
//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");
}
}
But when I enable, it doesn't play video.
videoPlayer.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";
Nothing happens... So my question is **does it even supports playing video from url say http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4?**
Answer by jpetus34 · Jun 19, 2017 at 02:49 PM
@harschell yes, just add this script to whatever object you want the video to play on:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
public class VideoController : MonoBehaviour {
public GameObject tv;
public Renderer rend;
public Material on;
public Material off;
private bool isPlaying;
private VideoPlayer videoPlayer;
private AudioSource audioSource;
// Use this for initialization
void Start () {
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();
// 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();
//Play Video
videoPlayer.Play();
//Play Sound
audioSource.Play();
}
// Update is called once per frame
void Update () {
isPlaying = videoPlayer.isPlaying;
if (isPlaying)
{
rend.material = on;
}
else
{
rend.material = off;
}
}
}
Note: the on/off are just materials I use to set the color of my tv object to make it look off when the tv is not playing the video. Hope this helps, it works fine for me.
Works great but I have a question, if I put this script on a UI element, it won't work. Any fix for this or do you know why this won't work? Thanks.
Why even use a script? If you just wire up the VideoPlayer correctly, it should just start with the URL simply set into the player.
What gameobject do I add to the Tv and Rend option in the inspector panel