菜鸟教程小白 发表于 2022-12-13 06:54:58

ios - 如何从 iOS 中 AudioBuffer 的 mData 字段读取数据?


                                            <p><p>我在 AudioBuffer 中有某些数据(来自录音)。在我将此缓冲区写入文件之前,我想对 PCM 样本做一些事情。如何像使用 fread 读取一样从 AudioBuffer 的 mData 字段读取数据?
我可以在 .mm 或 .m 文件中使用 fread 吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>AudioBuffer</code> 结构将其数据保存在内存中,而不是文件中。因此 <code>fread</code> 不相关。
<code>mBuffer</code> 只是一个指向数据开头的指针,您可以使用结构的其他两个字段来正确读取数据。来自 <a href="http://developer.apple.com/library/mac/#documentation/MusicAudio/Reference/CoreAudioDataTypesRef/Reference/reference.html#//apple_ref/doc/uid/TP40004488-CH3-SW9" rel="noreferrer noopener nofollow">this link</a> :</p>

<pre><code>struct AudioBuffer {
   UInt32 mNumberChannels;
   UInt32 mDataByteSize;
   void   *mData;
};
</code></pre>

<p><code>mDataByteSize</code> 告诉你缓冲区有多少字节(所以你不会访问内存通过缓冲区的末尾),<code>mNumberChannels</code> 告诉你如何重新-订购您的数据,例如如果缓冲区包含两个 channel ,则数据是交错的,即样本 1,3,5,... 来自 channel1,而 2,4,6,... 来自 channel2。</p>

<p>请记住,您还负责将数据转换为正确的类型。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何从 iOS 中 AudioBuffer 的 mData 字段读取数据?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/5388711/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/5388711/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何从 iOS 中 AudioBuffer 的 mData 字段读取数据?