拆分包含音频

时间:2017-04-10 11:37:57

标签: cocoa-touch avfoundation core-audio cmsamplebufferref cmsamplebuffer

我正在录音时将录音分成不同的文件......

问题是,captureOutput视频和音频样本缓冲区不对应1:1(这是逻辑的)

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

AUDIO START: 36796.833236847        | DURATION: 0.02321995464852608         | END: 36796.856456802
VIDEO START: 36796.842089239        | DURATION: nan         | END: nan
AUDIO START: 36796.856456805        | DURATION: 0.02321995464852608         | END: 36796.87967676
AUDIO START: 36796.879676764        | DURATION: 0.02321995464852608         | END: 36796.902896719
VIDEO START: 36796.875447239        | DURATION: nan         | END: nan
...

所以我需要根据时间拆分音频CMSampleBufferRef并使用第一个视频的第一个视频段和第二个视频的缓冲区的第二部分

导出时可以使用AVMutableCompositionAVAssetExportSession执行操作,但问题是captureOutput:中的缓冲区级别,因此录制文件不需要更多处理

更新

看起来有3个选项,尚未成功实施

1) CMSampleBufferCopySampleBufferForRange

看似CMSampleBufferCopySampleBufferForRange是可行的方法,但我正在努力计算最后一个参数sampleRange ......

2) CMSampleBufferCreateCopyWithNewTiming

完全迷失了这个

3)看起来有一种方法可以通过使用kCMSampleBufferAttachmentKey_TrimDurationAtStart, kCMSampleBufferAttachmentKey_TrimDurationAtEnd

提供CMSetAttachment来修剪缓冲区

0 个答案:

没有答案