小编csw*_*285的帖子

AVFoundation 旋转屏幕 - Obj C

我正在努力改变视频的方向。它以纵向记录,然后以横向保存。更改变换只会使视频在横向视频中旋转。在这个带有 M_PI_2 的例子中,它消失了,因为它旋转了屏幕或平面。但是如果我把它改成 M_PI_2/2 或者它看起来是歪的。我知道 AVFoundation 默认情况下会这样做。我该如何改变?我从本教程中得到了很多这样的代码:https : //www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos 但使用 AVMutableVideoCompositionLayerInstruction 不起作用。

AVMutableCompositionTrack *videoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo
                                                                    preferredTrackID:kCMPersistentTrackID_Invalid];
CMTime insertTime = kCMTimeZero;
for(AVAsset *videoAsset in self.videoArray){
    [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:insertTime error:nil];
    // Updating the insertTime for the next insert
    insertTime = CMTimeAdd(insertTime, videoAsset.duration);
}
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(M_PI_2);
videoTrack.preferredTransform = rotationTransform;

// 3.1 - Create AVMutableVideoCompositionInstruction
AVMutableVideoCompositionInstruction *mainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
mainInstruction.timeRange = videoTrack.timeRange;

// 3.2 - Create an AVMutableVideoCompositionLayerInstruction for the video track and fix …
Run Code Online (Sandbox Code Playgroud)

transform objective-c video-processing avfoundation ios

1
推荐指数
1
解决办法
393
查看次数

在AVFoundation中叠加视频

AVFoundation没有为我的视频添加叠加层.我不确定我做错了什么.我已经尝试使叠加层完全变白,但它没有放在视频上.当视频播放时,它必须播放AVMutableComposition Track而不是我添加的exporter.videoComposition.我对AVFoundation的经验不足以了解出了什么问题.

AVMutableComposition *mixComposition = [[AVMutableComposition alloc] init];

// 3 - Video track
AVMutableCompositionTrack *videoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo
                                                                    preferredTrackID:kCMPersistentTrackID_Invalid];
 //    [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,self.videoAsset.duration)
//                        ofTrack:[[self.videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
//                         atTime:kCMTimeZero error:nil];
    CMTime insertTime = kCMTimeZero;
    for(AVURLAsset *videoAsset in self.videoArray){
        [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:insertTime error:nil];

        // Updating the insertTime for the next insert
        insertTime = CMTimeAdd(insertTime, videoAsset.duration);
    }

// 3.1 - Create AVMutableVideoCompositionInstruction
AVMutableVideoCompositionInstruction *mainInstruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
mainInstruction.timeRange = videoTrack.timeRange;

// 3.2 - Create an AVMutableVideoCompositionLayerInstruction for the video …
Run Code Online (Sandbox Code Playgroud)

overlay objective-c video-processing avfoundation calayer

0
推荐指数
1
解决办法
242
查看次数