Tag: avmutablecomposition

如何将静止图像添加到AVComposition?

我有一个AVMutableComposition与一个video轨道,我想添加一个静态图像到video轨道,以显示一段时间。 静止图像只是一个PNG。 我可以加载图像作为资产,但这是关于它,因为生成的资产没有任何轨道,因此不能使用insertTimeRange…方法插入。 有没有办法将静止图像添加到作品? 看起来答案是在Core Animation的某个地方,但是整个事情似乎高于我的头,我将不胜感激代码示例或一些信息指针。

合并audio和videoSwift

我试图合并N个音轨,一个video文件。 video是MP4格式,所有的audio都是m4a。 所有的准备工作都很好,但是出口完成时总是失败。 下面是我的代码: func mixAudioAndVideo() { self.player?.pause() let mixComposition = AVMutableComposition() let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) let docsDirect = paths[0] for audioTrack in self.audioTracks { let musicFile = docsDirect.URLByAppendingPathComponent(audioTrack.audioName) let audioAsset = AVURLAsset(URL: musicFile!, options: nil) let audioTimeRange = CMTimeRangeMake(audioTrack.audioTime!, audioAsset.duration) let compositionAudioTrack:AVMutableCompositionTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: kCMPersistentTrackID_Invalid) do { try compositionAudioTrack.insertTimeRange(audioTimeRange, ofTrack: audioAsset.tracksWithMediaType(AVMediaTypeAudio).first!, […]

使用AVMutableComposition iPhone

我正在使用下面的代码,顺序stream式传输两个video。 但它没有在模拟器中显示任何video,它完全空白。 另外我怎样才能通过这两个video寻求。 就像,如果一个video是2分钟,第二个是3分钟。 现在我需要得到这些video的总时间,并通过它们来寻找。 当我将滑杆滑动到4分钟时,第二个video应该从第2分钟开始播放。 可能吗? – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSURL *url1 = [NSURL URLWithString:@"http://www.tools4movies.com/dvd_catalyst_profile_samples/Harold%20Kumar%203%20Christmas%20bionic.mp4"]; NSURL *url2 = [NSURL URLWithString:@"http://www.tools4movies.com/dvd_catalyst_profile_samples/Harold%20Kumar%203%20Christmas%20tablet.mp4"]; NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; AVMutableComposition *composition = [[AVMutableComposition alloc] init]; asset1 = [[AVURLAsset alloc] initWithURL:url1 options:options]; AVURLAsset […]

从video文件中提取audio

如何从video文件中提取audio而不使用FFmpeg ? 我想使用AVMutableComposition和AVURLAsset来解决它从.mov到.m4a文件的转换。

AVMutableComposition – video资产之间的空白/黑框

我目前正在尝试使用AVMutableComposition将5个video背对背放置,如下所示: [mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset1.duration) ofAsset:asset1 atTime:[mixComposition duration] error:nil]; [mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset2.duration) ofAsset:asset2 atTime:[mixComposition duration] error:nil]; [mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset3.duration) ofAsset:asset3 atTime:[mixComposition duration] error:nil]; [mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset4.duration) ofAsset:asset4 atTime:[mixComposition duration] error:nil]; [mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset5.duration) ofAsset:asset5 atTime:[mixComposition duration] error:nil]; 然后,我使用AVAssetExportSession导出video,然而,每个video之间的工作,我得到一个空白/黑框,我需要删除。 有没有人有过这个问题,如果是你设法解决它? 另外,空白帧不在源video文件中。 提前致谢。

在AVMutableComposition中使用AVMutableCompositionTrack合并video和图像,而不是AVVideoCompositionCoreAnimationTool?

以下代码使用AVMutableComposition导出video。 但在导出的video中,如果要在源video结束后显示图像3秒钟,是否有办法使用AVMutableCompositionTrack执行该操作,还是需要在video结束后添加图像层并为其外观制作animation? 最终目标是将任意数量的图像和video合并为一个主video。 不幸的是,在testing期间, AVVideoCompositionCoreAnimationTool似乎严重降低了导出过程(从<1秒到10-20秒),因此如果可能的话,目标是避免AVVideoCompositionCoreAnimationTool 。 // Create composition object let composition = AVMutableComposition() let compositionVideoTrack = composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID(kCMPersistentTrackID_Invalid)) let compositionAudioTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID(kCMPersistentTrackID_Invalid)) var insertTime = kCMTimeZero // Extract tracks from slice video let videoURL = NSURL(fileURLWithPath: videoPath) let videoAsset = AVURLAsset(URL: videoURL, options: nil) let sourceVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] let sourceAudioTrack = […]

添加AVMutableVideoComposition的文本覆盖到特定的时间范围

我发现了一些示例,展示了如何在video上添加文字叠加层。 Ray的教程 – http://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos 这就是答案 – 如何在iOS上捕获的video中添加水印 还有一些我也提到了。 我的代码看起来几乎与该答案相同,我一直在试图调整它以使文本覆盖在video的开头只显示一两秒钟。 任何帮助,我怎么能做到这一点? 这是我的代码。 这是工作原理导出video覆盖显示整个持续时间。 if(vA) { videoCompositionTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; [videoCompositionTrack insertTimeRange:videoTimerange ofTrack:[[vA tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:&error]; [videoCompositionTrack setPreferredTransform:[[[vA tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] preferredTransform]]; if(error) NSLog(@"%@", error); } if(aA) { audioCompositionTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; [audioCompositionTrack insertTimeRange:audioTimerange ofTrack:[[aA tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:&error]; if(error) NSLog(@"%@", error); } CGSize videoSize […]

如何使用AVMutableCompositionTrack合并audio和video

在我的应用程序中,我需要合并audio和video,然后我需要在Mediaplayer中播放audio文件。 我如何合并IOS中的audio和video。 有没有任何源代码。 请给我一些build议 提前致谢

简单的屏幕截图:只logging在UIView的图层内出现的video?

这个SO答案解决了如何做一个UIView的屏幕截图。 我们需要类似的东西,而不是一个单一的图像,目标是产生超过60秒的UIView内出现的一切video – 概念上只logging该UIView的图层,忽略其他层。 我们的video应用在用户正在logging的任何位置叠加图层,最终目标是生成将这些图层与原始video合并的主video。 但是,使用AVVideoCompositionCoreAnimationTool将图层与原始video合并非常非常慢:导出60秒的video需要10-20秒。 我们发现结合两个video(即,仅使用不带AVVideoCompositionCoreAnimationTool )是非常快的:〜1秒。 希望是创build一个独立的图层video,然后将其与原始video结合使用AVMutableComposition. 斯威夫特的答案是理想的,但不是必需的。

AVMutableVideoComposition旋转以纵向模式拍摄的video

我已经使用下面的代码添加图像覆盖video,然后将新生成的video导出到文档目录。 但奇怪的是,video旋转了90度。 – (void)buildTransitionComposition:(AVMutableComposition *)composition andVideoComposition:(AVMutableVideoComposition *)videoComposition { CMTime nextClipStartTime = kCMTimeZero; NSInteger i; // Make transitionDuration no greater than half the shortest clip duration. CMTime transitionDuration = self.transitionDuration; for (i = 0; i < [_clips count]; i++ ) { NSValue *clipTimeRange = [_clipTimeRanges objectAtIndex:i]; if (clipTimeRange) { CMTime halfClipDuration = [clipTimeRange CMTimeRangeValue].duration; halfClipDuration.timescale *= […]