AVAssetWriting,以非压缩格式写入

时间:2012-09-26 13:26:43

标签: avfoundation avassetwriter

有人知道如何在AVFoundation中使用AVAssetWriter将未压缩的帧存储到mov中吗?我实际上使用以下代码片段来获取ProRes4444内容:

NSDictionary *videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                   AVVideoCodecAppleProRes4444, AVVideoCodecKey,
                                   widthNum, AVVideoWidthKey,
                                   heightNum, AVVideoHeightKey,
                                   nil];
assetWriterInput = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings] retain];

从AVAssetWriter标头读取,据说使用来自核心视频常量的kCVPixelFormat常量,我尝试了以下内容:

kCVPixelFormatType_32RGBA,AVVideoCodecKey

但它似乎不起作用。任何人都有关于这个主题的一些提示?

非常感谢!

2 个答案:

答案 0 :(得分:1)

kCVPixelFormatType_32RGBA不是编解码器类型,它是像素格式。

These是受支持的编解码器。我不确定kCMVideoCodecType_422YpCbCr8是否是未压缩选项,但kCMVideoCodecType_Animation应该执行该工作。它使用无损压缩(类似于压缩文件,然后在不降低质量的情况下进行恢复)。

答案 1 :(得分:0)

如果您需要非常高质量的视频,可以将关键帧速率设置为1并将比特率设置得非常高。所有帧都是关键帧,因此您可以根据需要“擦除”视频。如果有的话,你不会丢失太多信息。另请参阅AVCaptureSessionPresetiFrame960x540以及AVCaptureSession.h中的其他内容。这是我提到的那个的描述

@constant AVCaptureSessionPresetiFrame960x540
@abstract
    An AVCaptureSession preset producing 960x540 Apple iFrame video and audio content.

@discussion
    Clients may set an AVCaptureSession instance's sessionPreset to AVCaptureSessionPresetiFrame960x540
    to achieve 960x540 quality iFrame H.264 video at ~30 Mbits/sec with AAC audio.  QuickTime
    movies captured in iFrame format are optimal for editing applications.