相关疑难解决方法(0)

如何使用AVAssetExportSession在AVMutableComposition上正确导出CALayer

我知道之前曾问过这个问题(例如这里这里),但我无法弄清楚我做错了什么.

我有一个AVMutableComposition用于将一些视频剪辑与一些CALayer动画组合在一起的视频剪辑.

当我AVMutableComposition把它和它结合在一起AVSynchronizedLayer进行播放时,一切正常AVPlayerLayer.视频输出正确,一切都放在应有的位置.

我的问题是,当我尝试导出这个东西时,我尝试使用AVVideoCompositionCoreAnimationTool而不是AVSynchronizedLayer(这是文档中我们应该用于导出的东西)和AVAssetExportSession,但是出了点问题,因为在我导出的电影中,每个CALayer都有它的坐标系反转.

所以,如果在播放过程中0,0点是在左上角的屏幕一角时,我出口的电影的0,0点是在左下方的角落,因此我的动画发疯.

我阅读了有关此内容的任何可能的文章,我还从Apple下载了AVVideoEdit示例,但我无法看到发生了什么......

iphone core-animation avfoundation avmutablecomposition avassetexportsession

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

在视频上进行图像叠加时,iPhone AVErrorInvalidVideoComposition错误?

我将这里找到的2个代码块合并为一个实体块(并使用Apple Developer Xcode教程文件验证了该过程).但是,当我运行它时,我收到一个错误.它说:

错误域= AVFoundationErrorDomain代码= -11841"操作无法完成.(AVFoundationErrorDomain error -11841.)"

知道它为什么抛出AVErrorInvalidVideoComposition错误吗?谢谢!(我是新来的,如果您需要更多信息,请告诉我.)

NSURL *videoURL = [info valueForKey:UIImagePickerControllerMediaURL];

/// UIImage into CALayer
UIImage *myImage = [UIImage imageNamed:@"Test.png"];
CALayer *aLayer = [CALayer layer];
aLayer.contents = (id)myImage.CGImage;

AVURLAsset* url = [AVURLAsset URLAssetWithURL:videoURL options:nil];
AVMutableComposition *videoComposition = [[AVMutableComposition alloc] init];
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];

AVMutableCompositionTrack *compositionVideoTrack = [videoComposition  addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipVideoTrack = [[url tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [url duration])  ofTrack:clipVideoTrack atTime:kCMTimeZero error:&error];

AVMutableVideoComposition* videoComp = [[AVMutableVideoComposition alloc] init];
videoComp.renderSize = CGSizeMake(640, …
Run Code Online (Sandbox Code Playgroud)

iphone watermark video-editing

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

使用AVFoundation混合图像和视频

我正在尝试将图像拼接成预先存在的视频,以便在Mac上使用AVFoundation创建新的视频文件.

到目前为止,我已经阅读了Apple文档示例,

ASSETWriterInput用于在Iphone问题上从UIImages制作视频

使用AVVideoCompositionCoreAnimationTool在CALayer中将视频与静态图像混合

AVFoundation教程:为视频和其他一些SO链接添加叠加和动画

现在这些已经被证明是非常有用的,但我的问题是我没有创建一个静态水印或覆盖,我想在视频的各个部分之间插入图像.到目前为止,我已经设法获取视频并创建空白部分以插入这些图像并将其导出.

我的问题是让图像在这些空白部分插入自己.我可以看到可行的唯一方法是创建一系列动画层,以便在正确的时间改变它们的不透明度,但我似乎无法让动画工作.

下面的代码是我用来创建视频片段和图层动画的代码.

    //https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_Editing.html#//apple_ref/doc/uid/TP40010188-CH8-SW7

    // let's start by making our video composition
    AVMutableComposition* mutableComposition = [AVMutableComposition composition];
    AVMutableCompositionTrack* mutableCompositionTrack = [mutableComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

    AVMutableVideoComposition* mutableVideoComposition = [AVMutableVideoComposition videoCompositionWithPropertiesOfAsset:gVideoAsset];

    // if the first point's frame doesn't start on 0
    if (gFrames[0].startTime.value != 0)
    {
        DebugLog("Inserting vid at 0");
        // then add the video track to the composition track with a time range from 0 to the first point's startTime
        [mutableCompositionTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, gFrames[0].startTime) ofTrack:gVideoTrack atTime:kCMTimeZero …
Run Code Online (Sandbox Code Playgroud)

macos avfoundation cgimage caanimation ios

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