Android 和 iOS 实现录屏推流的方案整理
一、录屏推流实现的步骤
1. 采集数据
主要是采集屏幕获得视频数据,采集麦克风获得音频数据,如果可以实现的话,我们还可以采集一些应用内置的音频数据。
2. 数据格式转换
主要是将获取到的视频和音频转换成常见的推流的标准格式,这样能保证让观看终端正常观看。
3. 编码处理
如果不进行编码的话,数据量会非常大,这样不仅浪费带宽,而且会浪费观看终端的性能,所以需要对音视频数据进行编码处理。
4. 封包&推流
这块的逻辑可以采用和普通的直播方式进行封装和推流。
总结:其实录屏推流直播和普通的直播的区别就是采集源发生了变化,而在技术层面来将真正需要我们做的事情就是将录屏获取到的数据处理成稳定的编码格式。
二、Android 实现录屏的思路
1. 主流实现思路: MediaProjection + VirtualDisplay 方法
在Android 5.0 发布后,谷歌开放了截屏的接口,我们可以通过VirtualDisplay来实现录屏的视频源数据的获取。
2. 偏门思路: 通过View.getDrawingCache() 方法
通过 View 的 cache 内容获取到 Bitmap 对象来达到录屏的效果。但是很多手机上面该方式会存在性能问题,另外该方式并不是一个真正意义上的录屏方式,另外部分 View 组件的内容并不能获取到,比如 webview 。
3. 需ROOT思路:读取 /dev/graphics/fb0 方法 or screencap -p xxx.png/screenshot xxx.png 方法
- Android 基于 Linux,所以可以通过读取 fb0 设备节点,即 framebuffer 中的帧数据来实现屏幕的录制。但是读取这个设备节点需要 root 权限。
- screencap 是 Android shell 的命令,可以通过该 shell 命令读取到屏幕的帧数据来达到录屏的功能。但该命令仍然需要 root 权限。
三、iOS 实现录屏的思路
1. 主流思路: 通过 ReplayKit 实现
ReplayKit 是苹果 iOS 10 以上版本提供的用于录屏并对外直播的功能。简单而言就是苹果通过这个功能把采集到的屏幕视频信息和音频信息回调给开发者,开发者可以任意处理这些信息。
但是问题是,ReplayKit 使用上限制较多,首先要求系统必须为 iOS 10 以上;其次,被录屏的 App 必须支持 ReplayKit 功能。这也很容易理解,毕竟录屏是比较敏感的行为。所以必须游戏本身支持,以表示被录制方已经同意录屏。
2. 偏门思路: 通过 Airplay Mirroring 实现
Airplay Mirroring 是苹果用于屏幕投影的功能,投屏的原理就是把设备的屏幕数据和音频数据通过 Airplay Mirroring 协议传输给第三方的支持该协议的显示播放设备。但 Airplay Mirroring 是苹果的私有协议,传输过程中音视频数据都是被苹果加密的,不对第三方开放。因此要想获得这些数据,只能通过破解协议的方式来达成。
两种实现思路对比:
Android 和 iOS 实现录屏推流的方案整理相关推荐
- android4.2屏幕录像,android——使用自带录屏工具进行屏幕录像
在做开源项目的时候,想传一个gif效果图上去.但是,要有连贯的动画效果.所以,就想到先录制视频,然后视频转gif.但是,用第三录屏软件总是不完美. 那么,怎么办呢? android4.4 提供了自带录 ...
- Android iOS防录屏截屏
目录 Android防录屏和截屏 关于WindowManager.LayoutParams.FLAG_SECURE 关于Display.FLAG_SECURE iOS防录屏和截屏 监听截屏 录屏监听 ...
- android 录屏 github,GitHub - mabeijianxi/ScreenRecordPushStream: Android 录屏推流demo
ScreenRecordPushStream 这是一个基于 rtmp 协议的 Android 录屏推流demo (Demo APK 下载) 使用方法 一. 服务器搭建 mkdir nms cd nms ...
- android11原生录屏,终于把安卓这项功能实现了!iOS 11录屏功能演示:超好用
虽然没有像iOS 6到iOS 7那样翻天覆地的变化,但iOS 11也足以算得上近两年最大一次更新了,尤其是一些人性化功能的增加,越来越开放,越来越接地气,甚至让人有种"套上iOS皮肤安卓 ...
- 截屏 远程协助 android,ARDC Android 远程桌面助手 录屏 演示 MD
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? ARDC Android 远程桌面助手 录屏 演示 MD ARDC:Android Remote Displayer a ...
- (一)android 桌面悬浮窗 录屏源码放送
看到几个网友留言需要源码参考,需要的可以拿走: 这里先提供几个工具类: 1.录屏工具类ScreenUtil.java package com.android.systemui.util;import ...
- Android之间互相的录屏直播 --点对点传输(tcp长连接发送h264)(一)
前言 转载请注明出处 ,来自: 暂时两篇: (1) Android之间互相的录屏直播 –点对点传输(tcp长连接发送h264)(一) http://blog.csdn.net/baidu_335462 ...
- electron+ffmpeg+VUE3 录屏 推流
录屏推流 webrtc播放 简化版obs推流 electron+ffmpeg+vue3 原创录屏推流源代码 npm install 安装成功后 npm run dev 就可以跑起来 功能 录屏推流,录 ...
- obs多推流地址_EV录屏推流抖音直播教程——墨涩网
EV录屏 免费无水印,集视频录制与直播功能于一身的桌面录屏软件,支持录屏涂鸦.实时按键显示.视频体积压缩等实用功能.无水印.无限制,想录就录,以下功能均无使用限制,永久免费.视频录制,桌面.摄像头组合 ...
最新文章
- 1.Pytorch Basics
- quality center 支持的平台
- 软件体系结构测试定义,软件体系结构复习题.doc
- ul弹性怎么一行显示_css3系列之弹性盒子 flex
- CentOS重新加载网卡报错 Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/23
- MySQL进阶篇(03):合理的使用索引结构和查询
- SQL语法用like %或in时Parameters要怎么用才能避免SQL Injection的问题
- textview 复制粘贴_Android TextView使用剪贴板复制粘贴
- JAVA生成条码(jbarcode)
- 黑白群晖为Plex添加证书,开启HTTPS访问
- Python爬虫爬取一页韩寒新浪博客
- 智慧政府:大数据治国时代的来临 - 电子书下载(高清版PDF格式+EPUB格式)
- 3dmax快捷键命令大全
- ALS算法的基本思想
- Char类的常用方法及说明
- proto_path passed empty directory name. (Use “.“ for current directory.)
- 硬盘主引导记录,分区引导记录(MBR,PBR)
- 0004-环保公益环保宣传PPT模板免费下载
- There is a problem with this Windows Installer package 卸载软件提示
- Python 医学知识图谱问答系统(一),建立医学知识图谱,基于neo4j知识图谱的医学问答体系
热门文章
- 一无所知学编程:Jargon File(1)
- NVMe驱动解析-注册设备
- 快递取件码生成软件_一种快递柜取件码生成装置及其使用方法与流程
- java代码到opcode_OPcode简介
- 分布式理论(六)—— Raft 算法
- python 从大到小循环_Python循环小实例----猜大小
- arm shell 获取本地键盘输入值_arm Linux 如何自动检测并mount SD卡,以及如何得知已经mount...
- HttpException: 503: Server Error for url:http://cic-1:9696/v2.0/security-groups, Service Unavailable
- vscode 登陆leetcode 报错:Accessing non-existent property ‘padLevels‘ of module
- 帮助海外游客规划从成田机场开始日本旅行的新网站上线