ios(swift) GPUImage 進行 視頻錄製 美化 音樂合成等

GPUImage是一個基於GPU圖像和視頻處理的開源iOS框架,
提供各種各樣的圖像處理濾鏡,並且支持照相機和攝像機的實時濾鏡;

濾鏡介紹百度一下有很多,這裏就不做介紹了。

開始採集視頻數據 初始化預覽的view等操作


fileprivate func conifgCamera() {
        //創建預覽的View
        view.insertSubview(preView, at: 0)
        //設置camera方向
        camera?.outputImageOrientation = .portrait
        camera?.horizontallyMirrorFrontFacingCamera = true

        ///防止允許聲音通過的情況下,避免錄製第一幀黑屏閃屏
        camera?.addAudioInputsAndOutputs()

        //獲取濾鏡組
        beautifulFilter = getGroupFilters()

        //設置GPUImage的響應鏈
        camera?.addTarget(beautifulFilter)

        beautifulFilter.addTarget(preView)
        //開始採集視頻
        camera?.startCapture()

    }

分段視頻的錄製,增加暫停功能,合成時,將每一段視頻的視頻軌道和音頻軌道合成即可合成爲一個視頻,下面分段合成的重要代碼

for i in 0..<urlArray.count {
            do {
                let options = [AVURLAssetPreferPreciseDurationAndTimingKey:true]
                let asset = AVURLAsset.init(url: urlArray[i], options: options)
                //視頻軌道
                let assetVideoTrack = asset.tracks(withMediaType: AVMediaTypeVideo).first
                let videoRange = CMTimeRange.init(start: kCMTimeZero, duration: asset.duration)
                try videoTrack.insertTimeRange(videoRange, of: assetVideoTrack!, at: totalTim)



                //獲取AVAsset 中的音頻
                let assetAudioTrack = asset.tracks(withMediaType: AVMediaTypeAudio).first
                //因爲視頻比音頻短,所以直接用視頻的長度
                let audioRange = videoRange //CMTimeRange.init(start: kCMTimeZero, duration: asset.duration)
                try audioTrack.insertTimeRange(audioRange, of: assetAudioTrack!, at: totalTim)


                totalTim = CMTimeAdd(totalTim, asset.duration)

            }catch{
                print("有錯")
            }


        }

基本註釋都已經寫了,UI部分的註釋沒有寫,仔細看看應該可以懂的
希望能有所幫助吧
項目地址:iOS GPUImage 錄製視頻,美化,背景音樂等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章