当前位置: 首页 > 编程日记 > 正文

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

相关文章:

Wireshark使用技巧:提取VOIP通话中的音频流

“Wireshark的RTP流分析功能实战。”在VOIP协议的分析过程中,常常会遇到一些标准协议承载的语音传输,如以SIP、H.323为控制协商协议,RTP为语音数据协议的VOIP传输情况。在语音协议的分析过程中,需要提取的一个重要项是语音内容&am…

在预装win8的电脑上换win7系统讲解

现在买电脑,如果电脑预装的系统是win8系统,那么这个电脑的默认启动模式应该就是UEFI模式,现在UEFI模式正在逐渐取代传统模式。UEFI启动需要一个独立的分区,它将系统启动文件和操作系统本身隔离,可以更好的保护系统的启…

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

上一篇介绍了用GPUImage图像处理库进行图像采集,从而避免了直接使用AVFoundation(AVKit)时繁琐的代码,同时不用熟悉OpenGL ES也可以快速地对图像进行美颜、添加滤镜等。这一篇介绍如果使用多个滤镜以及录制视频,并保存…

使用Wireshark进行DNS协议解析

“ DNS协议格式解析及说明。”DNS即域名系统(Domain Name System),是用来将域名与IP地址建立映射的协议,通过DNS协议,可以方便记忆。DNS可基于TCP或UDP,使用53号端口,常见的是使用UDP承载&#…

iOS直播(四)对视频进行压缩编码

1.为什么要进行编码? 不经过压缩编码的原视频,所占空间大,不便于保存和网络传输,所以视频录制完后,需要先编码,再传输,解码后再播放。 2.视频为什么可以被压缩? 视频存在冗余信息&#xff0…

nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战

前天在玩OLED时想完成一直想弄得一个东西,就是简单的单片机游戏。因为STM32和nRF51822的内存足够,所以就用缓存数组的方法来显示图像(我也不知道术语是啥,反正就是在内存中建立一个128X64的二维数组,更新显示时将整个数…

.net卸载程序制作

.net卸载程序制作 原文:.net卸载程序制作方法一: 在打包项目中添加文件msiexec.exe(一般在c:\windows\system32(系统目录中)找到)。 在文件系统视图中选择应用程序文件,在msiexec.exe上单击右键选择“创建快捷方式”,重命名快捷方式为“unins…

Windows下的DNS命令用法

“Windows下DNS相关命令的用法。”在协议分析过程中,经常会遇到一种情况,一次对某域名抓包的过程中,抓到了某个域名的DNS请求,之后再抓包,却抓不到的情况。这时候就需要DNS命令出马了,本文介绍Windows下的D…

Kafka集群配置说明

#kafka数据的存放地址,多个地址的话用逗号分 log.dirs/tmp/kafka-logs #broker server服务端口 port9092 #这个参数会在日志segment没有达到log.segment.bytes设置的大小,也会强制新建一个segment会被 topic创建时的指定参数覆盖 log.roll.hours24 #是否…

Tomcat漏洞说明与安全加固

Tomcat是Apache软件基金会的一个免费的、开放源码的WEB应用服务器,可以运行在Linux和Windows等多个平台上,由于其性能稳定、扩展性好、免费等特点深受广大用户的喜爱。目前,互联网上绝大多数JAVA WEB应用都运行在Tomcat服务器上。 Tomcat作为…

《人性的优点》笔记

1.相信自己,做一个成功的人 2.《圣经》中说:“攻克己心,强如攻城” 3.人最大的敌人,不是别人,正是自己 4.不要为木已成舟的事情耗费太多的心血,你无法改变它 5.忧虑是健康的大敌,它只会让你的生…

SIP协议分析

“ 音视频通话控制协议SIP介绍。”SIP(Session Initiation Protocol),即会话发起协议,在RFC2543、RFC3261等中被定义,是一个VOIP信令协议,其目的是在IP网络中实现电话功能,即软电话功能。在互联…

Struts2的工作原理

Struts2是在Struts1的基础上发展而来的,Struts是WebWork和Struts1的集合,采用的正是WebWork的核心,更多的是WebWork。 下载的Struts2源代码文件 主要的包和类: 包名 说明 org.apache.struts2. components 该包封装视图组件&…

Tiny4412 Uboot

1. Build uboot a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好 环境变量PATH,保证可以正常使用。 b) 解压 uboot_tiny4412-20130729.tgz 并进入相应的目录 tar xzf uboot_tiny4412-20130729.tgz c) 配置 uboot 并编译 cd uboot_tiny4412 m…

iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信

本文要达成如图效果,在一台iPhone上安装第二个微信: 准备: Xcode微信ipa(可通过iTool进行下载)重签名脚本 步骤 打开Xcode,新建Single View App项目,名字可以随意,这里就用Wech…

使用Fiddler进行HTTP流量分析

“ Fiddler抓包工具使用。”Fiddler作为一个PC端的HTTP/HTTPS协议分析工具,能够抓取PC上的流量,并且它对HTTP类数据的分析,要比Wireshark要简单,友好,它对数据的组织格式很好地提高了分析效率。本文介绍如何在PC上使用…

Java学习笔记(二一)——Java 泛型

【前面的话】 最近脸好干,掉皮,需要买点化妆品了。 Java泛型好好学习一下。 【定义】 一、泛型的定义主要有以下两种: 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。&#x…

GitHub与Git入门

一、GitHub GitHub为开发者提供Git仓库的托管服务,可以进行代码共享、团队协同开发,创建了社会化(social coding)编程的概念。 二、GitHub与Git的区别 开发者将源代码存入“Git”仓库,而GitHub则在网络上提供Git仓库…

《UML大战需求分析》阅读笔记1

通过阅读本书的序和第一章,让我对于UML的理解更加深刻了,并且懂了怎样把你UML学的更好。 作者先让我们明白什么是UML,大概知道了UML各个图的形态和各种用途,然后再详细的介绍各个图怎样使用。 UML是个非必要的建模工具&#xff0c…

裸奔的支付X聊天,你还敢用吗?

“ 一直想在社交领域突破的某付宝,却自始至终对社交功能如此的不用心,让用户的数据在网络中裸奔,使用户不寒而栗。”没错,这篇文章要说的就是BAT中A家的支付X,那个千方百计做社交的支付工具。如果你使用了它的聊天窗口…

MVC3项目依赖文件错误解决

MVC3的项目依赖分为两大类: 1、ASP.NET Web Pages 2、ASP.NET MVC 3 如果没有正确引入,或者项目的版本有错误会出现程序集引用错误。 在服务器上部署时,解决思路如下: 1、下载MVC3的安装包,然后在服务器上安装&#xf…

让自己的开源项目支持CocoaPods集成

平时我们会经常用CocoaPods集成第三方库,那如何使自己的代码也可以通过CocoaPods集成呢?只需要简单几步: 创建git仓库,把代码提交到Github或码云等在git仓库中创建.Podspec文件,修改里面的配置(如代码的版…

由于客户端检测到一个协议错误 代码0x1104

重新连接N次都还是这个错误提示,最后再重起电脑,还是没用。研究了一下错误终于解决了。 首先检查远程连接端口对不对?Windows远程默认的连接端口是3389,一般大家连接时直接输入IP或域名就可以连接了。如果还要加:端口号的话&#…

使用Fiddler抓取手机HTTP流量包

“ Fiddler手机流量抓包实战。”Fiddler作为一个PC端的HTTP/HTTPS协议分析工具,不仅能够抓取PC上的流量,还能作为代理,抓取手机流量,在之前的文章《使用Fiddler进行HTTP流量分析》中介绍了Fiddler的基本用法,本文介绍如…

Spark Steaming 点滴

Spark Streaming 模块是对于 Spark Core 的一个扩展,目的是为了以高吞吐量,并且容错的方式处理持续性的数据流。目前 Spark Streaming 支持的外部数据源有 Flume、 Kafka、Twitter、ZeroMQ、TCP Socket 等。Discretized Stream 也叫 DStream) 是 Spark S…

CocoaPods远程私有库

上一篇(让自己的开源项目支持CocoaPods集成)介绍了将自己开发的框架代码发布到Cocoapods,全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改&#x…

大数据平台的秘密

大数据,这个词越来越热,很多人都在谈大数据,其实很多张口闭口大数据的人,或许都不知道数据是如何产生、传递、存储、运算到应用。有段时间,看到一些大数据文章,就感觉纯属凑热闹,小数据都没搞明…

Fiddler使用技巧:强大的数据文本编解码功能

“ 郑重推荐Fiddler工具自带的TextWizard功能。”Fiddler作为一个HTTP类协议的抓包分析工具,之前已介绍过抓包分析功能,可参考文章:《使用Fiddler进行HTTP流量分析》《使用Fiddler抓取手机HTTP流量》在抓包分析功能之外,我们一定不…

jquery validate 详解一

jQuery校验 官网地址&#xff1a;http://bassistance.de/jquery-plugins/jquery-plugin-validation 一导入js库 <script src"../js/jquery.js" type"text/javascript"></script><script src"../js/jquery.validate.js" type"…

安装VMWare tools,以及解决安装后/mnt中有hgfs但没共享文件的方法

一、首先是安装VMWare tools安装过程可参考&#xff1a;http://www.cnblogs.com/jiu0821/p/7559949.html二、解决安装VMWare tools后/mnt中有hgfs但没共享文件 前提&#xff1a;在虚拟机软件中设置了共享目录 此时在linux中进入 /mnt/hgfs 文件夹&#xff0c;但发现共享的文件没…