U3D视频播放

u3d的视频播放分为两类播放,一类是直接在平面上对播放视频,另一类是在GUI界面播放视频;

这里对于在平面上播放视频可以通过代码来实现播放暂停按钮的操作。操作和代码也比较简单,这里着重提一下unity的视频读取格式,大家可以尝试一下 .mov, .mpg, .mpeg, .mp4, .avi, .asf这些格式unity都是支持的可以直接拖拽挂载到平面上来播放,但是这些格式并不能直接在挂载代码变量movietexture变量中来操作;如图mp4格式直接移到文件内默认是Vedio Clip而不是movietexture,但是当我们点击选项转化为movietexture却有结果提示:“Movie importing requires Quicktime to be installed…”这样的错误。

unity上传视频到服务器 unity3d导入视频_代码片


这个问题我百度了一下明白了这是因为Unity对于Quicktime player的依赖还没有生效,无论何种格式视频文件unity最后都会自动转码成.ogv格式,这是unity能直接识别的格式。所以我下载了Quicktime player后可以再下载一个TheoraConverter工具来直接把视频格式转化为.ogv这样就能直接在界面转化为Moivetexture格式挂载在脚本变量中来了。

链接:https://pan.baidu.com/s/1iN6_viOdJl5TFTX2F_jpJA
提取码:
h9wz

复制这段内容后打开百度网盘手机App,操作更方便哦代码部分就比较简单了,跟动画播放是完全类似的;

下面展示一些 内联代码片

unity上传视频到服务器 unity3d导入视频_代码片_02


下面展示一些 内联代码片

// An highlighted block
public class TVplay : MonoBehaviour
{
    public MovieTexture mTexture;
    void Start()
    {
        this.GetComponent<Renderer>().material.mainTexture = mTexture;
        mTexture.loop = true;
    }
    void OnGUI()
    {
        if (GUI.Button(new Rect(50, 0, 150, 35), "播放"))
        {
            if (!mTexture.isPlaying)
            {
                mTexture.Play();
            }
        }
        if (GUI.Button(new Rect(50, 100, 150, 35), "暂停"))
        {
            if (mTexture.isPlaying)
            {
                mTexture.Pause();
            }
        }
        if (GUI.Button(new Rect(50,50,150,35),"停止播放"))
        {
            if (mTexture.isPlaying)

            {
                mTexture.Stop();
            }
        }
    }
}

而第二部分GUI界面播放也很简单,只需要在上一个脚本里的ONGUI函数加入这一行代码GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), mTexture, ScaleMode.StretchToFill);就能从GUI界面播放了。这里简单给大家解释一下这个函数的各个参数变量作用吧;

1.这函数原型是可以省略参数的,若只保留第一二个参数,alphaBlend 图片的混合模式,是否通道混合图片显示,默认为混合通道,如果不,图片直接被绘制显示。
scaleMode将采用StretchToFill的形式对GUI进行填充。
2.scaleMode 有三个参数,StretchToFill(伸缩图片填充满整个GUI),ScaleAndCrop(保持原有图片形式,在GUI中显示),ScaleToFit(使得图片适应GUI)。
3.imageAspect 如果是0,则使用原图片的长宽比。