HarmonyOS鸿蒙Next中api播放mp3音频时没有声音,求助音频播放的参数怎么配置
HarmonyOS鸿蒙Next中api播放mp3音频时没有声音,求助音频播放的参数怎么配置
/**
-
播放音频
-
@param file */ private void startPlayer(File file) { AudioDeviceDescriptor player = null; AudioDeviceDescriptor[] devices = AudioManager.getDevices(AudioDeviceDescriptor.DeviceFlag.OUTPUT_DEVICES_FLAG); for (AudioDeviceDescriptor device : devices) { // 扬声器 if (AudioDeviceDescriptor.DeviceType.SPEAKER == device.getType()) { player = device; break; } }
if (player == null) { player = devices[0]; }
if (player == null) { // 没有获取到音频播放设备 return; }
AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder() // 16kHz .sampleRate(16000) .audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_MAY_DUCK) .encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_MP3) // 默认声道 单声道 .channelMask(AudioStreamInfo.ChannelMask.CHANNEL_OUT_DEFAULT) // 媒体类音频 .streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_MEDIA) .build();
AudioRendererInfo audioRendererInfo = new AudioRendererInfo.Builder() .audioStreamInfo(audioStreamInfo) // raw 格式的输出流 .audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_DIRECT_PCM) .bufferSizeInBytes(1024) .deviceId(player.getId()) // false表示分段传输buffer并播放,true表示整个音频流一次性传输到HAL层播放 .isOffload(false) .build();
AudioRenderer audioRenderer = new AudioRenderer(audioRendererInfo, PlayMode.MODE_STREAM); // 开始播放 audioRenderer.start(); try { FileInputStream fis = new FileInputStream(file); byte[] buf = new byte[1024]; int i = 0; while ((i = fis.read(buf)) != -1) { audioRenderer.write(buf, 0, i); } fis.close(); audioRenderer.release(); } catch (IOException ie) { ie.printStackTrace(); } }
---------------------------------------------------
请问 `AudioStreamInfo` 和 `AudioRendererInfo` 怎么配置?
更多关于HarmonyOS鸿蒙Next中api播放mp3音频时没有声音,求助音频播放的参数怎么配置的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你的代码中的AudioDeviceDescriptor不是支持音视频播放的接口类。
目前鸿蒙提供的可播放mp3格式的sdk接口是harmonyos.media.player.Player
示例代码如下:
try (FileInputStream in = new FileInputStream(new File(PLAYER_TEST_FILE))) {
FileDescriptor fd = in.getFD();
Source source = new Source(fd);
Player impl = new Player();
impl.setSource(source);
impl.prepare();
impl.play();
} catch (IOException e) {
// ...
}
你可在鸿蒙开源API中查阅次API用法.
更多关于HarmonyOS鸿蒙Next中api播放mp3音频时没有声音,求助音频播放的参数怎么配置的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
感谢,
基本信息
姓名: 张三
职位: 软件工程师
技能: Python, Java, C++
感谢帮助,目前的官方文档没有说清楚。
现在音频播放的地方还是没有说MP3需要使用Player
还有 现在使用本地音视频文件的时候只能调用rawfile文件夹内的资源,而文档给出的media文件夹下的资源使用就会报错。
Player播放视频的文档例子,没有写surface需要onCreate回调完成后才能放入player,这个我是看了别人的代码和参照安卓代码才发现的问题,按照文档给出的例子肯定是失败的。
还有诸如播放成功,但是退出的时候程序卡死,player release也是没用
setSource需要在异步做,不然会卡死或者报-19之类的错误
setSource之后才能设置surface不然也会报错
所有模拟器似乎都不能发出声音
在线视频加载时间特别长,似乎是全加载后才能播放
等等问题,多媒体这部分感觉还有很大提高空间
主要问题在于audioRender初始化一直失败,返回-38,api文档查不到原因
2021-02-18 16:02:46.836 26150-26150/com.example.myapplication W/audio: initPlayer
2021-02-18 16:02:46.842 26150-26150/com.example.myapplication E/libdnetwork: GetLocalBasicInfo: get local node basic info binder invoke failed
2021-02-18 16:02:46.844 26150-26150/com.example.myapplication E/IAudioFlinger: createTrack returned error -38
2021-02-18 16:02:46.845 26150-26150/com.example.myapplication E/InputEventReceiver: Exception dispatching input event.
2021-02-18 16:02:46.845 26150-26150/com.example.myapplication E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
2021-02-18 16:02:46.846 26150-26150/com.example.myapplication E/MessageQueue-JNI: java.lang.IllegalArgumentException: Initial AudioRenderer Failed.
另外还有avsession 连接不上avBrowser,完全按照文档写的,连接回调没有任何反应,错误码都没有,在我另一个帖子贴了代码
你好,目前模拟器不支持音频开发
AudioRender我也是初始化失败
有帖子说是用电视模拟器可以跑,但是不会有声音
刚做完player播放视频demo,player也是一地鸡毛,官方文档照着写都有问题,而且返回的errorcode并不能帮助定位错误
请问你音频播放这块还有问题吗,我这边按照官方文档使用接口audiorender初始化都会报错(远程模拟器运行)。后面看到你的这篇把参数改成和你一致的也是一样。也使用了player一样有问题。请问音频播放你最终是怎么解决的,怎么实现的。不知道你是真机运行还是远程模拟器,有没有代码可以参考下。我是按照官方文档一步步写的,真不知道问题出在哪里
用Player可以播放MP3。
你好,我使用Player进行播放,但是模拟器是没有声音的,包括模拟器的自带音乐应用都没声音。
请问JS API中如何播放音频呢?我用<audio src="路径"></audio>
预览器和模拟器都没动静!!!
你的这个做出来了吗 实在是搞不懂这个
亲爱滴开发者 ,这个问题已经在处理中啦,稍后答复你哟 ,么么哒
在HarmonyOS鸿蒙Next中,使用AudioPlayer
播放MP3音频时,若没有声音,需检查以下参数配置:
-
初始化AudioPlayer:确保正确初始化
AudioPlayer
实例。let audioPlayer = media.createAudioPlayer();
-
设置音频源:使用
src
属性指定音频文件路径。audioPlayer.src = 'path/to/your/audio.mp3';
-
配置播放参数:设置
loop
、volume
等参数。audioPlayer.loop = false; audioPlayer.volume = 1.0;
-
监听播放状态:通过
on('play')
和on('error')
监听播放状态和错误。audioPlayer.on('play', () => { console.log('Audio is playing'); }); audioPlayer.on('error', (error) => { console.error('Audio playback error:', error); });
-
开始播放:调用
play()
方法开始播放。audioPlayer.play();
-
权限检查:确保应用已获取
ohos.permission.MICROPHONE
和ohos.permission.READ_MEDIA
权限。 -
音频文件验证:确认音频文件未损坏且格式支持。
-
设备音量检查:确保设备音量未静音或调至最低。
若以上配置正确且问题仍存在,需进一步排查系统或硬件问题。
在HarmonyOS鸿蒙Next中播放MP3音频时没有声音,可能是由于音频参数配置不正确或音频资源路径问题。请检查以下配置:
- 音频资源路径:确保音频文件路径正确,且文件存在。
- 音频播放器初始化:使用
AudioPlayer
类初始化播放器,并设置正确的音频源。 - 音频格式支持:确认设备支持MP3格式。
- 音量设置:检查系统音量和播放器音量是否被静音或调至最低。
- 权限申请:确保应用已获取音频播放权限。
示例代码:
AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.setSource(ResourceTable.Media_sample_mp3);
audioPlayer.prepare();
audioPlayer.play();
如问题仍未解决,请检查日志输出以获取更多错误信息。