直播的学习与使用-----采集


// 捕获音视频

- (void)setupCaputureVideo

{

// 1.创建捕获会话,必须要强引用,否则会被释放

AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];

_captureSession = captureSession;

// 2.获取摄像头设备,默认是后置摄像头

AVCaptureDevice *videoDevice = [self getVideoDevice:AVCaptureDevicePositionFront];

// 3.获取声音设备

AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];

// 4.创建对应视频设备输入对象

AVCaptureDeviceInput *videoDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:nil];

_currentVideoDeviceInput = videoDeviceInput;

// 5.创建对应音频设备输入对象

AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:nil];

// 6.添加到会话中

// 注意“最好要判断是否能添加输入,会话不能添加空的

// 6.1 添加视频

if ([captureSession canAddInput:videoDeviceInput]) {

[captureSession addInput:videoDeviceInput];

}

// 6.2 添加音频

if ([captureSession canAddInput:audioDeviceInput]) {

[captureSession addInput:audioDeviceInput];

}

// 7.获取视频数据输出设备

AVCaptureVideoDataOutput *videoOutput = [[AVCaptureVideoDataOutput alloc] init];

// 7.1 设置代理,捕获视频样品数据

// 注意:队列必须是串行队列,才能获取到数据,而且不能为空

dispatch_queue_t videoQueue = dispatch_queue_create("Video Capture Queue", DISPATCH_QUEUE_SERIAL);

[videoOutput setSampleBufferDelegate:self queue:videoQueue];

if ([captureSession canAddOutput:videoOutput]) {

[captureSession addOutput:videoOutput];

}

// 8.获取音频数据输出设备

AVCaptureAudioDataOutput *audioOutput = [[AVCaptureAudioDataOutput alloc] init];

// 8.2 设置代理,捕获视频样品数据

// 注意:队列必须是串行队列,才能获取到数据,而且不能为空

dispatch_queue_t audioQueue = dispatch_queue_create("Audio Capture Queue", DISPATCH_QUEUE_SERIAL);

[audioOutput setSampleBufferDelegate:self queue:audioQueue];

if ([captureSession canAddOutput:audioOutput]) {

[captureSession addOutput:audioOutput];

}

// 9.获取视频输入与输出连接,用于分辨音视频数据

_videoConnection = [videoOutput connectionWithMediaType:AVMediaTypeVideo];

// 10.添加视频预览图层

AVCaptureVideoPreviewLayer *previedLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession];

previedLayer.frame = [UIScreen mainScreen].bounds;

[self.view.layer insertSublayer:previedLayer atIndex:0];

_previedLayer = previedLayer;

// 11.启动会话

[captureSession startRunning];

}

// 指定摄像头方向获取摄像头

- (AVCaptureDevice *)getVideoDevice:(AVCaptureDevicePosition)position

{

NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];

for (AVCaptureDevice *device in devices) {

if (device.position == position) {

return device;

}

}

return nil;

}

#pragma mark - AVCaptureVideoDataOutputSampleBufferDelegate

// 获取输入设备数据,有可能是音频有可能是视频

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

{

if (_videoConnection == connection) {

NSLog(@"采集到视频数据");

} else {

NSLog(@"采集到音频数据");

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html css js编程顺序,html css js先学哪个呢?

前端开发三剑客为 HTML、CSS、JavaScript。这三门语言的掌握对前端开发程序员来说是必须的,但有不少同学不懂得先学习哪一门语言。那么这篇文章 w3cschool 小编就来为你解答一下 HTML、CSS、JavaScript 先学哪个的问题。首先需要学习的是 HTML,HTML 是开…

苹果手机收不到推送信息_iPhone手机收不到正式版系统更新推送怎么办?(附解决方法)...

有不少热衷于升级系统的小伙伴,希望在第一时间升级到最新版 iOS 系统进行体验,但难免也会遇到无法收到更新推送的问题。主要有以下原因。iPhone手机收不到正式版系统更新推送怎么办?网络状况不佳如果当前网络状况不好,可能无法收到来自苹果官…

Linux系统特点介绍集合

1、开源代码程序,可自由修改。 2、Unix系统兼容,具备Unix几乎所有优秀特性,同Unix指令集。 3、可自由传播,无任何商业版权制约。 4、适合Intel等x86 CPU系列架构的计算机。 5、一个完善的多用户,多任务&#xff0c…

火狐 移动 html 元素,python中的Firefox+Selenium:如何交互式地获取元素html?

Im使用PythonSeleniumSplinterFirefox创建一个交互式web爬虫。在python脚本提供了选项,然后Selenium打开Firefox并发送一些命令。在现在,我需要让python脚本知道用户想要与之交互的web元素。在我目前使用的方法是:Right-click the item in th…

瘦子的肠道菌群和胖子的区别_瘦子和病态肥胖患者肠道菌群组成和潜在功能的显著差异...

10.1111/joim.1313707-07, ArticleAbstract & Authors:展开Abstract:收起Introduction:The gut microbiome may contribute to the development of obesity. So far, the extent of microbiome variation in people with obesity has not been determined in large cohorts…

Centos下载地址

下载地址: 从阿里镜像网站上下载 http://mirrors.aliyun.com/centos/ 建议选用Centos 6.x windows电脑配置:至少4G内存,i5处理器或以上。 Linux虚拟机分配:内存128M~1024M,cpu 1核心,硬盘8g即可。

html分块时边距的设置,html – 文本节点后第一个块的边距(垂直空间)?

我不确定你是否会认为这是对你的问题的完整答案,因为我知道你正在使用< td>在您的示例中,< td>之间存在一个差异.和< dd>或者< li>元素是< td>的事实.在不破坏< table>的情况下,元素不能与其周围元素相抵消具体行为.但至少我可以回答你的第…

实现连麦_微信重磅更新,视频号直播连麦打赏美颜上线,新增巨大流量入口

12月23日晚&#xff0c;微信迎来重大改版&#xff01;在最新7.0.20版本的微信中&#xff0c;视频号大招不断&#xff0c;不仅上线了连麦功能&#xff0c;支持美颜瘦脸、打赏等功能。此外&#xff0c;微信还给视频号开放了两个重大入口&#xff0c;包括微信个人名片和“发现”ta…

VMware Workstation 网络设置解释三种

一、NAT Network Address Translation&#xff0c;网络地址转换&#xff0c;NAT模式是比较简单的实现虚拟机上网的方式&#xff0c;NAT模式的虚拟机时通过物理电脑上网和交换数据的。 在NAT模式下&#xff0c;虚拟机的网卡连接到物理机的VMware上&#xff0c;此时VMware软件的…

cuda 核函数 for循环_【CUDA 基础】4.4 核函数可达到的带宽

Abstract: 本文通过矩阵转置这一个例子&#xff0c;调整&#xff0c;优化核函数&#xff0c;使其达到最优的内存带宽Keywords: 带宽&#xff0c;吞吐量&#xff0c;矩阵转置开篇废话下面是废话&#xff0c;与本文知识无关&#xff0c;可以直接跳到下面红字处开始本文知识的学习…

小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容

本来呢&#xff0c;我是有专门整理小程序恶心bug的文章的&#xff0c;每次只要添加汇总就好&#xff0c; 但是呢&#xff0c;鉴于这个问题的恶心程度&#xff0c;所以我把他单独拿出来说了。 ——————————————--------------------------------------------------产…

学徒学计算机,那个有能力的高人愿意收我做学徒啊,我是学计算机的

类似问题答案我学的是计算机专业&#xff0c;南京有那些学校招这个专业啊&#xff1f;跟随 已跟随 取消 确定 你是说去学习还是去工作&#xff1f; 如果工作&#xff0c;现在很多对学位有一定要求&#xff0c;一般都要本科以上&#xff1b; 如果是学习&#xff0c;那也得看你自…

Linux磁盘分区及要求

一、分区 1、磁盘分区有主分区&#xff0c;扩展分区和逻辑分区之分。一块磁盘最多有4个主分区&#xff0c;其中一个主分区的位置可以用一个扩展分区替换&#xff0c;在这个扩展分区内可以划分多个逻辑分区。 2、一块磁盘最多只能有一个扩展分区&#xff0c;扩展分区不能直接使…

二分查找和二叉查找树

2019独角兽企业重金招聘Python工程师标准>>> 1 二分查找 算法思想&#xff1a; 二分查找要求元素排列有序。首先&#xff0c;假设表中元素是按升序排列&#xff0c;将数组中间位置的元素与查找关键字比较&#xff0c;如果两者相等&#xff0c;则查找成功&#xff1…

springboot判断有没有库_Springboot 使用JPA @Query 注解 查询语句条件 有可能为空,Oracle数据库...

网上查了很多资料都是下面的方法,但是不适用于OracleQuery(value "select * from xxx where if(?1 !,x1?1,11) and if(?2 !,x2?2,11)" "and if(?3 !,x3?3,11) ",nativeQuery true)List find(String X1,String X2,String X3);——————————…

台式计算机技术方案,2017年4月自考02316计算机应用技术真题及答案

本文提供的是2017年4月自考02316计算机应用技术真题及答案&#xff0c;真题不仅能帮助考生复习巩固学到的知识&#xff0c;还能让考生了解以往考试难易程度&#xff0c;真正掌握一套真题那么考试也不用担心了。要考试的你一定要多多练习啊。2017 年 4 月高等教育自学考试全国统…

Linux磁盘编号

一、IDE接口磁盘 Linux的编码规则是 /dev/hd* -------------------------------hda 第一块盘 -------------------------------------------hda1 第一分区&#xff0c;hda2 第二分区&#xff0c;hda3 第三分区..... -------------------------------hdb 第二块盘 …

Linux挂载点和文件系统类型介绍

一、挂载点 Mount Point 这是Linux下访问磁盘分区的入口&#xff0c;即如果要往分区里写入数据&#xff0c;就必须通过/boot入口来写入&#xff0c;这一点和windows是不同的&#xff0c;因为在安装Linux时&#xff0c;Mount Point项填写 /boot二、文件系统类型 1、ext2/3/4&…

pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)

我需要从我的模块中调用Python函数并为其设置两个参数&#xff1a;int和array。在现在我在调用这个函数的时候遇到了segfault&#xff0c;我不知道我做错了什么。有人能指出我的错误在哪里吗&#xff1f;在函数在我的Python模块中应用程序副本. 如果我从Python代码调用它&#…

理解lua中 . : self

文章目录[点击展开](?)[] 前言点号定义和调用冒号定义和冒号调用运行结果相互调用相互调用运行结果总结前言 在LUA中&#xff0c;经常可以看到&#xff1a;. self&#xff0c;今天在CSDN上看到一篇博客写的很清楚&#xff0c;转载过来 原文出处&#xff1a;http://blog.csdn.n…