EasyRTMP获取H.264实时流并转化成为RTMP直播推流之EasyRTMP-iOS屏幕推流如何获取视频帧

本文主要是介绍EasyRTMP获取H.264实时流并转化成为RTMP直播推流之EasyRTMP-iOS屏幕推流如何获取视频帧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

视频流媒体中视频数据的传输占据了绝大部分的带宽,如何提升编码效率、减小带宽使用、提升画面质量,成为音视频开发者努力的重点。随着互联网、流媒体技术的发展,兼容支持H.264、H.265编码器(可减少计算的复杂性、提高压缩率,并降低编码时间)已经成为迫在眉睫的事。

EasyRTMP推流功能特点

- 调用简单

无论是个人开发者还是企业级应用,只需要简单的几个接口调用就可以完成一套完整的互联网直播应用的上架

- 功能完善

配套完整的直播、录像、旋转功能示例,用户直接复用即可选择嫁接自定义功能

- 运行高效

高效缓冲和发送设计模式,能非常灵活地让用户自定义延时和缓冲区的大小

- 性能稳定

长期的在线运行检验,众多客户的项目成功经验

EasyRTMP架构1.png

EasyRTMP-iOS屏幕推流如何获取视频帧

提出问题:

EasyRTMP-iOS中的屏幕推流,如何获取视频帧?如何编码?如何推流?

分析问题:

本文只讨论iOS12.0及以上版本,因为iOS12.0以下的版本,录屏的操作太复杂,而且市场占有率很低。

解决问题:

SampleHandler类继承自RPBroadcastSampleHandler,相关代理方法中获取到屏幕采集的进度,具体使用方式见注释:

// 屏幕采集工作已经开始启动,在此方法中一般进行初始化工作
- (void)broadcastStartedWithSetupInfo:(nullable NSDictionary <NSString *, NSObject *> *)setupInfo;// 采集到数据的实时回调,此方法中的sampleBuffer数据结构中有视频和音频数据,我们通过相关推流方法将数据推送给服务器,即实现了录制和推流。
- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType;

1、在broadcastStartedWithSetupInfo方法中接入麦克风,初始化编码器,初始化推流器:

1.png
2.png
3.png

2、在processSampleBuffer方法中处理实时采集到的数据,编码并推流:

4.png
5.png

在编码器的回调中,再推流,此处的流程和摄像头推流是一样的:

6.png
7.png

这篇关于EasyRTMP获取H.264实时流并转化成为RTMP直播推流之EasyRTMP-iOS屏幕推流如何获取视频帧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930879

相关文章

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja