KING_U3D学习之Unity播放视频解决方案

今天早上在一个项目里看到有个需求,在unity3d里面播放视频,一开始还以为很简单,殊不知从早上搞到现在,终于理清思路了。网上的资料五花八门,我就是因为太相信网上的资料,才导致走了这么多弯路、、、、,在此,我提供一下在unity播放视频的解决方案以及在实际操作时的注意事项,免得像我今天一样被蒙来蒙去,希望对你有帮助。

一、unity播放视频方案:

1、在游戏对象中利用movie texture播放

unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。

首先,把符合以上格式的视频文件从外面“拖进”(记得是从电脑文件拖回unity,如果打开unity前就放在项目文件里,unity识别不了,我今天就是因为这个一直在转格式上转来转去,什么必须安装quicktime,什么格式转换工具等等,如果你真的需要转格式,有个工具还挺好用,你可以参考这个:http://blog.csdn.net/awnuxcvbn/article/details/17618919)unity的asset文件下(其他文件夹不行),unity自动把视频文件生成movie texture文件,如果视频中含有音频,会对应生成audio文件;

然后,在场景中新建有renderer(material)的物体,如plane,为这个物体添加audio source和自定义的视频控制脚本playMovieTest.cs, 把导入的视频文件挂到脚本的Movie Texture处进行赋值。

代码如下:

using UnityEngine;
using System.Collections;

public class PlayMovieTest : MonoBehaviour
{
    // 电影纹理
    public MovieTexture MovTexture;

    // 视频屏幕大小
    public float MovieSize = 1;

    // Use this for initialization
    void Start()
    {
        // 设置当前对象的主纹理为电影纹理
        GetComponent<Renderer>().material.mainTexture = MovTexture;
        // 设置电影纹理播放模式为循环模式
        MovTexture.loop = true;
    }
    
    // Update is called once per frame
    void Update()
    {
        transform.localScale = new Vector3(MovieSize,1,1);
    }

    /// <summary>
    /// 播放视频
    /// </summary>
    public void PlayMovie()
    {
        if (!MovTexture.isPlaying)
        {
            MovTexture.Play();
        }
    }

    /// <summary>
    /// 暂停视频
    /// </summary>
    public void PauseMovie()
    {
        MovTexture.Pause();
    }

    /// <summary>
    /// 停止视频
    /// </summary>
    public void StopMovie()
    {
        MovTexture.Stop();
    }
}
最后,运行测试,本人用.mp4格式测试,可以用。


以上方式只能在pc使用,若在移动端android/ios中,一定要把视频文件放在StreamingAssets文件夹下,然后直接把下面的脚本挂在摄像机上,即可。

using UnityEngine;
using System.Collections;

public class MobilePlayMovieTest : MonoBehaviour
{
    void OnGUI()
    {
        // 视频播放时,触摸屏幕视频关闭
        if (GUI.Button(new Rect(20, 10, 200, 50), "PLAY ControlMode.CancelOnTouch"))
        {
            Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
        }

        // 视频播放时,弹出IOS高级控件,控制视频暂停/播放、全屏等
        if (GUI.Button(new Rect(20, 90, 200, 25), "PLAY ControlMode.Full"))
        {
            Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.Full);
        }

        // 视频播放时,无法停止,当其播放完一次后自动关闭
        if (GUI.Button(new Rect(20, 170, 200, 25), "PLAY ControlMode.Hidden"))
        {
            Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.Hidden);
        }

        // 视频播放时弹出IOS高级控件,可控制播放进度
        if (GUI.Button(new Rect(20, 250, 200, 25), "PLAY ControlMode.Minimal"))
        {
            Handheld.PlayFullScreenMovie("mobileMovieTest.mp4", Color.black, FullScreenMovieControlMode.Minimal);
        }
    }
}

2、利用easy movie texture插件处理

这个插件收费,里面的具体处理方式我没仔细看,用到可以用的。注意这个插件只能在android/ios中使用,在pc或编辑器不可用。


参考:

http://www.xuanyusong.com/archives/1019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值