我正在尝试从网址下载视频(Bunny Video进行测试),然后使用视频播放器组件播放。
我在这里遇到的问题是,如果我在编辑器模式下将预先下载的剪辑或网址传递给视频播放器,它会毫无问题地播放视频,但是当我尝试将VideoPlayer组件动态添加到我的游戏对象并分配视频剪辑时视频播放器,它从不播放视频。在播放模式下,Clip选项始终在VideoPlayer组件中显示为null。另外,添加网址在通过脚本完成时也不起作用。
这是我的脚本,它下载视频并将其分配给视频播放器。
public class DownloadScript : MonoBehaviour
{
private WWW Url;
private VideoPlayer Player;
public VideoClip clip;
public float test;
// Use this for initialization
void Start ()
{
this.gameObject.AddComponent<VideoPlayer>();
Player = this.gameObject.GetComponent<VideoPlayer>();
_Download();
/*Player.source=VideoSource.VideoClip;
Player.clip = clip;
Player.Prepare();*/
// Player.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";
}
// Update is called once per frame
void Update () {
if (!Player.isPlaying && Player.isPrepared)
{
Player.Play();
}
}
private IEnumerator WaitForDownload(string sURL)
{
Url = new WWW(sURL);
//WWW www = new WWW(sURL);
Debug.Log(Url.bytesDownloaded);
yield return Url;
if (Url.isDone)
{
Debug.Log("Player ready");
Invoke("PlayVideo",20f);
}
else
{
Debug.Log(Url.bytesDownloaded);
}
yield return Url;
}
private void _Download()
{
try
{
StartCoroutine(WaitForDownload("http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4"));
// return Url.bytes;
}
catch(Exception e)
{
Debug.Log(e.ToString());
}
}
public void PlayVideo()
{
Debug.Log("url download complete");
File.WriteAllBytes(Application.dataPath + "/Resources"+"/bunny.mp4", Url.bytes);
clip =(VideoClip) Resources.Load("bunny.mp4");
Player.source=VideoSource.VideoClip;
Player.clip = clip;
test = 5.0f;
// Player.url = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4";
if (Player.isPrepared)
{
Player.Play();
}
}
}
以下是运行时检查器面板的屏幕截图。
我在我的脚本中添加了一个测试变量,以验证是否有任何内容在运行时更新。因此,测试变量的值会在检查器面板中更新,但视频片段值不会更新,这就是我的视频无法播放的原因。
对此有何解决方案?
答案 0 :(得分:1)
所以我遇到了同样的问题。刚解决了。
代码:
$dompdf = new Dompdf();
解决方案:
从您的代码中,我看到您将字节保存到Resources文件夹中。这不是必需的。因此,您不必使用Resources.Load加载它。
只需传入绝对文件路径。我已在iOS和Mac OS中测试过。有用。