AVAssetWriterInput:如何在电影中获得正确的图像宽高比?

时间:2016-03-11 14:24:05

标签: swift2 avfoundation video-processing avassetwriter

我尝试根据收藏图片制作视频。 图像的大小保存在inputSize中。 视频大小保存在outputSize中。

我希望图片方面与视频中的全高度相符。

但由于某些原因我无法解释,最终视频显示全高图像(好)但在横轴上拉伸。

如何获得正确的宽度(具有正确的宽高比)?

我的代码段如下:

static let videoW: CGFloat =  720
static let videoH: CGFloat = 1280
let videoRatio = videoW / videoH

var inputSize = CGSize(width: 480, height:700)
static let outputSize = CGSize(width: videoW, height: videoH)



    if let videoWriter = videoWriter {
        let videoSettings: [String : AnyObject] = [
            AVVideoCodecKey  : AVVideoCodecH264,
            AVVideoWidthKey  : MovieBuilder.outputSize.width,
            AVVideoHeightKey : MovieBuilder.outputSize.height,
        ]

        let videoWriterInput = AVAssetWriterInput(mediaType: AVMediaTypeVideo, outputSettings: videoSettings)

        let sourceBufferAttributes = [String : AnyObject](dictionaryLiteral:
            (kCVPixelBufferPixelFormatTypeKey as String, Int(kCVPixelFormatType_32ARGB)),
            (kCVPixelBufferWidthKey as String, Float(inputSize.width)),
            (kCVPixelBufferHeightKey as String, Float(inputSize.height))
        )

1 个答案:

答案 0 :(得分:2)

您好在视频设置中尝试将其添加到词典的一部分

AVVideoScalingModeKey:AVVideoScalingModeResizeAspectFill。

源bufferAttributes也应该反映与视频设置相同的大小