java gifendcoder,GitHub - ZuoerdingCoder/WAVideoBox: 秒级! 三行代码实现iOS视频压缩、变速、混音、合并、GIF水印、旋转、换音、裁剪 ! 支持不...

WAVideoBox

秒级! 三行代码实现iOS视频压缩、变速、混音、合并、GIF水印、旋转、换音、裁剪 ! 支持不同分辩率,支持你能想到的各种混合操作! 扩展性强...更多功能不断增加中...

iOS 8.0 +

有需要的功能或错误欢迎issue,笔者会及时更新

WAVideoBox是一款基于AVFoundation视频操作框架,用短短几行代码就可完成各种简单及至复杂的视频操作命令。使用简单,性能高超~

尤其是不同分辩率视频的组合操作,如,给A视频变速,给B视频加水印,把C视频旋转...把ABC..视频合并,再操作合并视频...循环...

用WAVideoBox能快速高效实现上述功能。

PS :支持多线程处理

iOS 8.0 ++

V 1.0.2 更新

支持编辑进度回调

支持动态水印合成

使用指导

常规操作: append一个视频 + 操作命令 + finish

组合操作:将所有视频append,操作命令 * n,finish

骚操作:参照文尾

下列代码均跑于6s 12.0系统

常规操作: 三行代码

// 压缩:将19秒的视频进行压缩, 耗时<1秒, 成果 : 6.7M -> 335KB (有损压缩,高清压缩可设置ratio videoQuality)

// 第一种:自动压缩,分low ,medium , high 三档

[_videoBox appendVideoByPath:_videoPath];

_videoBox.ratio = WAVideoExportRatioLowQuality;//有损压缩

[_videoBox asyncFinishEditByFilePath:filePath complete:^(NSError *error) {

// do it

}];

// 第二种:通过自行设定分辩率,实现高清压缩

[_videoBox appendVideoByPath:_videoPath];

_videoBox.ratio = WAVideoExportRatio640x480;

// _videoBox.vidoQuality = 6;还可以通过设置videoQuality进行精准压缩

[_videoBox asyncFinishEditByFilePath:filePath complete:^(NSError *error) {

// do it

}];

1581cf64fc376c38cfd69df2e5ba1be0.gif

// 拼接:将两个不同分辨率视频拼接(17秒的视频), 耗时<3秒 ,如果是相同分辩率的视频耗时<1秒

[_videoBox appendVideoByPath:_testThreePath];

[_videoBox appendVideoByPath:_testTwoPath];

[_videoBox asyncFinishEditByFilePath:filePath progress:^(float progress) {

// do it 长时间的操作可以添加进度监控

} complete:^(NSError * error) {

// do it

}];

// 混音:给视频混上其他视频/音乐的声音 (19秒视频), 耗时 < 1秒

[_videoBox appendVideoByPath:_videoPath];

[_videoBox dubbedSoundBySoundPath:_testThreePath];

[_videoBox asyncFinishEditByFilePath:filePath complete:^(NSError *error) {

// do it

}];

// 旋转、裁剪、换音、变速、水印....更多操作见demo

组合操作

// 将1号拼接到video,用2号的音频替换,给视频加一个水印,旋转180度,混上3号的音,速度加快两倍

// 把生好的视频裁6-12秒,压缩

// 耗时 < 2秒

[_videoBox appendVideoByPath:_videoPath];

[_videoBox appendVideoByPath:_testThreePath];

[_videoBox replaceSoundBySoundPath:_testTwoPath];

[_videoBox appendWaterMark:[UIImage imageNamed:@"waterMark"] relativeRect:CGRectMake(0.7, 0.7, 0.2, 0.1)];

[_videoBox rotateVideoByDegress:180];

[_videoBox dubbedSoundBySoundPath:_testOnePath];

[_videoBox gearBoxWithScale:2];

[_videoBox rangeVideoByTimeRange:CMTimeRangeMake(CMTimeMake(2400, 600), CMTimeMake(3600, 600))];

[_videoBox asyncFinishEditByFilePath:filePath progress:^(float progress) {

// do it 长时间的操作可以添加进度监控

} complete:^(NSError * error) {

// do it

}];

骚操作

// 放入原视频,换成1号的音,再把3号视频放入混音,剪其中8秒

// 拼1号视频,给1号水印,剪其中8秒

// 拼2号视频,给2号变速

// 拼3号视频,旋转180,剪其中8秒

// 把最后的视频再做一个变速

// 耗时<3秒,如果都是分辩率一致的视频,将更快

[_videoBox appendVideoByPath:_videoPath];

[_videoBox replaceSoundBySoundPath:_testOnePath];

[_videoBox dubbedSoundBySoundPath:_testThreePath];

[_videoBox rangeVideoByTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(3600, 600))];

[_videoBox appendVideoByPath:_testOnePath];

[_videoBox appendWaterMark:[UIImage imageNamed:@"waterMark"] relativeRect:CGRectMake(0.7, 0.7, 0.2, 0.12)];

[_videoBox rangeVideoByTimeRange:CMTimeRangeMake(CMTimeMake(3600, 600), CMTimeMake(3600, 600))];

[_videoBox appendVideoByPath:_testTwoPath];

[_videoBox gearBoxWithScale:2];

[_videoBox appendVideoByPath:_testThreePath];

[_videoBox rotateVideoByDegress:180];

[_videoBox rangeVideoByTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeMake(3600, 600))];

[_videoBox commit];

[_videoBox gearBoxWithScale:2];

[_videoBox asyncFinishEditByFilePath:filePath progress:^(float progress) {

// do it 长时间的操作可以添加进度监控

} complete:^(NSError * error) {

// do it

}];

01ce5c91d5daea0807f9a4cec2fe42aa.gif

Box分析

PS:为了灵活的调用、任意使用,效果与代码的调用顺序有关

比如先变速,再换音轨,明显后面才换的音轨不会有变速效果

WAVideoBox的工作区域:

----缓存区,appedVideo后缓存区域

----工作区,视频指令区域,只有在这区域的视频才是有效操作

----合成区,完成视频指令后待合成区域

1、appendVideo:会将视频加入到缓存区,将工作区内容合成一个视频(无法再拆散),并移到合成区,清空工作区

2、视频操作指令:缓存区视频放到工作区,视频操作只对工作区视频有效

3、commit:合成区域,将缓存区,合成区的视频移到工作区,视频操作对所有视频有效

tip:线程安全,适用于短视频处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值