上文中介绍了用AVFoundation实现音视频采集(https://blog.csdn.net/dolacmeng/article/details/81268622) ,开源的基于GPU的第三方图像处理库GPUImage对AVFoundation进行了进一步的封装,打开GPUImgeVideoCamera.m查看代码,其步骤和我们用AVFoundation实现采集的方式如出一辙。GPUImage还可以对图像进行美化、添加各种滤镜等。
下面是视频采集并添加增亮滤镜的例子:

1.用cocoapods集成。
(1)用Xcode新建项目LiveGPUImageDemo,控制台cd到项目路径,用pod init初始化:

pod init

(2)此时打开项目根目录的Podfile文件,添加内容:

platform :ios, '9.0'
use_frameworks!target 'LiveGPUImageDemo' dopod 'GPUImage'end

(3)控制台执行下载集成命令:

pod install

(4)打开LiveGPUImageDemo.xcworkspace工作空间

2、完整代码:

import UIKit
import GPUImageclass ViewController: UIViewController {//注:为了可以进行拍照,这里用子类GPUImageStillCamera代替GPUImgeVideoCamerafileprivate lazy var camera : GPUImageStillCamera = GPUImageStillCamera(sessionPreset: AVCaptureSession.Preset.high.rawValue, cameraPosition: .back)fileprivate lazy var filter = GPUImageBrightnessFilter()override func viewDidLoad() {super.viewDidLoad()//设置摄像头方向为垂直camera.outputImageOrientation = .portrait//1.添加滤镜camera.addTarget(filter)camera.delegate = self//2.添加一个用于实时显示画面的GPUImageViewlet showView = GPUImageView(frame: view.bounds)view.addSubview(showView)filter.addTarget(showView)//3.开始采集画面camera.startCapture()}}//采集回调
extension ViewController : GPUImageVideoCameraDelegate{func willOutputSampleBuffer(_ sampleBuffer: CMSampleBuffer!) {print("采集到画面")}
}

可以添加一个拍照按钮,点击后进行拍照并保存到本地相册

@IBAction func takePhoto(_ sender: Any) {camera.capturePhotoAsImageProcessedUp(toFilter: filter, withCompletionHandler: { (image, error) inUIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)})}

运行效果如下:

Demo代码下载:https://github.com/dolacmeng/LiveGPUImageDemo

iOS直播(二)GPUImage音视频采集相关推荐

  1. iOS直播技术分享-音视频采集(一)

    1.iOS直播技术的流程 直播技术的流程大致可以分为几个步骤:数据采集.图像处理(实时滤镜).视频编码.封包.上传.云端(转码.录制.分发).直播播放器. 数据采集:通过摄像头和麦克风获得实时的音视频 ...

  2. iOS直播(三)GPUImage音视频采集并写入文件

    上一篇介绍了用GPUImage图像处理库进行图像采集,从而避免了直接使用AVFoundation(AVKit)时繁琐的代码,同时不用熟悉OpenGL ES也可以快速地对图像进行美颜.添加滤镜等.这一篇 ...

  3. 直播软件搭建音视频开发中的视频采集

    直播软件搭建音视频开发中的视频采集 前言 在直播和短视频行业日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的 ...

  4. “小程序+直播”怎样搅动音视频技术生态?

    ​ 责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间,微信小程序开放了直播能力,并首先向社交.教育.医疗.政务民生.金融等五大应用场景开放.与原生App应用和基于浏览器的H5 ...

  5. windows下directShow音视频采集

    目录 前言 一.DirectShow简介 二.DirectShow视频采集主要流程介绍 1.DirectShow视频采集主要API介绍 三.视频采集软件设计框图 四.音频采集软件设计框图 <wi ...

  6. webrtc简单案例——音视频采集和播放

    webrtc简单案例--音视频采集和播放 目录 打开摄像头并将画面显示到页面 打开麦克风并在页面播放捕获的声音 同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 1. 打开摄像头并将画面显示到 ...

  7. Android 音视频采集与软编码总结

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/75807435(本文已在 "任玉刚" 微信公众号发布 ...

  8. Android端WebRTC本地音视频采集流程源码分析

    WebRTC源码版本为:org.webrtc:google-webrtc:1.0.32006 本文仅分析Java层源码,在分析之前,先说明一下一些重要类的基本概念. MediaSource:WebRT ...

  9. WebRTC音视频采集和播放示例及MediaStream媒体流解析

    WebRTC音视频采集和播放示例及MediaStream媒体流解析 目录 示例代码--同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 API解析 mediaDevices MediaStre ...

最新文章

  1. CentOS6.4下安装xampp
  2. 【Spring】23、ApplicationContext ,ApplicationContextAware,Listener,Event 的关系解读
  3. c#listView
  4. PUE值测算标准实践问题探讨
  5. 第六次作业—例行报告
  6. LInux:shell 命令:字符串截取
  7. Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8
  8. 深度优先搜索----poj 1321棋盘问题
  9. Ubuntu下配置使用maven
  10. 2012.02.13(rtsp)
  11. 对计算机网络考研知识点归纳(不断更新中T)
  12. 电脑win7支持的node.js版本
  13. 1秒等于多少微妙,纳秒
  14. 全球最顶级的十大创新公司
  15. Java架构师-集群:单体部署 ->Nginx 集群【网关、反向代理、动静分离、负载均衡】 -> Keepalived“高可用”组件 -> LVS负载均衡【LVS的并发量是Nginx的几十倍】
  16. 移动硬盘无法访问如何解决
  17. log日志中不打印异常栈的具体信息
  18. c++模板函数的声明和定义该在什么文件里?
  19. 常见的棋牌游戏网站支付接口
  20. python有什么游戏可以开发-主流游戏引擎有哪些?python能开发手游?

热门文章

  1. 8 ServletContext
  2. U盘重装MacOS-Sierra系统
  3. Apache转发到Tomcat
  4. activiti任务TASK
  5. Windows下SVN权限配置过程详解
  6. 【IT笔试面试题整理】不用加减乘除做加法
  7. 多条件组合查询+分页
  8. emacs按键绑定详解
  9. 分享memcache和memcached安装过程
  10. 什么是A记录、MX记录、CNAME记录