uniapp的app端的getRecorderManager是ucloud官方自己实现的一套录音api,有些编码不对,默认的是amr,如果要转换成wav或pcm,需要服务端进行转换,可通过以下代码获取app端的音频编码支持类型
const supportFormats = plus.audio.getRecorder().supportedFormats // ["amr","3gp","aac"]服务端amr转pcm
可以借助pydub库来实现。不过pydub本身依赖于ffmpeg工具,所以在使用前需要确保系统中已经安装了ffmpeg。
安装依赖安装ffmpeg:Windows:可以从ffmpeg官网下载预编译的二进制文件,解压后将其bin目录添加到系统的PATH环境变量中。Linux:以Ubuntu为例,使用以下命令安装:sudo apt-get update sudo apt-get install ffmpeg安装pydub:使用pip进行安装:
pip install pydub示例代码
from pydub import AudioSegment def amr_to_pcm(amr_file_path, pcm_file_path): try: # 读取AMR音频文件 audio = AudioSegment.from_file(amr_file_path, format="amr") # 保存为PCM格式,这里假设采样宽度为2字节(16位),采样率为8000Hz audio.export(pcm_file_path, format="s16le", parameters=["-ar", "8000"]) print(f"转换成功,PCM文件已保存到 {pcm_file_path}") except Exception as e: print(f"转换失败: {e}") # 使用示例 amr_file = "input.amr" pcm_file = "output.pcm" amr_to_pcm(amr_file, pcm_file)代码解释导入AudioSegment类:从pydub库中导入AudioSegment类,用于处理音频文件。定义amr_to_pcm函数:该函数接受两个参数,分别是AMR文件的路径和要保存的PCM文件的路径。读取AMR文件:使用AudioSegment.from_file方法读取AMR格式的音频文件。导出为PCM文件:使用audio.export方法将音频保存为PCM格式。format="s16le"表示使用16位小端字节序的PCM格式,parameters=["-ar", "8000"]指定采样率为8000Hz。你可以根据实际需求调整采样率等参数。异常处理:使用try-except块捕获可能出现的异常,并打印错误信息。注意事项要保证输入的AMR文件路径是正确的,且文件存在。可以根据实际需求调整PCM文件的采样率、采样宽度等参数。
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?