Unity3D开发之VideoPlayer
最近老徒弟要毕业了,然后毕设里unity不能播放视频声音。当时我自己测试的时候也是不能正常播放声音。翻了好久官方API文档,还是很迷惑。最后Google了下,找到了一个外国友人提供的解决方案。代码如下:
一.播放指定视频文件
public class Test : MonoBehaviour {//Raw Image to Show Video Images [Assign from the Editor]public RawImage image;//Video To Play [Assign from the Editor]public VideoClip videoToPlay;private VideoPlayer videoPlayer;private VideoSource videoSource;//Audioprivate AudioSource audioSource;// Use this for initializationvoid Start(){//Application.runInBackground = true;StartCoroutine(playVideo());}IEnumerator playVideo(){//Add VideoPlayer to the GameObjectvideoPlayer = gameObject.AddComponent<VideoPlayer>();//Add AudioSourceaudioSource = gameObject.AddComponent<AudioSource>();//Disable Play on Awake for both Video and AudiovideoPlayer.playOnAwake = false;audioSource.playOnAwake = false;//We want to play from video clip not from urlvideoPlayer.source = VideoSource.VideoClip;//Set video To Play then prepare Audio to prevent BufferingvideoPlayer.clip = videoToPlay;//Debug.Log("Done Preparing Video");//Set Audio Output to AudioSourcevideoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource ;//Assign the Audio from Video to AudioSource to be playedvideoPlayer.EnableAudioTrack(0, true);videoPlayer.SetTargetAudioSource(0, audioSource);//Google到的解决方案//这里一定要让以上工作完成后才能开始准备videoPlayer 并且赋值视频输出TexturevideoPlayer.Prepare();//Wait until video is preparedwhile (!videoPlayer.isPrepared){Debug.Log("Preparing Video");yield return null;}//Set Raw Image to Show Video Imagesimage.texture = videoPlayer.texture;//Play VideovideoPlayer.Play();//Play SoundaudioSource.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");}
}
查了下管网API,这个Prepare()很重要。只有在准备完成后,视频的每一帧才会被立即正确的播放。并且,我们要在播放器属性设置完之后在调用,不然语音不能被正确播放。
二.从网站地址播放视频
就是将上面代码的
//We want to play from video clip not from urlvideoPlayer.source = VideoSource.VideoClip;//Set video To Play then prepare Audio to prevent BufferingvideoPlayer.clip = videoToPlay;
更改为:
videoPlayer.source = VideoSource.Url;videoPlayer.url = "http://www.JayW.handsomeboy.mp4";
三.播放本地文件视频
string url = "file://" + Application.streamingAssetsPath + "/" + "VideoName.mp4";if !UNITY_EDITOR && UNITY_ANDROIDurl = Application.streamingAssetsPath + "/" + "VideoName.mp4";
#endif//We want to play from url
videoPlayer.source = VideoSource.Url;
videoPlayer.url = url;
四.视频播放支持的格式
所有支持的视频格式:
- ogv
- vp8
- webm
- mov
- dv
- mp4
- m4v
- mpg
- mpeg
部分Windows上支持的视频格式:
- avi
- asf
- wmf
Unity的VideoPlayer还支持其他输出模式,
可根据自身需求参考官方API进行选择。以上就是VideoPlayer播放视频的大体内容。希望对你有帮助。
Unity3D开发之VideoPlayer相关推荐
- Unity3D开发之3D按钮的声音播放
这里我们首先就简易的制作一个非常简单的3D按钮![这里写图片描述](https://img-blog.csdn.net/20170915120955448?watermark/2/text/aHR0c ...
- Unity3D开发之OnPointerClick事件
OnPointerClick是unity事件系统自带的点击推送事件.继承IPointerClickHandler接口,并在脚本中实现接口,点击挂此脚本的物体系统会调用实现的OnPointerClick ...
- Unity3D开发之Error while reading movie Bug解决
之前一个老项目要加一个播放视频的需求.美工那面给我的视频文件名字以及格式如下:热是如何传递到居民家中的_最终成品.mp4.我直接就把视频导入到Unity项目文件夹下.然后,就报出了如下error:Er ...
- [整理]Unity3D游戏开发之Lua
原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...
- Kinect开发之PowerPoint播放助手
前言: 之前写过一篇关于姿势(pose)识别的博文,之后又定义了几个姿势实现了体感俄罗斯方块.姿势识别是通过关节点与关节点之间的相对位置关系来进行判断.当判断成立,即执行指定的指令.那么,我们就可以指 ...
- libGDX游戏开发之Box2D(十四)
libGDX游戏开发之Box2D(十四) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goo ...
- ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)
本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...
- ios开发之OC基础-类和对象
ios开发之OC基础-类和对象 本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录 ...
- 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...
本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...
- iOS开发之AVKit框架使用
2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...
最新文章
- c++多元线性回归_五种优化算法实现多元线性回归
- android log丢失(二)使用and4.4log kernel机制
- 手游引擎之战再现新挑战者,OGEngine来了
- java 2d 绘图教程_Java标准教程:Java 2D绘图--第2章 从绘图开始
- epoll怎么实现的
- 隐藏的iscroll元素显示后不能滚动问题
- 向后转动作要领_跆拳道腿法之转身侧踢动作要领
- 【网络】tcp三次握手协议
- 笔记五:python字符串
- ReactJS基础(续)
- Spring AOP前置通知和后置通知
- 并发编程学习之Condition和顺序访问
- 用PS做一个简单的相机图标
- 微信开发者工具测试小程序
- python文件(file)路径(Path, path Windows)
- 图解+原理推导完全读懂KPM算法
- 格林威治时间(GMT) 字符串转Date
- 在校园管理方面人脸识别有哪些应用场景
- 网站优化之友情链接的选择标准、友情链接的管理及如何找取
- STATE_ERROR.VALIDATION_ERROR.90165
热门文章
- 四川普教计算机教室配备比例,中小学音乐教室建设标准及配置方案
- Arduino呼吸灯
- android交友php,android交友约会社交APP完整源码Dating App 3.7(服务端+客户端)
- IEEE Access投稿(Latex模板)——参考文献的生成
- 一文搞懂利用Flask-Babel实现网页多语言翻译切换
- FSCapture录屏软件
- unity汉化补丁_Unity补丁发布计划
- java文件复制方法_Java复制文件–用Java复制文件的4种方法
- linux中grep命令 菜鸟教程,Linux 常用命令学习 | 菜鸟教程
- emp和emn是什么文件_emn格式文件