Skip to content

Commit 619313c

Browse files
committed
1.5.7 #5
1 parent 5aee5c3 commit 619313c

File tree

4 files changed

+46
-17
lines changed

4 files changed

+46
-17
lines changed

DPVideoMerger-Swift.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
1616
#
1717

1818
s.name = "DPVideoMerger-Swift"
19-
s.version = "1.5.5"
19+
s.version = "1.5.7"
2020
s.summary = "Multiple videos merge in one video with manage scale & aspect ratio and also merge 4 videos to grid layout for Swift."
2121

2222
# This description is used to generate tags and improve search results.

DPVideoMerger/DPVideoMerger.xcodeproj/project.pbxproj

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@
428428
CODE_SIGN_STYLE = Manual;
429429
DEVELOPMENT_TEAM = "";
430430
INFOPLIST_FILE = Example/Info.plist;
431+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
431432
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
432433
PRODUCT_BUNDLE_IDENTIFIER = com.Datt.DPVideoMerger;
433434
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -446,6 +447,7 @@
446447
CODE_SIGN_STYLE = Manual;
447448
DEVELOPMENT_TEAM = "";
448449
INFOPLIST_FILE = Example/Info.plist;
450+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
449451
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
450452
PRODUCT_BUNDLE_IDENTIFIER = com.Datt.DPVideoMerger;
451453
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -469,9 +471,9 @@
469471
DYLIB_INSTALL_NAME_BASE = "@rpath";
470472
INFOPLIST_FILE = "DPVideoMerger-Swift/Info.plist";
471473
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
472-
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
474+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
473475
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
474-
MARKETING_VERSION = 1.5.5;
476+
MARKETING_VERSION = 1.5.7;
475477
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
476478
MTL_FAST_MATH = YES;
477479
PRODUCT_BUNDLE_IDENTIFIER = "com.datt.DPVideoMerger-Swift";
@@ -499,9 +501,9 @@
499501
DYLIB_INSTALL_NAME_BASE = "@rpath";
500502
INFOPLIST_FILE = "DPVideoMerger-Swift/Info.plist";
501503
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
502-
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
504+
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
503505
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
504-
MARKETING_VERSION = 1.5.5;
506+
MARKETING_VERSION = 1.5.7;
505507
MTL_FAST_MATH = YES;
506508
PRODUCT_BUNDLE_IDENTIFIER = "com.datt.DPVideoMerger-Swift";
507509
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";

DPVideoMerger/DPVideoMerger/DPVideoMerger.swift

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,26 @@
99
import UIKit
1010
import AVKit
1111

12-
public final class DPVideoMerger: NSObject {
13-
//videoQuality : AVAssetExportPresetMediumQuality(default) , AVAssetExportPresetLowQuality , AVAssetExportPresetHighestQuality
14-
public func mergeVideos(withFileURLs
12+
13+
14+
@objc protocol VideoMerger {
15+
func mergeVideos(withFileURLs videoFileURLs: [URL], videoResolution:CGSize, videoQuality:String, completion: @escaping (_ mergedVideoURL: URL?, _ error: Error?) -> Void)
16+
func gridMergeVideos(withFileURLs videoFileURLs: [URL], videoResolution: CGSize, isRepeatVideo: Bool, videoDuration: Int, videoQuality: String, completion: @escaping (_ mergedVideoURL: URL?, _ error: Error?) -> Void)
17+
}
18+
19+
@objc open class DPVideoMerger : NSObject {
20+
}
21+
22+
extension DPVideoMerger : VideoMerger {
23+
/// Multiple videos merge in one video with manage scale & aspect ratio
24+
/// - Parameters:
25+
/// - videoFileURLs: Video file path URLs, Array of videos that going to merge
26+
/// - videoResolution: Output video resolution, (defult: CGSize(width: -1, height: -1), find max width and height from provided videos)
27+
/// - videoQuality: AVAssetExportPresetMediumQuality(default) , AVAssetExportPresetLowQuality , AVAssetExportPresetHighestQuality
28+
/// - completion: Completion give 2 optional values, 1)mergedVideoURL: URL path of successfully merged video 2)error: Gives Error object if some error occur in videos merging process
29+
/// - mergedVideoURL: URL path of successfully merged video
30+
/// - error: Gives Error object if some error occur in videos merging process
31+
open func mergeVideos(withFileURLs
1532
videoFileURLs: [URL],
1633
videoResolution:CGSize = CGSize(width: -1, height: -1),
1734
videoQuality:String = AVAssetExportPresetMediumQuality,
@@ -154,7 +171,7 @@ public final class DPVideoMerger: NSObject {
154171
switch videoAssetOrientation_ {
155172
case UIImage.Orientation.right:
156173
Move = CGAffineTransform(translationX: (videoAssetWidth * factor) + CGFloat(tx) , y: CGFloat(ty))
157-
transform = CGAffineTransform(rotationAngle:degreeToRadian(90))
174+
transform = CGAffineTransform(rotationAngle: degreeToRadian(90))
158175
layerInstruction.setTransform(transform.concatenating(Scale.concatenating(Move)), at: .zero)
159176
case UIImage.Orientation.left:
160177
Move = CGAffineTransform(translationX: CGFloat(tx), y: videoSize.height - CGFloat(ty))
@@ -225,26 +242,36 @@ public final class DPVideoMerger: NSObject {
225242
}
226243
}
227244
}
228-
func videoTarckError() -> Error {
245+
fileprivate func videoTarckError() -> Error {
229246
let userInfo: [AnyHashable : Any] =
230247
[ NSLocalizedDescriptionKey : NSLocalizedString("error", value: "Provide correct video file", comment: "") ,
231248
NSLocalizedFailureReasonErrorKey : NSLocalizedString("error", value: "No video track available", comment: "")]
232249
return NSError(domain: "DPVideoMerger", code: 404, userInfo: (userInfo as! [String : Any]))
233250
}
234-
func audioTarckError() -> Error {
251+
fileprivate func audioTarckError() -> Error {
235252
let userInfo: [AnyHashable : Any] =
236253
[ NSLocalizedDescriptionKey : NSLocalizedString("error", value: "Video file had no Audio track", comment: "") ,
237254
NSLocalizedFailureReasonErrorKey : NSLocalizedString("error", value: "No Audio track available", comment: "")]
238255
return NSError(domain: "DPVideoMerger", code: 404, userInfo: (userInfo as! [String : Any]))
239256
}
240-
func videoSizeError() -> Error {
257+
fileprivate func videoSizeError() -> Error {
241258
let userInfo: [AnyHashable : Any] =
242259
[ NSLocalizedDescriptionKey : NSLocalizedString("error", value: "videoSize height/width should grater than equal to 100", comment: "") ,
243260
NSLocalizedFailureReasonErrorKey : NSLocalizedString("error", value: "videoSize too small", comment: "")]
244261
return NSError(domain: "DPVideoMerger", code: 404, userInfo: (userInfo as! [String : Any]))
245262
}
246263

247-
public func gridMergeVideos(withFileURLs
264+
/// Merge 4 videos to grid layout
265+
/// - Parameters:
266+
/// - videoFileURLs: Video file path URLs, Array of 4 videos that going to grid merge
267+
/// - videoResolution: Output video resolution
268+
/// - isRepeatVideo: Repeat Video on grid if one or more video have shorter duartion time then output video duration
269+
/// - videoDuration: Output video duration (defult: -1, find max duration from provided 4 videos)
270+
/// - videoQuality: AVAssetExportPresetMediumQuality(default) , AVAssetExportPresetLowQuality , AVAssetExportPresetHighestQuality
271+
/// - completion: completion give 2 optional values, 1)mergedVideoURL: URL path of successfully grid merged video 2)error: gives Error object if some error occur in videos merging process
272+
/// - mergedVideoURL: URL path of successfully grid merged video
273+
/// - error: gives Error object if some error occur in videos merging process
274+
open func gridMergeVideos(withFileURLs
248275
videoFileURLs: [URL],
249276
videoResolution: CGSize,
250277
isRepeatVideo: Bool = false,
@@ -421,24 +448,24 @@ public final class DPVideoMerger: NSObject {
421448

422449
}
423450

424-
func videoCountError() -> Error {
451+
fileprivate func videoCountError() -> Error {
425452
let userInfo: [AnyHashable : Any] =
426453
[ NSLocalizedDescriptionKey : NSLocalizedString("error", value: "Provide 4 Videos", comment: "") ,
427454
NSLocalizedFailureReasonErrorKey : NSLocalizedString("error", value: "gridMerge required 4 videos to merge", comment: "")]
428455
return NSError(domain: "DPVideoMerger", code: 404, userInfo: (userInfo as! [String : Any]))
429456
}
430457

431-
func videoDurationError() -> Error {
458+
fileprivate func videoDurationError() -> Error {
432459
let userInfo: [AnyHashable : Any] =
433460
[ NSLocalizedDescriptionKey : NSLocalizedString("error", value: "videoDuration should grater than equal to logest video duration from all videoes.", comment: "") ,
434461
NSLocalizedFailureReasonErrorKey : NSLocalizedString("error", value: "videoDuration is small to complete videoes", comment: "")]
435462
return NSError(domain: "DPVideoMerger", code: 404, userInfo: (userInfo as! [String : Any]))
436463
}
437464

438-
func generateMergedVideoFilePath() -> String {
465+
fileprivate func generateMergedVideoFilePath() -> String {
439466
return URL(fileURLWithPath: ((FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last)?.path)!).appendingPathComponent("\(UUID().uuidString)-mergedVideo.mp4").path
440467
}
441-
func degreeToRadian(_ degree: CGFloat) -> CGFloat {
468+
fileprivate func degreeToRadian(_ degree: CGFloat) -> CGFloat {
442469
return (.pi * degree / 180.0)
443470
}
444471
}

DPVideoMerger_Swift.framework.zip

30.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)