Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么不';t AVMutableVideoCompositionInstruction';正在申请什么?_Ios_Video_Avfoundation - Fatal编程技术网

Ios 为什么不';t AVMutableVideoCompositionInstruction';正在申请什么?

Ios 为什么不';t AVMutableVideoCompositionInstruction';正在申请什么?,ios,video,avfoundation,Ios,Video,Avfoundation,我正在使用AVAssetExportSession将多个视频录制连接到一个条目中 由于用户在录制期间可以在前后摄像机之间切换,因此录制的方向会切换,如果录制包括使用前向摄像机的一个剪辑和使用后向摄像机的第二个剪辑,则连接的视频将使用预期方向显示第一个剪辑,并将第二个剪辑倒置(反之亦然) 我知道我需要在导出器上设置视频合成说明,但我不喜欢将任何旋转应用于导出的视频 在下面的例子中,我设置了一个90度的虚拟旋转变换,只是为了尝试全面强制更改,但是我导出的视频没有受到影响…我猜我遗漏了一些明显的东西,

我正在使用AVAssetExportSession将多个视频录制连接到一个条目中

由于用户在录制期间可以在前后摄像机之间切换,因此录制的方向会切换,如果录制包括使用前向摄像机的一个剪辑和使用后向摄像机的第二个剪辑,则连接的视频将使用预期方向显示第一个剪辑,并将第二个剪辑倒置(反之亦然)

我知道我需要在导出器上设置视频合成说明,但我不喜欢将任何旋转应用于导出的视频

在下面的例子中,我设置了一个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;

学童错误,变换应该是弧度,而不是度-