objectivec-Cocoa在视频末尾添加图像



我正在使用QTCaptureSession从iSight相机录制视频。

我想在视频的末尾添加一个图像,所以我已经实现了didFinishRecordingToOutputFileAtURL委托方法。以下是我迄今为止所做的:

- (void)captureOutput:(QTCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL forConnections:(NSArray *)connections dueToError:(NSError *)error
{
    // Prepare final video
    QTMovie *originalMovie = [QTMovie movieWithURL:outputFileURL error:nil];
    [originalMovie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
    NSImage *splashScreen = [NSImage imageNamed:@"video-ending.jpg"];
    NSImage *tiffImage = [[NSImage alloc] initWithData:[splashScreen TIFFRepresentation]];
    id attr = [NSDictionary dictionaryWithObjectsAndKeys:@"tiff",
               QTAddImageCodecType,
               [NSNumber numberWithLong:codecHighQuality], QTAddImageCodecQuality,
               nil];
    [originalMovie addImage:tiffImage forDuration:QTMakeTime(2, 1) withAttributes:attr];
    [tiffImage release];
    [originalMovie updateMovieFile];
}

这个代码的问题是,虽然quicktime玩得很好,但其他玩家却没有。我肯定我错过了一些基本的东西。

在视频保存之前将图像添加到视频中也很酷(避免两次保存)。以下是我现在停止录制的方法:

- (void)stopRecording
{   
    // It would be cool to add an image here
    [mCaptureMovieFileOutput recordToOutputFileURL:nil];
}

虽然我使用了Cocoa touch,但这可能仍然适用。根据我为电影创作图像的经验,我有两个建议。首先,虽然我敢打赌addImage:forDuration处理了很多AVAssetExportSessions所没有的事情,但我必须确保图像的添加频率超过每秒几次,否则它们不会很好地适用于所有玩家。其次,如果有一个网络流选项,比如AVAssetExportSession shouldOptimizeForNetworkUse,可以在电影中向前移动尽可能多的元数据和标题,我发现它也使视频与更多的播放器兼容。

相关内容

  • 没有找到相关文章