菜鸟教程小白 发表于 2022-12-13 15:29:54

ios - 录音时静音音频 AVAssetWriterInput


                                            <p><p>我正在使用 <code>AVAssetWriter</code> 录制视频和音频,以分别从 <code>AVCaptureVideoDataOutput</code> 和 <code>AVCaptureAudioDataOutput</code> 附加 <code>CMSampleBuffer</code>。我想做的是由用户自行决定在录制期间将音频静音。</p>

<p>我假设最好的方法是创建一个空的 <code>CMSampleBuffer</code> 像 </p>

<pre><code>CMSampleBufferRef sb;
CMSampleBufferCreate(kCFAllocatorDefault, NULL, YES, NULL, NULL, NULL, 0, 1, &amp;sti, 0, NULL, &amp;sb);
;
CFRelease(sb);
</code></pre>

<p>但这不起作用,所以我假设我需要创建一个静音音频缓冲区。我该怎么做?有没有更好的方法?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我之前通过调用处理 SampleBuffer 中的数据并将其全部归零的函数来完成此操作。如果您的音频格式未使用 SInt16 样本大小,则可能需要对此进行修改。</p>

<p>您还可以使用相同的技术以其他方式处理音频。</p>

<pre><code>- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
    if(isMute){
      ;
    }
}


- (void) muteAudioInBuffer:(CMSampleBufferRef)sampleBuffer
{

    CMItemCount numSamples = CMSampleBufferGetNumSamples(sampleBuffer);
    NSUInteger channelIndex = 0;

    CMBlockBufferRef audioBlockBuffer = CMSampleBufferGetDataBuffer(sampleBuffer);
    size_t audioBlockBufferOffset = (channelIndex * numSamples * sizeof(SInt16));
    size_t lengthAtOffset = 0;
    size_t totalLength = 0;
    SInt16 *samples = NULL;
    CMBlockBufferGetDataPointer(audioBlockBuffer, audioBlockBufferOffset, &amp;lengthAtOffset, &amp;totalLength, (char **)(&amp;samples));

    for (NSInteger i=0; i&lt;numSamples; i++) {
            samples = (SInt16)0;
    }

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 录音时静音音频 AVAssetWriterInput,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11759076/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11759076/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 录音时静音音频 AVAssetWriterInput