软件测试|Scrcpy工具码流格式化

简介: 软件测试|Scrcpy工具码流格式化

背景

方案

以最新上市的小米9为例子,小米9是Android 9.0手机,虽然STF的minicap工具已经对Android 9.0进行了适配,但是采用scrcpy工具时出现获取的H264数据无法利用前端插件Broadway播放,这是因为Broadway插件不支持H264 baseline以外的码流。H264格式数据的码流通过profile_idc字段标识,小米9获取到的H264格式数据如图所示:

其中profile_idc等于100表示码流是High档次,profile_idc等于66表示码流是baseline档次。码流的取值是由手机硬件决定的。通过阅读scrcpy源码发现ScreenEncoder文件中有个createFormat私有方法可以指定视频流数据的格式,因此我们修改该方法的代码,人为的将视频流数据格式化为baseline,具体代码如图2所示。

修改完源码之后实时投屏实现主要包括以下几个步骤:

将scrcpy源码重新编译成jar包,将jar包push到手机中。

在手机中执行命令

CLASSPATH=/data/local/tmp/scrcpy-server.jar app_process / --nice-name=scrcpy_servercom.genymobile.scrcpy.Server 0 8000000 true weight:height:0:0 false,其中weight和height是手机的宽度和高度。(需要注意的是每次执行命令后,之前push到手机中的jar包会被清除,所以每次启动命令都需要pushjar包)

执行adb forward命令确保pc可以通过forward端口和手机进行socket通信。获取视频流数据。

将获取的视频流数据解析成单条H264数据发送给web端,web端通过Broadway插件播放视频流实现实时投屏。

修改后scrcpy.jar获取得到的视频流解析数据如图所示,可以看到H264格式的数据profile_idc变成了66,码流变成baseline格式。

效果展示

参考文献

https://github.com/Genymobile/scrcpy

相关文章
|
26天前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
92 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
2月前
不要再责怪你的UI设计师为什么没有用rp?ps?figma?sketch?xd?如何免费转换非在线工具收费转换-本文将教会你常规ui设计源文件格式相互之间如何转换并且保持矢量图和标注注释问题-优雅草央千澈
不要再责怪你的UI设计师为什么没有用rp?ps?figma?sketch?xd?如何免费转换非在线工具收费转换-本文将教会你常规ui设计源文件格式相互之间如何转换并且保持矢量图和标注注释问题-优雅草央千澈
64 1
|
5月前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
343 56
|
网络协议 开发工具 Android开发
​​Android平台GB28181历史视音频文件下载规范探讨及技术实现
​​Android平台GB28181历史视音频文件下载规范探讨及技术实现
209 1
|
SQL IDE 前端开发
神器你值得拥有——CoolFormat代码一键自动格式化工具,支持Verilog
神器你值得拥有——CoolFormat代码一键自动格式化工具,支持Verilog
460 0
神器你值得拥有——CoolFormat代码一键自动格式化工具,支持Verilog
|
机器人 持续交付 项目管理
内建过程质量| 学习笔记
快速学习内建过程质量
内建过程质量| 学习笔记
|
Python
太赞了!Python竟可以轻松实现音频格式无损转换
辰哥在平时处理音频格式的时候,需要去下载各种音频处理软件(专业一点的软件还要收费),掌握Python技术的我们,知道Python是万能的(哈哈哈,开个玩笑)。今天辰哥就来教大家用Python去实现**音频格式无损转换**-**pydub**
702 0
|
Web App开发 程序员 测试技术
代码即格式:你用过这些高效工具吗?
“工欲善其事,必先利其器。” 我在工作中也用到一些使用起来非常高效的工具,今天以 “代码即格式” 为主题,跟大家介绍下两个高效工具。
177 0
代码即格式:你用过这些高效工具吗?
H264编码质量屏幕截图
H264编码质量屏幕截图
140 0
H264编码质量屏幕截图
|
IDE 程序员 测试技术
7个 优秀的远程“结对编程“编码工具
7个 优秀的远程“结对编程“编码工具
396 0