0

AVCaptureVideoDataOuputを使用してカメラからライブビデオを録画しましAVAssetWriterたが、結果のビデオには長さがありません。誰かが期間を機能させるための簡単なアイデアや一般的な方向性のポイントを与えることができますか?

4

2 に答える 2

2

行う必要があるのは、 initial を定義することCMTimeです。

self.time = CMMakeTime( 0, 30 /* some frame time */ );

それから

[instanceAVAssetWriter setSessionAtSourceTime:self.time];

の上captureOutput:didOutputSampleBuffer:fromConnection:

CMSampleBufferRef sb;
CMSampleTimingInfo sampleTimingInfo;

sampleTimingInfo.duration = CMTimeMake(1,30);
sampleTimingInfo.presentationTimeStamp = self.time;
sampleTimingInfo.decodeTimeStamp = kCMTimeInvalid;

CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault, sampleBuffer, 1, &sampleTimingInfo, &sb);

そして終わり

CFRelease( sb );
self.time.value += 1;
于 2012-05-18T11:36:10.317 に答える
0

これは、NebulaFoxの答えに似た私がしていることです。このコードは、ビデオ データをキャプチャするためのコールバックにあります。ライターはすでに初期化およびセットアップされています。

switch (writer.status) {
        case AVAssetWriterStatusUnknown:

            startTime = CMSampleBufferGetPresentationTimeStamp(sample);

            [writer startWriting];
            [writer startSessionAtSourceTime:startTime];

            if (writer.status != AVAssetWriterStatusWriting) {
                break ;
            }  
....          
于 2012-05-18T20:38:36.180 に答える