当用户发现比较搞笑的视频时,总是想进行模仿的,在短视频app制作合拍功能之前,我们至少需要两部手机,一部负责播放原视频,一部负责拍摄我们自己,非常不便,而现在,合拍功能应运而生,本篇文章是关于在短视频源码中添加合拍功能的教程。

通过本文,你将可以为自己的短视频app制作合拍功能,代码如下:

一、 短视频合拍功能的实现步骤

1、下载

2、拍摄

3、添加各种效果

4、发布

二、 具体实现步骤的短视频源码:

-(void)downloadVideo:(RKDownType)downType{

NSString *href = [NSString stringWithFormat:@"%@",[_parameterDic valueForKey:@"href_w"]];
if (downType == RKDownType_Chorus) {
href = [NSString stringWithFormat:@"%@",[_parameterDic valueForKey:@"href"]];
}
href = [PublicObj decrypt:href];
if (href.length <= 0 || [href containsString:@".m3u8"]) {
if (downType == RKDownType_Save) {

如果该视频暂不支持合拍和下载,则会显示:

[MBProgressHUD showError:@"该视频暂不支持下载"];
}else {
[MBProgressHUD showError:@"该视频暂不支持合拍"];
}
_isDownLoading = NO;
[self dismiss];
return;
}
NSString *title = [NSString stringWithFormat:@"%@",[_parameterDic valueForKey:@"title"]];
if (title.length == 0) {
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970]*1000;
NSString *timeString = [NSString stringWithFormat:@"%d", (int)a];
title = timeString;
}
hud = [MBProgressHUD showHUDAddedTo:self animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;

正在下载视频时显示:“正在下载视频,请稍等”

NSString *showDesText = @"正在下载视频";
downType == RKDownType_Save ? (showDesText = @"正在下载视频"):(showDesText = @"请稍等...");
hud.label.text = showDesText;
//1.创建会话管理者
AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];
NSURL *url = [NSURL URLWithString:href];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSMutableURLRequest *m_reques = [request mutableCopy];
[m_reques addValue:h5url forHTTPHeaderField:@"referer"];
request = [m_reques copy];
NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
//hud.progress = downloadProgress.fractionCompleted;
dispatch_async(dispatch_get_main_queue(), ^{
hud.progress = downloadProgress.completedUnitCount / downloadProgress.totalUnitCount;
});
//监听下载进度
//completedUnitCount 已经下载的数据大小
//totalUnitCount 文件数据的中大小
NSLog(@"%f",1.0 *downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);

} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSString *fullPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
NSLog(@"targetPath:%@",targetPath);
NSLog(@"fullPath:%@",fullPath);

return [NSURL fileURLWithPath:fullPath];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
fullPathsss = filePath;
NSLog(@"%@",filePath);

if (downType == RKDownType_Save) {
UISaveVideoAtPathToSavedPhotosAlbum([filePath path], self, @selector(video:didFinishSavingWithError:contextInfo:), nil);
}else {
dispatch_async(dispatch_get_main_queue(), ^{
_isDownLoading = NO;
[self dismiss];

if ([PublicObj checkNull:[fullPathsss path]]) {
[MBProgressHUD showPop:@"该视频暂不支持合拍"];
return ;
}
if (self.shareEvent) {
self.shareEvent(4, [fullPathsss path]);
}
});
}

}];

//3.执行Task
[download resume];

}
-(void)startCameraPreview {
if (_cameraPreviewing == NO) {
//合拍
if (_recordType == RecordType_Chorus) {
[[TXUGCRecord shareInstance]setMute:YES];
[self isChorusEvent];
}else {
[self resetUGCConfig:NO];
}
[_progressView updateMinTime:MIN_RECORD_TIME andMaxTime:MAX_RECORD_TIME];

[TXUGCRecord shareInstance].recordDelegate = self;
[TXUGCRecord shareInstance].videoProcessDelegate = self;
if ([PublicObj checkNull:[common getTISDKKey]]) {
isTXfiter = YES;
[[TXUGCRecord shareInstance] setBeautyStyle:0 beautyLevel:[TXBaseBeautyView getBaseWhiteValue] whitenessLevel:[TXBaseBeautyView getBaseWhiteValue] ruddinessLevel:0];
}else{
isTXfiter = NO;
[[TXUGCRecord shareInstance] setBeautyStyle:0 beautyLevel:0 whitenessLevel:0 ruddinessLevel:0];

[[MHSDK shareInstance] init:[PublicObj decrypt:[common getTISDKKey]]];
}
[[TXUGCRecord shareInstance] setEyeScaleLevel:0];
[[TXUGCRecord shareInstance] setFaceScaleLevel:0];
_cameraPreviewing = YES;
}
}

以上就是短视频源码实现合拍功能的代码实现方式,欢迎大家在评论区和我讨论,文章声明原创,转载请注明文章来自“云豹科技官方”