UE4_UE5播放音频(播放停止功能)(附工程)

Posted 蒙双眼看世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4_UE5播放音频(播放停止功能)(附工程)相关的知识,希望对你有一定的参考价值。

在UE4或UE5中播放音频的两种方式:

一、直接通过创建MediaPlayer播放:

1.创建MediaPlayer,命名为myMediaPlayer

选择生成的MediaTexture是用于播放视频,下篇文章来讲UE5如何播放视频。

2.创建一个Actor类用于播放音频,命名为BP_mySoundActor

3.编辑Actor类,添加MediaSound组件

4. 选中MediaSound组件,在其右侧将MediaPlayer设置为刚创建的myMediaPlayer

5.接着在BP_mySoundActor类中添加变量cMediaPlayer

 

 6.Complie一下当前蓝图类,然后将cMediaPlayer的值设置为自定义的myMediaPlayer

 7.最后在Actor类里直接打开音频文件

 8.将此蓝图类拖到场景中,运行即播放音频

或者通过动态加载的方式

此方法在删除Actor的时候,音频也会消失,就无需去做关闭音频的操作。

二、通过插件RuntimeAudioImporter播放:

在UE商城里下载免费的插件RuntimeAudioImporter

然后在工程里安装这个插件:

重启工程,并打开关卡蓝图:

 这样不需要去创建MediaPlayer就能直接播放音频,并且是可以播放各种音频。

但是这样直接播放音频,想停止音频的时候就不能直接销毁,于是要将播放音频的操作写到Actor类里,需要播放时就动态加载此Actor类到场景中,想关闭音频的时候,就直接删除当前Actor即可。

在新建的runtimeSound类里:

鼠标左键动态加载Actor到场景,右键删除:

最后工程地址分享:https://download.csdn.net/download/Highning0007/87337412

UE4 Android端使用MediaPlayer注意事项

文章目录


前言

UE4中播放音频通常使用AudioComponent、MediaSoundComponent(需要挂载MediaPlayer);
前者可播放本地音频资源(eg. cue、wave),后者可播放本地指定路径或在线音频资源等(eg. OpenFile、OpenUrl)。
本文主要介绍在安卓端使用MediaSound播放在线音频需要注意的问题。


一、音量设置无效?

MediaSound(MediaPlayer)组件设置音量接口有’SetVolumeMultiplier’和SetNativeVolume;
如果使用MediaSoundComp:SetVolumeMultiplier设置音量,则在Android下无效;
反之使用MediaPlayerComp:SetNativeVolume设置,则在Window下无效;
所以针对不同平台需要使用对应的接口设置。

二、应用休眠恢复后播放中断

播放过程应用切换到后台后重新切回,之前播放的音频中断不会继续播放。

1.原因

当应用挂起的时候,会将MediaPlayer暂停。
引擎代码如下,HandleApplicationHasEnteredForeground可看作Android的OnResume, HandleApplicationWillEnterBackground看作OnPause;
但此处我有点不理解,它是在OnResume的时候将其暂停,OnPause时Start?总感觉这两个设定相反了,或者安卓的机制就是这样设定也可有可能。有了解的朋友欢迎指正!

// 代码文件路径 \\UE_4.26\\Engine\\Plugins\\Media\\AndroidMedia\\Source\\AndroidMedia\\Private\\Player\\AndroidMediaPlayer.cpp

/* FAndroidMediaPlasoundyer callbacks
 *****************************************************************************/

void FAndroidMediaPlayer::HandleApplicationHasEnteredForeground()

	// check state in case changed before ticked
	if ((CurrentState == EMediaState::Playing) && JavaMediaPlayer.IsValid())
	
		JavaMediaPlayer->Pause();
	



void FAndroidMediaPlayer::HandleApplicationWillEnterBackground()

	// check state in case changed before ticked
	if ((CurrentState == EMediaState::Playing) && JavaMediaPlayer.IsValid())
	
		JavaMediaPlayer->Start();
	

2.解决方案

监测应用状态,当应用挂起又重新激活后,及进入OnResume时,再主动调用继续播放接口进行播放。UE4已经提供安卓端应用状态监听组件‘Application Lifecycle’,响应Actor添加改组件接口监听OnPause、OnResume等事件。
示例如下:

~ 小尾巴 ~
文章内容有错误、理解不到位以及有更优方案,欢迎指正 补充 讨论!!! 

以上是关于UE4_UE5播放音频(播放停止功能)(附工程)的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch 停止播放音频剪辑

如何停止 HTML5 的音频标签播放的音频

如何在播放/暂停控制功能中停止无限循环

Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能

Android native音频:录制播放的实现以及低延迟音频方案

Android native音频:录制播放的实现以及低延迟音频方案