iOS直播(二)GPUImage音视频采集
上文中介绍了用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音视频采集相关推荐
- iOS直播技术分享-音视频采集(一)
1.iOS直播技术的流程 直播技术的流程大致可以分为几个步骤:数据采集.图像处理(实时滤镜).视频编码.封包.上传.云端(转码.录制.分发).直播播放器. 数据采集:通过摄像头和麦克风获得实时的音视频 ...
- iOS直播(三)GPUImage音视频采集并写入文件
上一篇介绍了用GPUImage图像处理库进行图像采集,从而避免了直接使用AVFoundation(AVKit)时繁琐的代码,同时不用熟悉OpenGL ES也可以快速地对图像进行美颜.添加滤镜等.这一篇 ...
- 直播软件搭建音视频开发中的视频采集
直播软件搭建音视频开发中的视频采集 前言 在直播和短视频行业日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的 ...
- “小程序+直播”怎样搅动音视频技术生态?
责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间,微信小程序开放了直播能力,并首先向社交.教育.医疗.政务民生.金融等五大应用场景开放.与原生App应用和基于浏览器的H5 ...
- windows下directShow音视频采集
目录 前言 一.DirectShow简介 二.DirectShow视频采集主要流程介绍 1.DirectShow视频采集主要API介绍 三.视频采集软件设计框图 四.音频采集软件设计框图 <wi ...
- webrtc简单案例——音视频采集和播放
webrtc简单案例--音视频采集和播放 目录 打开摄像头并将画面显示到页面 打开麦克风并在页面播放捕获的声音 同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 1. 打开摄像头并将画面显示到 ...
- Android 音视频采集与软编码总结
请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/75807435(本文已在 "任玉刚" 微信公众号发布 ...
- Android端WebRTC本地音视频采集流程源码分析
WebRTC源码版本为:org.webrtc:google-webrtc:1.0.32006 本文仅分析Java层源码,在分析之前,先说明一下一些重要类的基本概念. MediaSource:WebRT ...
- WebRTC音视频采集和播放示例及MediaStream媒体流解析
WebRTC音视频采集和播放示例及MediaStream媒体流解析 目录 示例代码--同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 API解析 mediaDevices MediaStre ...
最新文章
- CentOS6.4下安装xampp
- 【Spring】23、ApplicationContext ,ApplicationContextAware,Listener,Event 的关系解读
- c#listView
- PUE值测算标准实践问题探讨
- 第六次作业—例行报告
- LInux:shell 命令:字符串截取
- Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8
- 深度优先搜索----poj 1321棋盘问题
- Ubuntu下配置使用maven
- 2012.02.13(rtsp)
- 对计算机网络考研知识点归纳(不断更新中T)
- 电脑win7支持的node.js版本
- 1秒等于多少微妙,纳秒
- 全球最顶级的十大创新公司
- Java架构师-集群:单体部署 ->Nginx 集群【网关、反向代理、动静分离、负载均衡】 -> Keepalived“高可用”组件 -> LVS负载均衡【LVS的并发量是Nginx的几十倍】
- 移动硬盘无法访问如何解决
- log日志中不打印异常栈的具体信息
- c++模板函数的声明和定义该在什么文件里?
- 常见的棋牌游戏网站支付接口
- python有什么游戏可以开发-主流游戏引擎有哪些?python能开发手游?