unity 播放外部视频

摘要: Unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象。

1.Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上。第二种是在GUI层面上播放视频。播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类

//电影纹理
    public MovieTexture movTexture;

    void Start()
    {
        transform.localScale = new Vector3(1, 1, 1);
        //设置当前对象的主纹理为电影纹理
        renderer.material.mainTexture = movTexture;
        //设置电影纹理播放模式为循环
        movTexture.loop = true;
    }

    void OnGUI()
    {
        if (GUILayout.Button("播放/继续"))
        {
            //播放/继续播放视频
            if (!movTexture.isPlaying)
            {
                movTexture.Play();
            }
        }
        if (GUILayout.Button("暂停播放"))
        {
            //暂停播放
            movTexture.Pause();
        }
        if (GUILayout.Button("停止播放"))
        {
            //停止播放
            movTexture.Stop();
        }
    }

  

第二种播放视频的方式基于GUI。大家可以把刚刚创建的Plane对象以及世界定向光删除,直接将脚本绑定在摄像机对象中即可。脚本控制基本上与挂在Plane上面一致。

2.unity播放外部视频,可以用WWW类来加载视频,里面涉及到协程的知识。

协程相当于线程,这里有一篇文章深入讲解协程。http://dsqiu.iteye.com/blog/2029701

协程不是线程,也不是异步执行的。协程和 MonoBehaviour 的 Update函数一样也是在MainThread中执行的。使用协程你不用考虑同步和锁的问题。

这里还有一篇文章讲到了协程 http://blog.csdn.net/huang9012/article/details/38492937

//电影纹理
    public MovieTexture movTexture;

    void Start()
    {
        //设置电影纹理播放模式为循环
        //movTexture.loop = true;
        StartCoroutine(LoadMovie());
        Debug.Log("download complete");

    }

    IEnumerator LoadMovie()
    {
        //配置文件路径
        //string configPath = "file:///" + Application.dataPath + "/Config/config.txt";
        string configPath = "E:/config.txt";
        //视频文件路径
        //string url = "file:///" + Application.dataPath + "/Movies/oldboy.ogv";
        //string url = "file:///" + "E:/U3dExercise/oldboy.ogv";
        string url = "";
        using (StreamReader reader = new StreamReader(configPath))
        {
            url = reader.ReadToEnd().Trim();
        }

        //WWW是一个Unity开发中非常常用到的工具类,主要提供一般Http访问的功能,以及动态从网上下载图片、声音、视频Unity资源等。
        //WWW里面参数必须要加上"file:///"作为前缀  file:///是协议头,能解析为本地文件路径
        //常用的有http://,ftp://,和file:///
        WWW www = new WWW("file:///" + url);
        movTexture = www.movie;
        while (!movTexture.isReadyToPlay)
        {
            Debug.Log(www.progress);
        }
        yield return www;
    }
    void OnGUI()
    {
        //绘制电影纹理
        GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movTexture, ScaleMode.StretchToFill);
        if (GUILayout.Button("播放/继续"))
        {
            //播放/继续播放视频
            if (!movTexture.isPlaying)
            {
                movTexture.Play();
            }
        }
        if (GUILayout.Button("暂停播放"))
        {
            //暂停播放
            movTexture.Pause();
        }
        if (GUILayout.Button("停止播放"))
        {
            //停止播放
            movTexture.Stop();
        }
    }

  

时间: 2024-11-10 00:03:56

unity 播放外部视频的相关文章

unity 看到Sphere内部,通过Sphere播放全景视频时候遇到的问题

Unity创建一Sphere默认是看不到球体内部的,所以需要用 Cull Front  修改剔除的方向,这就会带来一个新的问题,所播放的视频是像镜子一样翻转着的,所以要改变它的UV坐标使其翻转过来 float u_x=1-i.uv.x;  float u_y=i.uv.y;i.uv=float2(u_x,u_y); 1 Shader "Unlit/UnlitShader" 2 { 3 Properties 4 { 5 _MainTex ("Texture", 2D)

Unity播放带Alpha通道的视频(unity play channel movie)

最近讨论在unity播放带alpha通道的视频,一开始一点效果也没有,然后搜索各种解决方案,总结出三种不太好的方案,有更好的方案的希望大家提出来. 方案重点两个方面:         1.能否播放带alpha通道的视频         2.播放的视频和三维场景的层级关系 1.剔除 使用一个剔除的shader,不渲染黑色部分 shader代码如下: Shader "AlphaVideo/CullingVideo" { Properties { _MainTex("Base (R

Qt编写的项目作品8-RTSP播放器+视频监控(vlc版本)

一.功能特点 多线程实时播放rtsp视频流. 支持windows+linux+mac. 多线程显示图像,不卡主界面. 自动重连网络摄像头. 可设置边框大小即偏移量和边框颜色. 可设置是否绘制OSD标签即标签文本或图片和标签位置. 可设置两种OSD位置和风格. 可设置是否保存到文件以及文件名. 可播放本地视频文件,支持设置帧率. 支持h265视频流+rtmp等常见视频流. 可暂停播放和继续播放. 支持回调模式和句柄两种模式. 自动将当前播放位置和音量大小是否静音以信号发出去. 提供接口设置播放位置

Raspbian PIXEL不能播放flash视频的解决办法

Raspbian PIXEL虽然已经自带chromium浏览器,而且也安装了Pepper Flash Player插件,但默认还是不能播放flash视频的,需要执行下面两个命令之后才能真正解决这个问题. sudo apt-get update sudo apt-get dist-upgrade PS:执行上面的命令之前,最好把软件源改一下,要不然估计要很长时间才能执行完.

html5播放mp4视频代码

1.nginx支持flv和mp4格式播放 默认yum安装nginx centos7安装nginx时候应该是默认安装nginx_mod_h264_streaming模块的 # nginx -V查看是否安装nginx_mod_h264_streaming模块 nginx在新版本中已经支持了--with-http_mp4_module --with-http_flv_module这2个模块即可 # vi /etc/nginx/nginx.conf server { listen       80 de

android webview 通过html5播放在线视频 切换大屏

1.添加网络访问权限 <uses-permission android:name="android.permission.INTERNET" /> 2.webview添加全屏支持 developer官方文档关于html5支持视频播放描述如下:In order to support inline HTML5 video in your application, you need to have hardware acceleration turned on, and set

VLC播放RTSP视频延迟问题

VLC播放RTSP视频延迟问题 配置 VLC 以播放 RTSP/RTP 流 vlc播放rtp封装的h.264延时很大是什么原因? 开启打印: VLC的工具->消息->等级 调整为2,就可以看到VLC的错误调试信息.

Android[安德鲁斯] 文本Air Video 远程播放电脑视频

苹果iOS下列.目前应用Air Video,能力iOS由Wifi远程直接播放电脑视频,无需看视频复制到手机.非常好用!最近使用Android打电话.展望类别似应用,找了很长一段时间没有找到.在仔细的思考AirVideo工程,视频站点类似,在Android以下应该也能够有类似的方法实现. 今日在华为荣耀6上面最终验证通过了一个完美的方案.赶紧放上来和有相同须要的朋友们分享分享. 先说一下Air Video的工作原理: 1) 在Windows以下安装Air Video Serverserver,并设

利用开源jPlayer播放.flv视频文件

最近工作中用到视频播放,在网上搜索对比了好几款开源播放插件后,觉得 jPlayer 是比较不错的,故作此记录! 接下来先快速的展示一下 利用jPlayer播放.flv视频的效果: 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="tex