最近老徒弟要毕业了,然后毕设里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相关推荐

  1. Unity3D开发之3D按钮的声音播放

    这里我们首先就简易的制作一个非常简单的3D按钮![这里写图片描述](https://img-blog.csdn.net/20170915120955448?watermark/2/text/aHR0c ...

  2. Unity3D开发之OnPointerClick事件

    OnPointerClick是unity事件系统自带的点击推送事件.继承IPointerClickHandler接口,并在脚本中实现接口,点击挂此脚本的物体系统会调用实现的OnPointerClick ...

  3. Unity3D开发之Error while reading movie Bug解决

    之前一个老项目要加一个播放视频的需求.美工那面给我的视频文件名字以及格式如下:热是如何传递到居民家中的_最终成品.mp4.我直接就把视频导入到Unity项目文件夹下.然后,就报出了如下error:Er ...

  4. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

  5. Kinect开发之PowerPoint播放助手

    前言: 之前写过一篇关于姿势(pose)识别的博文,之后又定义了几个姿势实现了体感俄罗斯方块.姿势识别是通过关节点与关节点之间的相对位置关系来进行判断.当判断成立,即执行指定的指令.那么,我们就可以指 ...

  6. libGDX游戏开发之Box2D(十四)

    libGDX游戏开发之Box2D(十四) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goo ...

  7. ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  8. ios开发之OC基础-类和对象

    ios开发之OC基础-类和对象 本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录 ...

  9. 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...

    本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...

  10. iOS开发之AVKit框架使用

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...

最新文章

  1. c++多元线性回归_五种优化算法实现多元线性回归
  2. android log丢失(二)使用and4.4log kernel机制
  3. 手游引擎之战再现新挑战者,OGEngine来了
  4. java 2d 绘图教程_Java标准教程:Java 2D绘图--第2章 从绘图开始
  5. epoll怎么实现的
  6. 隐藏的iscroll元素显示后不能滚动问题
  7. 向后转动作要领_跆拳道腿法之转身侧踢动作要领
  8. 【网络】tcp三次握手协议
  9. 笔记五:python字符串
  10. ReactJS基础(续)
  11. Spring AOP前置通知和后置通知
  12. 并发编程学习之Condition和顺序访问
  13. 用PS做一个简单的相机图标
  14. 微信开发者工具测试小程序
  15. python文件(file)路径(Path, path Windows)
  16. 图解+原理推导完全读懂KPM算法
  17. 格林威治时间(GMT) 字符串转Date
  18. 在校园管理方面人脸识别有哪些应用场景
  19. 网站优化之友情链接的选择标准、友情链接的管理及如何找取
  20. STATE_ERROR.VALIDATION_ERROR.90165

热门文章

  1. 四川普教计算机教室配备比例,中小学音乐教室建设标准及配置方案
  2. Arduino呼吸灯
  3. android交友php,android交友约会社交APP完整源码Dating App 3.7(服务端+客户端)
  4. IEEE Access投稿(Latex模板)——参考文献的生成
  5. 一文搞懂利用Flask-Babel实现网页多语言翻译切换
  6. FSCapture录屏软件
  7. unity汉化补丁_Unity补丁发布计划
  8. java文件复制方法_Java复制文件–用Java复制文件的4种方法
  9. linux中grep命令 菜鸟教程,Linux 常用命令学习 | 菜鸟教程
  10. emp和emn是什么文件_emn格式文件