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播放音频(播放停止功能)(附工程)的主要内容,如果未能解决你的问题,请参考以下文章
Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能