草庐IT

libopus 实现pcm 编码到opus

opus是一种音频格式,常用于语音通话、视频会议中。最近做了个pcm到opus的编码,踩了不少坑,特此记录一下。目录1、基础知识2、使用流程2.1创建编码器2.2编码器配置2.3进行编码2.4完整代码3、结果验证4、参考资料1、基础知识opus支持2.5、5、10、20、40、60ms等帧长,对于一个48000khz的16bit,双通道,20ms的pcm音频来说,每ms样本数为48000/1000=48,采用位深为16bit/8=2byte,所以需要的pcm字节数为  pcmsize= 48样本/msX20msX2byteX2channel=3840byte 对于采样为16bit的2声道的PC

python - PyAudio 工作,但每次都吐出错误消息

我正在使用PyAudio记录麦克风的输入。既然音频对我来说录制得很好,我应该尝试简单地抑制它的错误消息吗?或者有办法解决吗?ALSAlibpcm.c:2212:(snd_pcm_open_noupdate)UnknownPCMcards.pcm.rearALSAlibpcm.c:2212:(snd_pcm_open_noupdate)UnknownPCMcards.pcm.center_lfeALSAlibpcm.c:2212:(snd_pcm_open_noupdate)UnknownPCMcards.pcm.sideALSAlibaudio/pcm_bluetooth.c:1613

python - PyAudio 工作,但每次都吐出错误消息

我正在使用PyAudio记录麦克风的输入。既然音频对我来说录制得很好,我应该尝试简单地抑制它的错误消息吗?或者有办法解决吗?ALSAlibpcm.c:2212:(snd_pcm_open_noupdate)UnknownPCMcards.pcm.rearALSAlibpcm.c:2212:(snd_pcm_open_noupdate)UnknownPCMcards.pcm.center_lfeALSAlibpcm.c:2212:(snd_pcm_open_noupdate)UnknownPCMcards.pcm.sideALSAlibaudio/pcm_bluetooth.c:1613

java - 将 PCM 录制的数据写入 .wav 文件(java android)

我正在使用AudioRecord在android中录制16位PCM数据。记录数据并将其保存到文件后,我将其读回以将其保存为.wav文件。问题是媒体播放器可以识别WAV文件,但播放的只是纯噪音。目前我最好的猜测是我的wav文件头不正确,但我一直无法看到究竟是什么问题。(我认为这是因为我可以播放我在Audacity中录制的原始PCM数据)这是我读取原始PCM文件并将其保存为.wav的代码:privatevoidproperWAV(FilefileToConvert,floatnewRecordingID){try{longmySubChunk1Size=16;intmyBitsPerSam

java - 将 PCM 录制的数据写入 .wav 文件(java android)

我正在使用AudioRecord在android中录制16位PCM数据。记录数据并将其保存到文件后,我将其读回以将其保存为.wav文件。问题是媒体播放器可以识别WAV文件,但播放的只是纯噪音。目前我最好的猜测是我的wav文件头不正确,但我一直无法看到究竟是什么问题。(我认为这是因为我可以播放我在Audacity中录制的原始PCM数据)这是我读取原始PCM文件并将其保存为.wav的代码:privatevoidproperWAV(FilefileToConvert,floatnewRecordingID){try{longmySubChunk1Size=16;intmyBitsPerSam

ios - Xcode 警告 : Not such file or directory (. pcm 文件)

我正在处理一个iOS项目,Xcode向我显示以下警告:warning:/var/folders/qj/lk4bdr_x5fs9cvcj4jgx61mmy6f8jd/C/org.llvm.clang.codytwinton/ModuleCache/2UNUM8IHHP92Q/Foundation-KJNK6ICRXLXW.pcm:Nosuchfileordirectorynote:whileprocessing/var/folders/qj/lk4bdr_x5fs9cvcj4jgx61mmy6f8jd/C/org.llvm.clang.codytwinton/ModuleCache/2U

iphone - 我如何使用 AVPlayer 播放 pcm

我正在使用AVPlayer播放本地.mp3文件和来自服务器的音频流。我也想播放本地.pcm文件。NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString*voiceFile=[[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"OutPut.pcm"];但是没有用。我遇到了未知错误。AudioQueue似乎可以正确播放.pcm。但是有没有一个例子可以让AVPlayer像.mp3一样直接播

ios核心音频: modifying aurioTouch to save pcm data

作为练习,我正在尝试修改aurioTouch,以便它保存通过麦克风进入的PCM的前60秒。我避免使用更高级别的库,因为我想在此基础上构建一些低延迟的实时处理。我通过简单地创建一个大的saveBuffer来做到这一点,然后简单地为每次调用PerformThru的每个“inNumberFrames”附加存储在drawBuffers[]中的data_ptr[2]值......然后,在60秒过去后,我转储一次缓冲到磁盘。我通过输入一致的点击来尝试这段代码。问题是,当我在gnuplot中可视化这个saveBuffer数据时,我在不均匀的时间得到峰值,从稳定的点击中减少了30-40%,这意味着一些

ios - 从 HLS 的 AVPlayer 播放中捕获 PCM 数据

我们正在尝试使用从HLS流捕获PCM数据进行处理,理想情况下是在播放之前,尽管在播放之后也是可以接受的。我们想在仍然使用AVPlayer的同时完成所有这些。有人做过吗?对于非HLS流以及本地文件,这似乎可以使用MPAudioProcessingTap,但不能使用HLS。这个问题讨论了如何使用非HLS:AVFoundationaudioprocessingusingAVPlayer'sMTAudioProcessingTapwithremoteURLs谢谢! 最佳答案 不幸的是,这已被证实不受支持,至少目前是这样。来自Apple工程师

ios - 在 iOS 中使用 LAME 从 PCM 编码为 MP3 时点击

我不是第一个遇到此类问题的人,但是,我一直无法解决。我在iOS中将LinearPCM编码为MP3。虽然我在每个缓冲区之间遇到点击,但它正在工作。memset(&mEncodedBuffer,0,sizeof(mEncodedBuffer));intencodedBytes=lame_encode_buffer(gfp,(short*)inBuffer->mAudioData,NULL,inNumberPacketDescriptions,mEncodedBuffer,MP3_BUFFER_SIZE);NSData*data=[NSDatadataWithBytes:mEncodedBu