- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 AVAssetExportSession 将多个视频记录连接成一个条目。
由于用户可以在录制期间在前置和后置摄像头之间切换,因此录制的方向会切换,如果录制包含一个使用前向摄像头的剪辑和第二个使用后置摄像头的剪辑,则连接的视频将显示第一个剪辑使用预期方向,第二个剪辑倒置(反之亦然)。
我知道我需要在导出器上设置 videoComposition 指令,但我对将任何旋转应用到导出的视频并不满意。
在下面的例子中,我设置了一个 90 度的虚拟旋转变换,只是为了尝试强制全面改变,但我导出的视频不受影响。 . .我猜我遗漏了一些明显的东西,但我看不到什么,有人能看出我的错误吗?
AVMutableComposition *composition = [AVMutableComposition composition];
AVAssetExportSession *assetExport = [AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetPassthrough];
NSMutableArray *instructions = [NSMutableArray new];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
CGAffineTransform transformToApply=CGAffineTransformMakeRotation(90.0);
for (NSURL *path in filePaths) {
NSLog(@"%@", path);
AVURLAsset *asset =[AVURLAsset assetWithURL:path];
CMTime atTime = composition.duration;
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration)
ofTrack:[[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
atTime:atTime error:&error];
AVMutableVideoCompositionLayerInstruction *layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:[[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]];
[layerInstruction setTransform:transformToApply atTime:kCMTimeZero];
AVMutableVideoCompositionInstruction * videoTrackInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
videoTrackInstruction.timeRange = CMTimeRangeMake(atTime, asset.duration);
videoTrackInstruction.layerInstructions = [NSArray arrayWithObject:layerInstruction];
[instructions addObject:videoTrackInstruction];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration)
ofTrack:[[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:atTime error:&error];
}
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];
videoComposition.instructions = instructions;
videoComposition.frameDuration = CMTimeMake(1, compositionVideoTrack.naturalTimeScale);
videoComposition.renderSize = compositionVideoTrack.naturalSize;
assetExport.videoComposition = videoComposition;
最佳答案
小学生错误,转换应该是弧度,而不是度数 - https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGAffineTransform/Reference/reference.html
关于ios - 为什么不应用 AVMutableVideoCompositionInstruction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830148/
我设置了backgroundColor它工作正常,但我无法设置背景图像。 AVMutableVideoCompositionInstruction * mainInstruction = [AVMut
我正在使用 AVAssetExportSession 将多个视频记录连接成一个条目。 由于用户可以在录制期间在前置和后置摄像头之间切换,因此录制的方向会切换,如果录制包含一个使用前向摄像头的剪辑和第二
当我使用 this tutorial 创建视频时我试着移动 AVAssetTrack* firstTrack (没有动画,所以我不能使用 CAAnimation s)使用 AVMutableVideo
我是一名优秀的程序员,十分优秀!