HarmonyOS AVCapture录音得到数据Arraybuffer 是 640字节,ArrayBuffer写到文件后播放声音会断断续续
AVCapture录音得到数据Arraybuffer 是 640字节,临时存储拼接ArrayBUffer,到3 * 1024 字节后再进行写入文件,播放声音会断断续续,就像是每次写入的数据之间会有断层。
if (this.mp3Buffer === undefined) {
this.mp3Buffer = result;
} else {
/// TODO:这里拼接后
ArrayBuffer写到文件后播放声音会断断续续,就像是每次写入的数据之间会有断层。
// 存储每次读取的结果
let buffers: BufferA.Buffer[] = [];
// 存储上一次结果
buffers.push(BufferA.from(this.mp3Buffer.slice(0, this.mp3Buffer.byteLength)));
// 存储当前读取结果
buffers.push(BufferA.from(result.slice(0, result.byteLength)));
// 合并内容
let finalBuf: ArrayBuffer = BufferA.concat(buffers).buffer;
this.mp3Buffer = finalBuf;
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS AVCapture录音得到数据Arraybuffer,传递到napi层,如何在Napi层正确的获取并使用?
204浏览 • 1回复 待解决
后台播放声音会直接无声
1803浏览 • 1回复 待解决
使用32字节秘钥加解密后报错
1671浏览 • 1回复 待解决
HarmonyOS soundpool播放声音的问题
551浏览 • 1回复 待解决
如何对ArrayBuffer字节流进行MD5?
206浏览 • 1回复 待解决
HarmonyOS 如何基于文件的ArrayBuffer获取文件的mimeType?
527浏览 • 0回复 待解决
napi_get_arraybuffer_info 和 napi_create_arraybuffer 的使用
2048浏览 • 1回复 待解决
requestInStream10+这个接口如何拿到流数据?流数据的格式是ArrayBuffer吗?
443浏览 • 1回复 待解决
在 string 转成ArrayBuffer报错
1011浏览 • 1回复 待解决
HarmonyOS使用ArrayBuffer 构造PixelMap 数据报错问题
650浏览 • 1回复 待解决
HarmonyOS AudioKit C API实现音频播放,连接蓝牙后,声音播放异常(有突突的声音)
324浏览 • 1回复 待解决
如何将ArrayBuffer转成string
2522浏览 • 1回复 待解决
ArrayBuffer怎么转Uint8Array?
559浏览 • 1回复 待解决
Uint8Array如何转成ArrayBuffer
1573浏览 • 1回复 待解决
HarmonyOS AVPlayer播放本地沙箱目录音频文件
347浏览 • 1回复 待解决
鸿蒙使用webview加载游戏,应用在后台依然会播放声音,请问下大佬们怎么解决呢?
7376浏览 • 4回复 待解决
HarmonyOS arraybuffer转base64乱码
149浏览 • 1回复 待解决
目前获取 rawfile 得到字节数组后,如何转换成 runJavascript 可执行的字符串数据
704浏览 • 1回复 待解决
HarmonyOS 怎么对图片ArrayBuffer进行图片裁剪
345浏览 • 1回复 待解决
如何将ArrayBuffer转成string?
596浏览 • 1回复 待解决
ArrayBuffer怎样转字符串
516浏览 • 1回复 待解决
字符串如何转为ArrayBuffer?
661浏览 • 1回复 待解决
Native如何通过napi获取ArrayBuffer?
3618浏览 • 1回复 待解决
录音后文件转mp3,是否支持录音后可将文件转成mp3?
177浏览 • 1回复 待解决
默认的buffer 是93ms,可以通过调用 OH_AudioStreamBuilder_SetFrameSizeInCallback 设为20ms,也可尝试写满 bufferLen 数据。另外有一些排查手段,您可以看下。
一、播放无声 无声问题常见原因
1.音量被设置成0 或者 mute。
2.流创建失败。
3.Write数据失败。
自排查动作指导。
1、 搜索日志。
TAG: ajust mute|mute_FrameCount|SetSystemVolumeLevelInternal。
①如果日志中存在类似“ LottieViewModel --> updateVolumeInfo, ajust mute: true”日志,说明调节了音量为静音。
②如果日志中存在类似 “C02562/asd: asd_out 0->1 mute_FrameCount 157”日志,可以看出播放状态下从静音调节到有声音过程中播放了静音帧数据数量。
③如果日志中存在类似 “[SetSystemVolumeLevelInternal]SetSystemVolumeLevelInternal streamType: 1, volumeLevel: 0, updateUi: 1”日志,可以看出音量调节的具体内容,如前面显示的音量调节成了0。
TAG: “Write: Illegal|Write data error” --- 针对histreamer相关应用。
①如果日志中存在类似“HiStreamer: (audio_server_sink_plugin.cpp, 911): Write data error ret is”日志,说明写数据失败了。
②如果日志中存在类似 “AudioStream: [Write]Write: Illegal state:5, sessionId:”日志 说明流状态不对 非running状态。
2、dump数据。
必现问题可以dump数据,使用下面链接的方式进行数据dump。
PCM dump指南。
观察客户端送到fwk数据是否无声。
观察fwk送到hal数据是否无声。
二、 播放卡顿 pop音
1.欠载( UnderRun ) ,应用写数据较慢引起pop音。
2.offload问题。
3.音效问题。
4.接口异常卡死。
自排查动作指导。
1. 搜索日志。
TAG:underrun。
①如果日志中存在xx日志,说明xxx。
②如果日志中存在xx日志,说明xxx。
2. dump数据。
必现问题可以dump数据。
1)如果要dump client端数据 先找到应用包名,否则不需要。
2) 执行脚本。
3、复现问题。
4 、拉取dump数据。
5、查看数据。
录音机。
包名:com.huawei.hmos.soundrecorder。
dump的fwk->client端信息在 /data/local/tmp/dump_client_capturer_audio.pcm。
文件格式为 48000hz 2声道 32bit。
dump的hdi->fwk端信息在 /data/data/.pulse_dir/dump_capture_audiosource.pcm。
文件格式为 48000hz 2声道 32bit。
相关应用包名。
其他信息。
应用dump数据存放的位置。
普通应用dump的位置存在应用沙箱。
走avplayer的应用,比如华为音乐,存储在/data/local/tmp。
观察客户端送到fwk数据是否无声。
观察fwk送到hal数据是否无声。
3.关闭offload。
必现问题可以通过关闭offload判断是否和offload相关。
① 导出原有配置文件备份。
② 备份下。
③ 将offload_enable="1" 修改为 offload_enable="0",代表关闭offload。
④ 执行脚本推包。
4. 关闭音效。
① 导出原有配置文件备份。
②备份下audio_effect_config.xml ->audio_effect_configbak.xml。
③修改audio_effect_config.xml中的几个音效so名字,比如在后面加个1,为了让音频不在走音效。
④ 推包验证。