/DPVideoMerger-Swift

Multiple videos merge in one video with manage scale & aspect ratio and also merge 4 videos to grid layout for Swift.

Primary LanguageSwiftApache License 2.0Apache-2.0

DPVideoMerger-Swift

Platform Language: Swift 5 License Version Carthage compatible

For Objective C :- DPVideoMerger

Installation with CocoaPods

CocoaPods is a dependency manager for Objective-C. You can install it with the following command:

$ gem install cocoapods

Podfile

To integrate DPVideoMerger into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'TargetName' do
use_frameworks!
pod 'DPVideoMerger-Swift'
end

Then, run the following command:

$ pod install

Installation with Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate DPVideoMerger-Swift into your Xcode project using Carthage, specify it in your Cartfile:

github "Datt1994/DPVideoMerger-Swift"

Run carthage to build the framework and drag the framework (DPVideoMerger_Swift.framework) into your Xcode project.

Add Manually

Download Project and copy-paste DPVideoMerger.swift file into your project

Usage

import AVKit

let fileURL = Bundle.main.url(forResource: "1", withExtension: "mp4")
let fileURL1 = Bundle.main.url(forResource: "2", withExtension: "mp4")
let fileURL2 = Bundle.main.url(forResource: "3", withExtension: "MOV")
let fileURL3 = Bundle.main.url(forResource: "4", withExtension: "mp4")
let fileURLs = [fileURL, fileURL1, fileURL2, fileURL3]

DPVideoMerger().mergeVideos(withFileURLs: fileURLs as! [URL], completion: {(_ mergedVideoFile: URL?, _ error: Error?) -> Void in
    if error != nil {
        let errorMessage = "Could not merge videos: \(error?.localizedDescription ?? "error")"
        let alert = UIAlertController(title: "Error", message: errorMessage, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (a) in
        }))
        self.present(alert, animated: true) {() -> Void in }
        return
    }
    let objAVPlayerVC = AVPlayerViewController()
    objAVPlayerVC.player = AVPlayer(url: mergedVideoFile!)
    self.present(objAVPlayerVC, animated: true, completion: {() -> Void in
        objAVPlayerVC.player?.play()
    }) 
})

DPVideoMerger().gridMergeVideos(withFileURLs: fileURLs, videoResolution: CGSize(width: 1000, height: 1000), completion: {(_ mergedVideoFile: URL?, _ error: Error?) -> Void in
    if error != nil {
        let errorMessage = "Could not merge videos: \(error?.localizedDescription ?? "error")"
        let alert = UIAlertController(title: "Error", message: errorMessage, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (a) in
        }))
        self.present(alert, animated: true) {() -> Void in }
        return
    }
    let objAVPlayerVC = AVPlayerViewController()
    objAVPlayerVC.player = AVPlayer(url: mergedVideoFile!)
    self.present(objAVPlayerVC, animated: true, completion: {() -> Void in
        objAVPlayerVC.player?.play()
    })
})