複数のビデオを1つにマージしようとしています。すべての動画は異なるサイズを持ち、結果のコンポジションサイズはユーザーによって変更される可能性があります。ここでは、マージされる各ビデオの指示を作成する私の関数です。AVMutableVideoCompositionLayerInstructionのビデオのサイズ変更
func videoCompositionInstructionForTrack(assetTrack: AVCompositionTrack, videoSize: CGSize) -> AVMutableVideoCompositionLayerInstruction {
let instruction = AVMutableVideoCompositionLayerInstruction(assetTrack: assetTrack)
let transform = assetTrack.preferredTransform
let assetInfo = orientationFromTransform(transform: transform)
var scaleToFitRatio: CGFloat
var moveTransform: CGAffineTransform
if assetTrack.naturalSize.height/videoSize.height > assetTrack.naturalSize.width/videoSize.width {
scaleToFitRatio = videoSize.height/assetTrack.naturalSize.height
let xMoveFactor = (videoSize.width - assetTrack.naturalSize.width * scaleToFitRatio)/2
moveTransform = CGAffineTransform(translationX: xMoveFactor, y: 0)
} else {
scaleToFitRatio = videoSize.width/assetTrack.naturalSize.width
let yMoveFactor = (videoSize.height - assetTrack.naturalSize.height * scaleToFitRatio)/2
moveTransform = CGAffineTransform(translationX: 0, y: yMoveFactor)
}
let scaleFactor = CGAffineTransform(scaleX: scaleToFitRatio, y: scaleToFitRatio)
var concat = assetTrack.preferredTransform.concatenating(scaleFactor).concatenating(moveTransform)
if assetInfo.orientation == .down {
let fixUpsideDown = CGAffineTransform(rotationAngle: CGFloat(Double.pi))
let yFix = assetTrack.naturalSize.height + videoSize.height
let centerFix = CGAffineTransform.init(translationX: assetTrack.naturalSize.width, y: yFix)
concat = fixUpsideDown.concatenating(centerFix).concatenating(scaleFactor).concatenating(moveTransform)
}
instruction.setTransform(concat, at: kCMTimeZero)
return instruction
}
私の問題は、ランダムな色の余分な線が、結果として生じる組成物の端に時々現れることです。 私は、結果の構成のサイズが16(または少なくとも2)で見えるようにする必要があるという理由を説明しました。 ここに私の質問に行く。どのように私はその結果が何によっても、整数、さらに割り切れるだろう
let scaleFactor = CGAffineTransform(scaleX: scaleToFitRatio, y: scaleToFitRatio)
行列を適用した後に確認することができますか?誰もが試してみて、助けるために時間を割いてまで
私は十分な情報を提供しなかった場合は申し訳ありませんが、感謝
ありがとうございました。うまくいきました。私はビデオの問題の位置づけを理解していませんでした。 – f3dm76