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..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 录制视频,美化,背景音乐等

你可能感兴趣的:(iOS开发)