ios开发视频合成,ios开发视频合成的软件

iOS 把两个视屏合并成一个视频详细

- (void)viewDidLoad

京山网站建设公司创新互联建站,京山网站设计制作,有大型网站制作公司丰富经验。已为京山上千多家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的京山做网站的公司定做!

{       [superviewDidLoad];

  self.array 里面放的是两个视频的地址  ,类型为NSurl

path 是你合并后的存放的地址路径

    [self mergeAndExportVideos:self.array withOutPath:path];

}

- (void)mergeAndExportVideos:(NSMutableArray*)videosPathArraywithOutPath:(NSString*)outpath

{

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

//音频轨道

AVMutableCompositionTrack*audioTrack = [mixCompositionaddMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

//视频轨道

AVMutableCompositionTrack*videoTrack = [mixCompositionaddMutableTrackWithMediaType:AVMediaTypeVideo

preferredTrackID:kCMPersistentTrackID_Invalid];

CMTime totalDuration =kCMTimeZero;

for(inti =0; i videosPathArray.count; i++) {

//AVURLAsset:AVAsset的子类,此类主要用于获取多媒体的信息,包括视频、音频的类型、时长、每秒帧数,其实还可以用来获取视频的指定位置的缩略图。

AVURLAsset*asset = [AVURLAssetassetWithURL:videosPathArray[i]];

NSError*erroraudio =nil;

//获取AVAsset中的音频

AVAssetTrack*assetAudioTrack = [[assettracksWithMediaType:AVMediaTypeAudio]firstObject];

//向通道内加入音频

BOOLba = [audioTrackinsertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration)

ofTrack:assetAudioTrack

atTime:totalDuration

error:erroraudio];

NSLog(@"erroraudio:%@%d",erroraudio,ba);

NSError*errorVideo =nil;

//获取AVAsset中的视频

AVAssetTrack*assetVideoTrack = [[assettracksWithMediaType:AVMediaTypeVideo]firstObject];

//向通道内加入视频

BOOLbl = [videoTrackinsertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration)

ofTrack:assetVideoTrack

atTime:totalDuration

error:errorVideo];

NSLog(@"errorVideo:%@%d",errorVideo,bl);

totalDuration =CMTimeAdd(totalDuration, asset.duration);

}

//创建合成后写入的路劲

NSURL*mergeFileURL = [NSURLfileURLWithPath:outpath];

if([[NSFileManagerdefaultManager]fileExistsAtPath:outpath])

{

NSLog(@"有文件");

return;

}

//这里开始导出合成后的视频

AVAssetExportSession*exporter = [[AVAssetExportSessionalloc]initWithAsset:mixComposition

presetName:AVAssetExportPreset640x480];

exporter.outputURL= mergeFileURL;

NSLog(@"%@",exporter.supportedFileTypes);

if([self.typeisEqualToString:@"mp4"]) {

exporter.outputFileType=AVFileTypeMPEG4;

}else

{

exporter.outputFileType=AVFileTypeQuickTimeMovie;

}

exporter.shouldOptimizeForNetworkUse=YES;

[exporter exportAsynchronouslyWithCompletionHandler:^{

//导出的状态

switch(exporter.status) {

caseAVAssetExportSessionStatusUnknown:

NSLog(@"exporter Unknow");

break;

caseAVAssetExportSessionStatusCancelled:

NSLog(@"exporter Canceled");

break;

caseAVAssetExportSessionStatusFailed:

//导出失败

NSLog(@"exporter Failed");

break;

caseAVAssetExportSessionStatusWaiting:

NSLog(@"exporter Waiting");

break;

caseAVAssetExportSessionStatusExporting:

NSLog(@"exporter Exporting");

break;

caseAVAssetExportSessionStatusCompleted:

//导出成功

NSLog(@"exporter Completed");

dispatch_async(dispatch_get_main_queue(), ^{

//这里是回到你的主线程做一些事情

});

break;

}

}];

}

}

}

- (void)clearCache

{

if([[NSFileManagerdefaultManager]fileExistsAtPath:self.outPath])

{

//这里是你可以删除你合成后的视频文件

//self.outPath 是你保存视频的路劲,当然你也可以通过该路劲删除它

NSLog(@"删除成功");

[[NSFileManager defaultManager] removeItemAtPath:self.outPath error:nil];

}

}

iOS 本地多个短视频合成

自己遇到的坑:

1.视频和音频需要分开合成;

2.竖屏拍摄的视频,合成后改变了方向, 只好自己更改方向

实现步骤:

在.h中添加合成时需要调用的方法

在.m中添加

苹果手机如何将两个视频合成一个视频

我们可能有时会把视频分成几个片断拍摄,完成以后需要把它们合并成一个,那么,怎么把两个或多个视频合成一个视频呢?

开启分步阅读模式

操作方法

01

进入手机中的“附加程序”,找到"iMovie剪辑",打开它。

02

选择“创建项目”,可选择“影片”或“预先片”。

03

选择“创建影片”。

04

点击加号“+”。

05

进入视频,点击要选择的视频,然后点击一个圆圈内有加号的图标。

06

继续点击“+”,重复以上步骤, 添加两个或多个视频,右下角有个设置的小图标,点击它。

07

可以在这里添加滤镜、主题和音乐等,完了以后点击“完成”。

08

这样,两个或多个视频就被合并在一起了,我们点击底部中间的保存分享小图标。

09

点击“存储视频”,就可以到相册里播放视频了。

特别提示

可以重新进入iMovie剪辑观看视频。

如有帮助,不胜荣幸。


本文标题:ios开发视频合成,ios开发视频合成的软件
转载来源:http://scyanting.com/article/hoocdo.html