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 录制视频,美化,背景音乐等
阅读全文
0 0
- swift GPUImage 进行 视频录制 美化 音乐合成等
- GPUImage美颜视频录制
- 给GPUImage录制的视频添加水印
- GPUImage学习日记(2)之视频录制
- ios音乐和视频合成
- c# 调用摄像头进行视频录制和压缩等
- Swift - 视频录制教程2(小视频拍摄,将多段视频进行合并)
- iOS 视频的录制、合成以及播放
- ios GPUImage简单滤镜 -- 录制视频(保存+聚焦)
- IOS 中视频和音乐合成
- IOS 中视频和音乐合成
- 使用MediaRecorder进行视频录制
- Swift-录制视频、预览并保存
- android视频的编辑(录制,裁剪,合成)(1)
- android视频的编辑(录制,裁剪,合成)(2)
- swift 视频合成剪辑——swift学习(十)
- 使用mp4parser进行音视频合成
- iOS 使用GPUImage录制实时视频第一帧黑屏的解决办法
- Android 屏幕方向 SCREEN_ORIENTATION_SENSOR SCREEN_ORIENTATION_USER
- 【莫比乌斯函数+除法分块】BZOJ2301(HAOI2011)[Problem b]题解
- 高级计算机网络知识点复习
- [Dirichlet卷积+快速幂]hdu 5628 Clarke and math
- 变量、窗体、控件用英语命名而不用拼音命名的好处
- swift GPUImage 进行 视频录制 美化 音乐合成等
- 【Keras】DNN神经网络模型
- vijos 弱弱的战壕(树状数组)
- PTA习题 树的同构
- 人工智能--打飞机游戏
- Entity Framework DataSet注入数据分析
- 时区的概念与划分
- 应用层-Ijk-ffmpeg消息实现机制
- 12.9 矩阵变换 2859