내 질문/문제점이 다른 포스트와 다른 점은 내가 뷰를 스케일링하지 않고 자산 레이어 명령 (AVMutableVideoCompositionLayerInstruction)을 확장한다는 것입니다. 따라서 앵커 포인트 설정, view.center, CG Rect 스케일링 모두 작동하지 않습니다.CGAffineTransform 스케일이 센터에서 스케일링되지 않음 - 내림차순
CGAffineTransformMakeTranslation을 사용하여 저작물을 가운데에 맞춰 보이게하는 것 이외에도 매우 부정확하게 움직이는 것 이외에도 센터에서 규모를 조정하는 방법을 알아낼 수 없습니다. 실종 된 물건이 있습니까? 문서 및 가이드는별로 도움이되지 않지만 어쩌면 내가 놓친 것 같습니다.
코드는 다음과 같습니다. 미리 감사드립니다 !!! :)
또한 CGTransforms로 avasset을 내보내는 방법을 찾고있는 분들을 위해 아래 코드는 모든 단계입니다. 물론 CMTimeRanges와 같은 세부 사항을 작성해야하지만, 누군가가이 혼란스러운 것을 파악하는 데 도움이되기를 바랍니다. 석영의
-(void) goAssetsExport {
AVMutableComposition *composition = [[AVMutableComposition alloc] init];
AVMutableCompositionTrack *firstTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];
videoComposition.frameDuration = CMTimeMake(1,30);
videoComposition.renderScale = 1.0;
videoComposition.renderSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);
NSURL *movieURL = [[NSBundle mainBundle] URLForResource:[NSString stringWithFormat:@"%@", [preloadEffectsArray objectAtIndex:i]] withExtension:@"mov"];
AVURLAsset *firstAsset = [AVURLAsset URLAssetWithURL:movieURL options:nil];
AVAssetTrack *firstAssetTrack = [[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[firstTrack insertTimeRange:CMTimeRangeMake(firstTrackRangeMin, duration) ofTrack:firstAssetTrack atTime:firstTrackRangeMin error:nil];
AVMutableVideoCompositionInstruction *transitionInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
AVMutableVideoCompositionLayerInstruction *fromLayer = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:firstTrack];
//**This is where problem might be?**//
CGAffineTransform Scaler = CGAffineTransformMakeScale(scaleNumber,scaleNumber);
CGAffineTransform Mover = CGAffineTransformMakeTranslation(scaleNumber * -100, scaleNumber * -150);
[fromLayer setTransform:CGAffineTransformConcat(Scaler,Mover) atTime:firstTrackRangeMin];
transitionInstruction.layerInstructions = [NSArray arrayWithObject:fromLayer];
videoComposition.instructions = instructionArray;
[self exportVideo:composition withInstructionComposition:videoComposition];
}
"중심에서 크기 조정"이란 의미가 무엇인지 분명하지 않습니다. 회전과 달리 크기 조정은 위치를 구분하지 않습니다. –
안녕하세요, 데이비드, 불분명하면 죄송합니다. 화면의 중앙에 이미지를 확대하여 이미지의 크기를 확대하고 싶었습니다. 지금은 화면의 왼쪽 상단에서 더 크게 확장되지만 더 크게 확장됩니다. –
바로 지금 당신의 변형이 이미지를 위와 왼쪽으로 움직이는 것처럼 보입니다. 당신이 원하는 것은 델타 너비/2, 델타 높이/2 (스케일링 후)로 번역하는 것입니다. –