swift GPUImage 进行 视频录制 美化 音乐合成等

来源:互联网 发布:cf外设淘宝店 编辑:程序博客网 时间:2024/06/05 12:01

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

原创粉丝点击