视频后不显示持续时间

时间:2012-05-17 17:52:12

标签: objective-c ios avfoundation avcapturesession avassetwriter

我使用AVCaptureVideoDataOuputAVAssetWriter从相机录制了实时视频,但生成的视频没有持续时间。任何人都可以在总体方向上给出一个简短的想法或一点,以使持续时间有效吗?

2 个答案:

答案 0 :(得分:2)

需要做的是定义初始CMTime

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

然后

[instanceAVAssetWriter setSessionAtSourceTime:self.time];

on 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;

答案 1 :(得分:0)

这就是我所做的,类似于NebulaFox的回答。此代码位于用于捕获视频数据的回调中。作者已经初始化和设置。

switch (writer.status) {
        case AVAssetWriterStatusUnknown:

            startTime = CMSampleBufferGetPresentationTimeStamp(sample);

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

            if (writer.status != AVAssetWriterStatusWriting) {
                break ;
            }  
....