我正在制作动画应用程序。我想将一系列NSImage
对象导出到视频文件,每个对象代表一个渲染的动画帧。我已经确认,通过渲染NSImage
生成的NSView
对象是未压缩的,并且是原始NSView
内容的完美表示。但是,当我用AVAssetWriter
编写视频文件时,视频显然被压缩了。
我发现最好的质量是使用AVVideoCodecTypeJPEG
,并将@{AVVideoQualityKey : @(1.0)}
传递为AVVideoCompressionPropertiesKey
。但是,质量仍然不够完美。
在下面的屏幕快照中,左侧的图像是应用程序窗口,其中显示了NSView
中的内容。右边的图像是在Quicktime中打开的导出视频。如您所见,渲染的图像更暗,着色与原始图像不同。放大图像会发现其他压缩伪像。
这是用于像素图形项目的,因此,导出的视频与动画软件中显示的逐像素相同非常重要。我猜我需要使用其他编解码器,但是尝试了AVVideoCodecType
上所有可用的编解码器之后,没有一个提供合适的输出。