标签: avcomposition

使用AVMutableComposition进行精确计时

我正在尝试使用AVMutableComposition在精确的时间播放一系列声音文件.

当视图加载时,我创建合成,目的是在1秒内均匀地播放4个声音.声音的长短不应该无关紧要,我只想在0,0.25,0.5和0.75秒时将它们发射:

AVMutableComposition *composition = [[AVMutableComposition alloc] init];
NSDictionary *options = @{AVURLAssetPreferPreciseDurationAndTimingKey : @YES};

for (NSInteger i = 0; i < 4; i++)
{
  AVMutableCompositionTrack* track = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
  NSURL *url = [[NSBundle mainBundle] URLForResource:[NSString stringWithFormat:@"sound_file_%i", i] withExtension:@"caf"];
  AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:options];
  AVAssetTrack *assetTrack = [asset tracksWithMediaType:AVMediaTypeAudio].firstObject;
  CMTimeRange timeRange = [assetTrack timeRange];
  Float64 t = i * 0.25;
  NSError *error;
  BOOL success = [track insertTimeRange:timeRange ofTrack:assetTrack atTime:CMTimeMakeWithSeconds(t, 1) error:&error];
  if (!success)
  {
    NSLog(@"unsuccesful creation of composition");
  } …
Run Code Online (Sandbox Code Playgroud)

core-audio avfoundation ios avcomposition avmutablecomposition

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

如何为AVVideoComposition设置透明背景?

更新 - 我已经为回答这个问题增加了50个声望奖励!

我有一个应用程序,需要将一些视频和照片放在一起,以创建一个电影.我正在使用AVMutableComposition.为了能够指导视频如何组合,我必须使用AVMutableVideoComposition.这个东西有一个名为的属性backgroundColor,Apple Documentation说:

仅支持纯色BGRA颜色; 模式和其他支持的颜色将被忽略.如果渲染的像素缓冲区没有alpha,则忽略背景颜色的alpha值.

我从中理解的是,有一种方法可以将alpha通道添加到backgroundColor,但我只是不明白如何.什么If the rendered pixel buffer does not have alpha, the alpha value of the background color is ignored.意思?我怎么能添加这样的东西?

如果我这样做myVideoCompositionInstruction.backgroundColor = [[UIColor colorWithWhite:1 alpha:0] CGColor];只是不起作用 - 背景保持白色并且不透明.

任何帮助将不胜感激,谢谢!

iphone transparent background-color avfoundation avcomposition

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

使用alpha合成2个视频

AVFoundation允许您将2个资源(2个视频)"组合"为2个"轨道",就像在Final Cut Pro中一样.

该理论说,我可以将两个视频叠加在一起,使用alpha,并查看两者.

我要么做错了,或者某处有错误,因为下面的测试代码虽然有点乱,但清楚地说明我应该看到2个视频,我只看到一个,如下所示:http://lockerz.com/s/172403384 - "蓝色"方块是IMG_1388.m4v

无论出于何种原因,IMG_1383.MOV永远不会显示.

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], AVURLAssetPreferPreciseDurationAndTimingKey, nil];
AVMutableComposition *composition = [AVMutableComposition composition];
CMTimeRange timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(4, 1));
AVMutableVideoComposition *videoComposition = [AVMutableVideoComposition videoComposition];

// Track B
NSURL *urlVideo2 = [NSURL URLWithString:@"file://localhost/Users/me/Movies/Temp/IMG_1388.m4v"];
AVAsset *video2 = [AVURLAsset URLAssetWithURL:urlVideo2 options:options];
AVMutableCompositionTrack *videoTrack2 = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:0];
NSArray *videoAssetTracks2 = [video2 tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *videoAssetTrack2 = ([videoAssetTracks2 count] > 0 ? [videoAssetTracks2 objectAtIndex:0] : nil);
[videoTrack2 insertTimeRange:timeRange ofTrack:videoAssetTrack2 atTime:kCMTimeZero error:&error];

AVMutableVideoCompositionLayerInstruction *to = …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c avfoundation avcomposition avvideocomposition

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

重新加载AVMutableComposition

我有一个AVMutableComposition,我已经与AVPlayer相关联.似乎如果我为这个合成添加曲目,除非我再次在播放器上设置合成,否则AVPlayer不会播放添加的曲目.现在我只是用已经设置的相同成分替换当前项目来做到这一点.之后它会拿起新的曲目.

我无法弄清楚这是不是这样做的正确方法,不知何故,这样做有点奇怪.

有任何想法吗?

谢谢

iphone objective-c avfoundation ios avcomposition

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

AVComposition打破了Airplay

我有一个视频合成,我想在Airplay上播放(没有镜像).当使用普通的Airplay镜像时,该应用程序可以正常工作,但我希望通过使用Airplay视频获得速度,可靠性和分辨率.

问题是,当我设置

player.usesAirPlayVideoWhileAirPlayScreenIsActive = YES;
Run Code Online (Sandbox Code Playgroud)

......玩家空白.

笔记:

  • 由于我没有为每个显示器创建单独的窗口,因此他们都试图使用相同的AVPlayer.
  • 我的AVVideoComposition包含不同的文件,并在它们之间添加不透明度斜坡.
  • 这个悬而未决的问题表明问题更可能是因为我正在播放AVComposition而不是使用共享播放器:AVComposition不通过Airplay视频播放

两个问题:

  1. 我是否必须摆脱iPad上的播放器?
  2. 可以通过AirPlay播放AVVideoComposition吗?

avfoundation ios avcomposition airplay

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

iOS7中的AVAssetImageGenerator随机失败

我有一个AVComposition和一个AVVideoComposition,我每半秒左右就生成一个拇指视频.我使用动画工具进行一些叠加.我在操作队列上执行调用,并在某些类型的编辑后触发.操作队列是串行而不是异步,因此进程永远不会运行并且我已经验证了这一点.下面的代码在串行队列中的另一个NSOperation中的主线程上执行.

现在我的问题是,拇指随机失败,没有模式.我可以运行一次并让它全部成功.我可以用完全相同的参数再次运行它,并且有一些拇指失败.我可以再次运行它并且有不同的拇指失败.

它似乎与其他线程中正在进行的其他活动有关,例如从ALAssetLibrary或MediaFramework查询大量项目.

我还要提到这在iOS6中没有这个问题.

在生成拇指之前,我会创建AVComposition和AVVideoComposition的副本.

有人对我有任何指示?

我很感激.

//this must be called on the main thread to correctly generate overlays
[[NSOperationQueue mainQueue] addOperationWithBlock:^{

    AVAsset *asset = avComposition;

    AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    generator.appliesPreferredTrackTransform = TRUE;

    AVMutableVideoComposition *mutableVideoComposition = (AVMutableVideoComposition *) avVideoComposition.mutableCopy;
    CALayer *baseSyncLayer = [CALayer layer];
    baseSyncLayer.frame = CGRectMake(0, 0, resolution.width, resolution.height);
    CALayer *videoLayer = [CALayer layer];
    videoLayer.frame = CGRectMake(0, 0, resolution.width, resolution.height);
    [baseSyncLayer addSublayer:videoLayer];
    __unused NSArray *imageLayers = [MovieCompositionService applyImageAnimations:avComposition andLayer:baseSyncLayer andProject:project fileRender:YES addTextOverlays:addTextOverlays andResolution:resolution];
    mutableVideoComposition.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer …
Run Code Online (Sandbox Code Playgroud)

avfoundation ios avcomposition video-thumbnails ios7

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

AVFoundation如何为AVComposition添加字幕轨道

我想在AVMutableComposition中添加AVMediaTypeSubtitle类型的轨道,添加本身很容易,但如何填充此轨道?以及如何阅读?!!

我找不到任何与如何读/写AVMediaTypeSubtitle类型的轨道相关的东西!

cocoa objective-c avfoundation subtitle avcomposition

5
推荐指数
0
解决办法
683
查看次数

尝试将AVComposition的TimeRange插入AVMutableComposition时出现错误-11800

AVFoundation只使用音频-即不使用视频-并试图将几个AVCompositions接一个接一个地结尾AVComposition

示例案例:仅两个AVComposition秒。通过创建一个AVPlayer,它们每个都可以正常运行,因此:

_player = [AVPlayer playerWithPlayerItem:[AVPlayerItem playerItemWithAsset:comp]]
Run Code Online (Sandbox Code Playgroud)

comp的实例在哪里AVMutableComposition?(顺便说一句,值得注意的是_player必须是一个ivar,否则ARC在播放之前会过早释放它-花了一段时间才能找到它。)

很好-执行

[_player play]
Run Code Online (Sandbox Code Playgroud)

导致comp成功播放。

但是,这失败了:

self.segments是的NSMutableArray自定义子类的包含元素AVMutableComposition

AVMutableComposition *comp = [AVMutableComposition composition];
NSError *err;
for (AVMutableComposition* c in self.segments) {
    [comp insertTimeRange:CMTimeRangeMake(kCMTimeZero, segment.duration)      
                  ofAsset:segment atTime:comp.duration error:&err];
    DLog(@"Error was %@", segment, err);
}
Run Code Online (Sandbox Code Playgroud)

对于self.segments执行此代码时的每个元素,调用该insertTimeRange::::方法时都会收到此错误:

Error was Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not
be completed" UserInfo=0x14e8e7f0 {NSLocalizedDescription=The operation could …
Run Code Online (Sandbox Code Playgroud)

iphone audio avfoundation ios avcomposition

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

iOS:在AV视频之上绘图,然后将图形保存在视频文件中

我正在开发一款使用AVFoundation课程录制和播放视频的iPad应用.我有基本记录/播放的所有代码,现在我想添加一个功能,允许用户在视频上绘制和注释 - 我认为这不会太困难.更难的部分,以及我无法找到任何示例的东西,将绘图和注释组合到视频文件本身.我怀疑这部分是用AVComposition完成的,但不确切知道如何.非常感谢您的帮助.

标记

video drawing avfoundation ios avcomposition

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