相关疑难解决方法(0)

CALayer.contents无法在AVMutableComposition中正确呈现

我有一个非常简单的方法,可以生成一个视频,其中包含覆盖整个视频合成的静态背景图像,以及位于视频底部的较小的,部分透明的图像(水印样式).

背景图像正确渲染,看起来与图像查看器中的外观完全相同.但是,应该在视频底部呈现的图像是倾斜/失真的.

源代码可以在这里下载,在GitHub上.

我的代码的预期输出(所需视频输出的模型):

视频的预期输出

我的代码的实际输出(来自iOS模拟器的部分屏幕截图):

我视频输出的实际屏幕截图

如您所见,页脚图像以45度角和略微波浪形倾斜.

以下是我目前用于生成视频的代码.我已经尝试了每个可能的内容组合的重力为页脚图像,没有运气.所有其他的例子,我只是看到设置一个CGImageRef为图层的contents然后设置bounds,positionanchorPoint以相应的值.我没有看到任何其他设置任何其他属性的示例.我已经阅读了几乎所有AVFoundation的文档,看看是否有我失踪的设置,但我还没有看到任何明显的东西.

任何建议将不胜感激.谢谢!

接口声明:

CGSize _renderingSize;
float _displayDuration;

AVMutableComposition *mutableComposition;
AVMutableVideoComposition *videoComposition;
AVMutableCompositionTrack *mutableCompositionVideoTrack;
AVAssetExportSession *exporter;
Run Code Online (Sandbox Code Playgroud)

ViewDidLoad设置:

_renderingSize = CGSizeMake(640, 360);
_displayDuration = 2.0;
Run Code Online (Sandbox Code Playgroud)

渲染代码块:

    mutableComposition = [AVMutableComposition composition];
    mutableCompositionVideoTrack = [mutableComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

    videoComposition = [AVMutableVideoComposition videoComposition];
    videoComposition.renderSize = _renderingSize;
    videoComposition.frameDuration = CMTimeMake(1, 30);

    CALayer *parentLayer = [CALayer layer];
    CALayer *videoLayer = [CALayer layer];
    parentLayer.frame = CGRectMake(0, 0, videoComposition.renderSize.width, videoComposition.renderSize.height);
    videoLayer.frame = CGRectMake(0, 0, videoComposition.renderSize.width, videoComposition.renderSize.height); …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c avfoundation calayer ios

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

标签 统计

avfoundation ×1

calayer ×1

ios ×1

iphone ×1

objective-c ×1