问题标签 [avaudiopcmbuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 使用 AVAudioPCMBuffer 的 AVAudioPlayerNode - 不播放音频
我正在尝试从 PCMBuffer 播放音频。当我运行以下代码时,由于某种原因,没有播放音频。我没有收到任何错误。
样本audioData
值:
为什么什么都没有播放?随时询问更具体的细节。
swift - 将使用 AudioKit 录制的音频文件读取到 AVPlayer 实例中时出现问题
我的情况是需要导出使用 AudioKit 录制的音频文件,然后稍后重新导入以通过AVAudioPCMBuffer
.
下面是我用于从 AudioKit 导出的代码:
这是我稍后尝试将该音频文件读回我的 macOS 应用程序的地方,并填写一个AVAudioPCMBuffer
(file
我要读取的音频文件在哪里):
但是,我一直收到以下错误:
异常(-50):“缓冲区数量错误”
[avae] AVAEInternal.h:103:_AVAE_CheckNoErr: [AVAudioFile.mm:445:-[AVAudioFile readIntoBuffer:frameCount:error:]: (ExtAudioFileRead(_imp->_extAudioFile, &ioFrames, buffer.mutableAudioBufferList)): 错误 -50
这与导出和导入音频时使用的文件格式无关。
但是,如果我使用从应用程序内部直接读取的这个 .wav 文件,它确实可以正常工作。
有没有人知道为什么我似乎无法将音频文件中的数据读入AVPCMBuffer
.
swift - 快速从 mp3 文件中提取 CMSampleBuffer
我正在尝试CMSampleBuffer
从 mp3 文件中提取以将其用于录制视频。这是代码:
首先从 mp3 获取 PCM 缓冲区
我如何将 pcm 缓冲区转换为 cmsamplebuffer 的代码:
但我总是得到错误代码:-12771: kCMSimpleQueueError_RequiredParameterMissing
. 这是我的音频格式和样本缓冲区的日志:
知道为什么CMSampleBufferSetDataBufferFromAudioBufferList
总是返回错误
ios - 从现有的实际音频文件生成相位反转音频文件以快速取消其语音
我正在通过音频引擎录制声音并创建一个文件名my_file.caf
并尝试制作另一个文件,这将使其相位相反,我可以取消它的单声道声音。
但是当我进行一些操作和计算时,它会反转其正弦波,但也会反转声音。
swift - AVAudioPCMBuffer 只能获取带有静态/白噪声的音频
感谢您抽出时间阅读我的问题。
目标:
我从 UDP 服务器获取了一些音频数据,我必须将它们转换为 PCM 格式才能实时播放实际的音频。
询问:
由于某种原因,使用下面的代码不适用于我的 AVAudioPCMBuffer 格式,并且没有产生声音或内存错误。但是,我可以通过将 NSData 转换为 AVAudioPCMBuffer 来从扬声器播放白噪声/静态。我有一种接近答案的感觉,因为每当我对着麦克风说话时,我都会听到不同频率的静电声。
这是我的代码:
1.将接收到的数据转换为PCM Buffer:
2. 将转换后的缓冲区播放到播放器中。
我不明白这是什么问题?您的帮助将不胜感激。谢谢 :)
编辑1:
正如@Vladimir 的建议,我更新了我的代码如下:
编辑2:
正如@Vladimir 的建议,我将我的更新configAudioEngine()
如下:
这解决了我的异常,我正在接收数据。但是没有声音传来。它是静音的。
arrays - 使用 AVAudioPCMBuffer int16 数据调度缓冲区
我正在尝试以 pcmInt16 数据格式播放来自网络的字节数组中的音乐。
如何设置 byteArray 的前 512 个数据?我尝试了这样的事情,但它不起作用: memcpy(pcmBuffer.audioBufferList.pointee.mBuffers.mData, byteArray[0..<512], len * 2)
swift - 播放音频流PCMBuffer、AVAudioPCMBuffer
我的任务是接收音频流并播放它。在服务器端,音频采用 pcmInt16 编码(16bit,44100 采样率,2 通道)
我接受字节流并在 AVAudioPCMBuffer 中编码,然后在 playMusicFromBuffer 函数中将其传递给播放器。
起初,在AVAudioPCMBuffer中编码,我使用了bytesToAudioBuffer方法(参数与服务器设置不匹配),但是,应用程序启动并且在转换时没有崩溃,但仍然没有声音。
接下来,我尝试通过更改设置并编写 bytesToAudioBuffer16 函数来解决此问题。但是在这里启动应用程序时,当我将流转换为 AVAudioPCMBuffer 并将其传输到播放器时,会出现错误:
[reason __NSCFString * "[[busArray objectAtIndexedSubscript: (NSUInteger) element] setFormat: format error: & nsErr]: returned false, error Error Domain = NSOSStatusErrorDomain Code = -10868 \" (null) \ "" 0x0000600000d2e00.
问题是如何解决这种情况。我需要修复 bytesToAudioBuffer16 或 playMusicFromBuffer。如果是这样,怎么做?
floating-point - javascript中的音频Float32到Int16转换
我正在尝试使用编译成 wasm 并从 Javascript 调用的 C 库在 WebRtc 中创建噪声消除过滤器。
我能够使用 WebAudioApi 捕获 pcm 音频并使用 wasm 处理帧。
我的库只接受 int16 中的输入。
这是我的代码:我尝试了 2 种方法
方法一:
该方法的优点是它保留了字节数,因此不会有数据丢失
但是当我将它转换回 Float32Array 时,浮点值超出了音频缓冲区限制值 [-1,1]。所以没有音频数据被推送。
方法二:
这种方法的优点是它转换回范围 [-1,1] 内的值。
但是由于字节丢失,音频质量(失真)受到很大影响。
无论如何都可以保留字节并有效地转换 float32 - int16 并返回。
Anyhelp 将是巨大的。
swift - 将 PCM 缓冲区转换为 AAC ELD 格式,反之亦然
我无法将线性 PCM 缓冲区转换为压缩的 AAC ELD(增强型低延迟)缓冲区。
我从这个问题中得到了一些用于转换为 ilbc 格式的工作代码: AVAudioCompressedBuffer to UInt8 array,反之亦然
这种方法效果很好。
我将格式的输入更改为:
转换为压缩缓冲区工作正常,我能够将缓冲区转换为 UInt8 数组。
但是,转换回 PCM 缓冲区不起作用。转换回缓冲区的输入块如下所示:
convert 方法后的错误块触发并打印出“输入缓冲区中剩余的位太少”。此外,似乎输入块只被调用一次。
我尝试了不同的代码,这似乎是最常见的结果之一。我也不确定问题是否出在从 pcm 缓冲区到 uint8 数组的初始转换中,尽管我得到一个 UInt8 数组,每 0.1 秒填充 768 个值(有时数组最后包含几个零,这不会以 ilbc 格式发生。
问题:
1.从 pcm 缓冲区到 uint8 数组的初始转换是否使用正确的方法完成?packetCapacity、capacity 和 maximumPacketSize 是否有效?-> 再次,似乎工作
2.我在转换回 pcm 缓冲区时遗漏了什么吗?另外,我是否以正确的方式使用变量?
3.有没有人在项目中不使用 C 的情况下实现了这种转换?
** 编辑:** 我还使用了这篇文章中的方法: Decode AAC to PCM format using AVAudioConverter Swift
它适用于 AAC 格式,但不适用于 AAC_LD 或 AAC_ELD