0

AVFoundationを使用してカメラからCMSampleBufferRefをキャプチャし、CVPixelBufferRefに変換してビデオに書き込みます。私がしたいのは、ビデオフレーム内のいくつかのピクセルを変更することです。だから私はCMSampleBufferのうちCVPixelBufferRefを取得する必要があります。オーディオ付きCVPixelBuffer

- (CMSampleBufferRef)newModifyImage:(CMSampleBufferRef)sampleBuffer { 
    CVImageBufferRef cvimgRef = CMSampleBufferGetImageBuffer(sampleBuffer); 
    CVPixelBufferLockBaseAddress(cvimgRef,0); 

    uint8_t *buf=(uint8_t *)CVPixelBufferGetBaseAddress(cvimgRef); 

    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(cvimgRef); 
    size_t width = CVPixelBufferGetWidth(cvimgRef); 
    size_t height = CVPixelBufferGetHeight(cvimgRef); 


    CVPixelBufferRef pixelBufRef = NULL; 
    CMSampleBufferRef newSampleBuffer = NULL; 
    CMSampleTimingInfo timimgInfo = kCMTimingInfoInvalid; 
    CMSampleBufferGetSampleTimingInfo(sampleBuffer, 0, &timimgInfo); 

    OSStatus result = 0; 

    OSType pixFmt = CVPixelBufferGetPixelFormatType(cvimgRef); 

    CVPixelBufferCreateWithBytes(kCFAllocatorDefault, width, height, pixFmt, buf, bytesPerRow, NULL, NULL, NULL, &pixelBufRef); 

    CMVideoFormatDescriptionRef videoInfo = NULL; 

    result = CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixelBufRef, &videoInfo); 

    CMSampleBufferCreateForImageBuffer(kCFAllocatorDefault, pixelBufRef, true, NULL, NULL, videoInfo, &timimgInfo, &newSampleBuffer); 
    return newSampleBuffer; 
} 

答えて

1

チェックRosyWriterサンプルコードhttp://developer.apple.com/library/ios/#samplecode/RosyWriter/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40011110:私の問題は、私は私もCVPixelBufferRefCMSampleBufferを再作成しようとしたが、それはエラーを私に返し、私の新しいCVPixelBufferRef

に元CMSampleBufferのオーディオデータを含めることができなかったということです

サンプルバッファからビデオおよびオーディオを書き込む

関連する問題