4

有人知道如何在 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

但这似乎不起作用。有人对此主题有一些提示吗?

多谢 !

4

2 回答 2

1

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

这些是支持的编解码器。我不确定 kCMVideoCodecType_422YpCbCr8 是否是未压缩选项,但 kCMVideoCodecType_Animation 应该可以完成这项工作。它使用无损压缩(类似于压缩文件然后在不损失任何质量的情况下恢复它)。

于 2012-09-26T16:56:04.450 回答
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.
于 2012-09-28T00:52:50.083 回答