关于Unity3D VideoPlayer播放视频中的声音的问题

VideoPlayer是unity5.6后一个较新的功能,方便快速的实现了视频资源的播放,功能实现也比较简单,这里就不介绍了。主要说一下有关声音的问题,不是什么高深的技术,但希望能给遇到这个问题的人节省一点点时间

一:在控制面板中添加


如上图,在指定Video Clip后,播放的视频是没有声音的,需要再挂一个Audio Source组件,不需要指定其AudioClip,直接将这个组件拖入VideoPlayer面板最下面的 Audio Source里,然后播放视频就用声音了。



二,在代码中添加(此时,控制面板中只需要挂上 Vide Player和 Audio Source就行,不需要对它们设置,方便动态播放不同的视频资源)

  VideoPlayer videoPlayer;

  videoPlayer = this.GetComponent<VideoPlayer>();
   videoPlayer.loopPointReached += EndReached;//当前clip播放完成调用
   videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
   videoPlayer.SetTargetAudioSource(0, this.GetComponent<AudioSource>());
   videoPlayer.playOnAwake=false;
   videoPlayer.IsAudioTrackEnabled(0);

    videoPlayer.clip = “自己的Clip资源”;
    videoPlayer.Play();

   其中 videoPlayer.SetTargetAudioSource(0, this.GetComponent<AudioSource>());此方法用来添加指定的AudioSource组件,不然没有声音,此处的this.GetComponent<AudioSource>()是因为我的对象上面挂了AudioSource,你也可以引用其他的地方的AudioSource

videoPlayer.playOnAwake=false;这句话很重要,你可能知道playOnAwake是上面意思,但不明白它会造成什么影响,其实就是如果设置为true时,在awake的时候就已经开始播放视频了,而此时声音模块还没来得及加载,就会出现没有声音的情况,只有设置为false,当你播放第一个视频时才会有声音,它保证了在声音AudioSource模块设置完成的情况先才开始播放视频。

发布了6 篇原创文章 · 获赞 8 · 访问量 1万+
展开阅读全文

播放网络音频没声音,再次安装才有声音(同一样的安装包)

06-06

这个是个很诡异的问题,至少我这么觉得.我做了一个应用.是可以播放网络音频的.我一直在用都没问题,可以播放的.但是有同事发现在部分手机上首次安装时,播放时候没声音.是有在播放的,也没出什么异常或错误(至少不会影响播放中断的,因为我没遇到过,别人遇到的,我看不了日志).应该不关url的问题,因为没声音的时候,点击其他音乐也是没声音. 而平时我用或其他人用的时候,那些音乐都是可以播放的.在重装之后,才会有声音. 那些手机删除干净了我的应用之后,再安装也没有出现这问题.或者可以说是有时安装会没声音,但再安装后又有了. 我的代码很简单,就是获取到音乐的url,然后给mediaplayer,准备,然后播放.实在想不通有什么问题会导致没声音,也不是手机的音量静音了.下面是核心代码,请问有人知道是什么问题吗?或者有没有头绪是那方面的问题? public void playStreamMusic(String url){ mediaPlayer=new MediaPlayer(); setListener(); try { if(mediaPlayer!=null){ url = URLEncoder.encode(url,"utf-8").replaceAll("\\+", "%20"); url = url.replaceAll("%3A", ":").replaceAll("%2F", "/").replaceAll("%3F", "?"); //String encode = URLEncoder.encode(url, "UTF-8"); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); mediaPlayer.setDataSource(url); System.out.println("开始异步准备:"+url); mediaPlayer.prepareAsync(); } } catch (IllegalArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (SecurityException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalStateException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } addListener()里面就是对setOnErrorListener,setOnCompletionListener,setOnBufferingUpdateListener和setOnPreparedListener做的一些设置而已. 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览