HarmonyOS鸿蒙Next中音频文件wav播放demo
HarmonyOS鸿蒙Next中音频文件wav播放demo 有没有音频文件 wav 播放demo
3 回复
可以试下使用SoundPool
播放音频,SoundPool
支持播放1MB以下的音频资源,如:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/using-soundpool-for-playback-V13
import audio from '@ohos.multimedia.audio';
import media from '@ohos.multimedia.media';
import fs from '@ohos.file.fs'
import picker from '@ohos.file.picker';
import { BusinessError } from '@ohos.base';
import { Context } from '@kit.AbilityKit';
let urii: string = '';
let soundPool: media.SoundPool;
let streamId: number = 0;
const audioSelectOptions = new picker.AudioSelectOptions();
let soundId: number = 0;
let audioRendererInfo: audio.AudioRendererInfo = {
usage: audio.StreamUsage.STREAM_USAGE_MUSIC,
rendererFlags: 1
}
let PlayParameters: media.PlayParameters = {
loop: 0, // 循环4次
rate: audio.AudioRendererRate.RENDER_RATE_NORMAL, // 正常倍速
leftVolume: 0.9, // range = 0.0-1.0
rightVolume: 0.9, // range = 0.0-1.0
priority: 3, // 最低优先级
}
let uri: string = "";
@Entry
@Component
struct SoundPoolDemo {
@State message: string = '播放音频';
async aboutToAppear(): Promise<void> {
create();
}
async aboutToDisappear() {
release();
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button('播放音频').onClick(event => {
PlaySoundPool();
})
Button('停止音频').onClick(event => {
StopSoundPool();
})
Button('循环播放').onClick(event => {
SetLoopPlay();
})
}
.width('100%')
}
.height('100%')
}
}
async function create() {
//创建soundPool实例
soundPool = await media.createSoundPool(5, audioRendererInfo);
//注册监听
loadCallback();
finishPlayCallback();
setErrorCallback();
// 加载音频资源
const audioViewPicker = new picker.AudioViewPicker();
let rawFile = getContext().resourceManager.getRawFdSync('test.wav')
soundPool.load(rawFile.fd, rawFile.offset, rawFile.length).then(soundIdd => {
console.info('soundPool load uri success');
soundId = soundIdd;
console.log('===========soundId: ', soundId)
}).catch(err => {
console.error('soundPool load failed and catch error is ' + err.message);
})
}
async function loadCallback() {
// 加载完成回调
soundPool.on('loadComplete', soundId_ => {
console.info('loadComplete, soundId: ' + soundId_);
})
}
//设置播放完成监听
async function finishPlayCallback() {
// 播放完成回调
soundPool.on('playFinished', () => {
console.info("recive play finished message");
// 可进行下次播放
})
}
//设置错误类型监听
function setErrorCallback() {
soundPool.on('error', error => {
console.info('error happened,message is :' + error.message);
})
}
async function PlaySoundPool() {
console.log("开始播放");
// 开始播放,这边play也可带播放播放的参数PlayParameters
streamId = await soundPool.play(soundId, PlayParameters);
}
async function StopSoundPool() {
console.log("停止播放");
soundPool.stop(soundId);
}
async function SetLoopPlay() {
console.log("循环播放");
let Parameters: media.PlayParameters = {
loop: -1, // 一直循环
rate: audio.AudioRendererRate.RENDER_RATE_NORMAL, // 正常倍速
leftVolume: 0.9, // range = 0.0-1.0
rightVolume: 0.9, // range = 0.0-1.0
priority: 3, // 最低优先级
}
streamId = await soundPool.play(soundId, Parameters);
}
async function release() {
// 终止指定流的播放
soundPool.stop(streamId);
// 卸载音频资源
await soundPool.unload(soundId);
//关闭监听
setOffCallback();
// 释放SoundPool
await soundPool.release();
}
//关闭监听
function setOffCallback() {
soundPool.off('loadComplete');
soundPool.off('playFinished');
soundPool.off('error');
}
更多关于HarmonyOS鸿蒙Next中音频文件wav播放demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,播放WAV音频文件可以通过使用系统提供的音频播放API实现。首先,确保在项目的config.json
文件中声明音频播放的权限。然后,使用AudioPlayer
类进行音频播放。以下是一个简单的代码示例:
- 在
config.json
中添加权限声明:
{
"module": {
"reqPermissions": [
{
"name": "ohos.permission.MEDIA"
}
]
}
}
- 在代码中创建
AudioPlayer
实例并播放WAV文件:
import audio from '@ohos.multimedia.audio';
async function playWavFile(filePath: string) {
const audioPlayer = await audio.createAudioPlayer();
await audioPlayer.load(filePath);
await audioPlayer.play();
}
// 调用播放函数
playWavFile('/path/to/your/audiofile.wav');
- 处理播放事件:
audioPlayer.on('play', () => {
console.log('Audio playback started');
});
audioPlayer.on('pause', () => {
console.log('Audio playback paused');
});
audioPlayer.on('stop', () => {
console.log('Audio playback stopped');
});
audioPlayer.on('error', (error) => {
console.error('Audio playback error:', error);
});
通过上述步骤,可以在HarmonyOS鸿蒙Next中实现WAV音频文件的播放。
在HarmonyOS鸿蒙Next中播放WAV音频文件,可以通过使用AudioPlayer
类实现。以下是一个简单的示例代码:
import ohos.media.player.Player;
import ohos.media.common.Source;
import ohos.app.Context;
public class WavPlayerDemo {
private Player audioPlayer;
public void playWav(Context context, String filePath) {
Source source = new Source(filePath);
audioPlayer = new Player(context);
audioPlayer.setSource(source);
audioPlayer.prepare();
audioPlayer.play();
}
public void release() {
if (audioPlayer != null) {
audioPlayer.release();
audioPlayer = null;
}
}
}
使用时,创建WavPlayerDemo
实例并调用playWav
方法传入文件路径即可播放WAV文件。播放完成后,调用release
方法释放资源。