高效测试丨怿星RTP协议测试解决方案

news2024/10/6 2:28:27

近几年,车内音视频娱乐系统不断发展,功能不断丰富,对于音视频的传输需求也逐渐增多,随着车载以太网的日渐成熟,各主机厂逐步方案落地、成本逐步降低,基于车载以太网的音视频传输也在逐步应用,常用的有RTP(Real-time Transport Protocol)、AVB协议。

车载以太网OSI七层模型

AVB协议基于2层传输,层级简单、协议多,同时有QoS可以保证音视频的传输质量,可以应用于带交换机的场景,QoS可以保证时间延迟,不过AVB协议多,开发及使用成本较高;RTP协议位于5-7层,基于TCP/IP协议,其底层协议使用UDP,适用于简单的应用场景,如倒车影像等;在RTP进行音视频传输时,它只负责传输数据包,需要配合RTCP(Real-time Transport Control Protocol)来保证RTP数据包的服务质量,遵循的标准是RFC3550。

为了确保音视频传输的协议一致性及可靠性,根据使用的协议,需要对RTP或AVB进行测试;AVB已有成熟的商业软件测试方案,因此,本文针对RTP测试解决方案进行介绍,首先简介RTP/RTCP协议,在此基础上进行RTP测试方案的详细说明,最后以案例来介绍项目应用。

一、RTP&RTCP协议一致性测试内容

RTP和RTCP是相互配合的两个协议,RTP是音视频实时传输协议,RTCP是音视频实时控制协议,两者都是封装在UDP报文中传输;每一个RTP会话,将使用连续的2个端口号分别用于RTP和RTCP,RTP报文的有效载荷封装音、视频数据流,RTCP报文不封装任何音、视频数据流。为确保协议实施有效,针对RTP和RTCP进行一致性测试。

基于RTP数据组包/拆包示意图

1.1 RTP协议一致性测试

每帧RTP报文都是由头部(Header)和负载数据(Payload)两部分组成,RTP发送端将采集到的音视频信息封装成RTP包发送,RTP接收端获取到RTP数据包后解析数据,取得应用数据。

RTP头部前12个字节固定,存在于每一个RTP数据包中。

RTP Header结构

对RTP协议进行测试时,主要对RTP Header中的各个参数进行测试,RTP Payload内容与音视频编码方式有关,不在RTP协议测试范围内。针对RTP 的测试点列举如下:

1.2 RTCP协议一致性测试

RTCP监控服务质量并传送会话参与者信息,包括已发送的数据包数量、丢失的数据包数量等信息。RTP发送端以一定的时间间隔周期性的发送RTCP中的发送报告(SR),RTP接收端通过发送接收报告(RR)将RTCP反馈信息发送出去。RTCP常见报文类型有五种,如下表所示:

RTCP报文类型

由于不同应用场景下需要支持的RTCP报文类型可能不同,怿星根据协议强制要求的内容设计RTCP测试点并实现测试。

针对RTCP 的测试点列举如下:

RTCP测试点示例

二、RTP&RTCP协议一致性测试解决方案

在简要介绍RTP/RTCP协议及测试内容后,我们一起了解下RTP测试解决方案,其主要包括测试环境搭建、测试规范编写、测试工程开发及调试三部分。

2.1 RTP&RTCP测试环境

针对RTP/RTCP的测试,从测试系统角度出发,可以分为节点级测试和系统级测试。

整体的测试方案基于CANoe,硬件设备所需包含程控电源、Ethernet接口卡。

2.1.1节点级测试

  • 当测试环境中只有发送方时,Tester需要模拟接收方发送RR报文,报告已发送的数据包数量、丢失的数据包数量等信息,同时监控发送方发送的报文。
  • 当测试环境中只有接收方时,Tester需要模拟发送方发送RTP和SR报文,同时监控接收方发送的报文。

单节点RTP测试(仿真节点)简易图

单节点RTP测试拓扑

2.1.2系统级测试

当RTP发送方和接收方处于同一个测试环境下,即系统级测试环境下,Tester通过TAP方式监控它们之间的通讯来完成测试。

系统级RTP测试(TAP连接方式)简易图

系统级RTP测试拓扑

2.2 RTP测试规范

测试RTP协议的目的是验证开发的样件符合RFC协议以及主机厂定义的规范,怿星参考RFC3550协议标准文档中对各个参数值的描述,以及主机厂定义的RTP协议应用规范文件,梳理测试规范V1.0版本,包含节点级和系统级、RTP和RTCP的测试内容。

RTP&RTCP测试规范

2.3 RTP测试工程

2.3.1 RTP测试工程开发框架

针对RTP/RTCP测试,在完成测试规范编写后,将对应开发测试脚本。首先梳理测试输入前置参数,通过excel方式进行配置填写,之后依据测试步骤进行参数解析、报文接收与处理、模拟报文发送、测试结果比对,最后保存测试log并输出测试报告。

RTP/RTCP测试工程开发框架

2.3.2 怿星RTP测试工程优势

操作简单、使用方便:测试人员只需将RTP相关的参数信息填写到Excel配置文件中,如RTP数据采样频率、SSRC值等,之后就可以在测试工程中勾选需要的用例执行自动化测试。

模块化、便于二次开发:测试工程将各个功能的实现进行模块化处理,便于在此基础上进行二次开发与调试。

规范脚本对照、报告可读性高:测试脚本是依据测试规范中测试用例描述的测试步骤,调用其余模块接口进行开发,实现测试脚本与测试步骤一一对照。测试报告中会打印每一个测试步骤的步骤描述、期望结果和实际结果,可以快速分析报告和测试Log。

测试方案应用案例

以下是在某项目中某case测试结果,该case测试目的是检查DUT发送的RTP报文参数Version字段值是否为2。Tester按照配置参数输入文件的内容,识别需要检查两个音频流的报文,根据输入的两个音频流的IP地址,端口号等信息,找到DUT发送报文中对应两个音频流的报文,提取其中的Version字段进行结果判断与输出。

测试Log如图所示:

RTP 测试log截图

测试报告打印如图所示,分别打印两个RTP音频流的测试结果。

RTP 测试报告截图

本文简要介绍车载音视频协议RTP和RTCP,RTP节点级、系统级测试环境及测试拓扑,RTP测试规范,RTP测试工程及脚本。测试工程使用方便、易操作,测试脚本支持二次开发,测试报告可读性高。

若有RTP测试需求,欢迎联系怿星咨询;同时如有AVB测试需求,怿星同样有完整的解决方案及测试服务,也欢迎大家咨询。

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

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

相关文章

python代码使用过程中使用快捷键注释时报错

1.代码 2.代码报错 3.代码注释后的结果 4. 原因

【C++进阶】哈希的应用之位图和布隆过滤器

位图和布隆过滤器 一,位图1. 实现2. 位图的应用 二,布隆过滤器1. 使用场景2. 模拟实现 三,海量数据面试题哈希切分 四,总结 这一节我们来看哈希的应用 一,位图 先来看一个面试题 这里如果用unordered_set来解决&…

程序员如何搞副业

目录 1.概述 2.个人项目开发 3.在线教育和培训 4.技术博客和内容创作 1.概述 程序员通过副业实现个人价值最大化和增加收入的途径多种多样,以下是一些方法: 自由职业: 程序员可以在业余时间提供自由职业服务。包括为客户开发软件、网站或应用程序、…

初学python记录:力扣2009. 使数组连续的最少操作数

题目: 给你一个整数数组 nums 。每一次操作中,你可以将 nums 中 任意 一个元素替换成 任意 整数。 如果 nums 满足以下条件,那么它是 连续的 : nums 中所有元素都是 互不相同 的。nums 中 最大 元素与 最小 元素的差等于 nums.…

java 开发环境配置 JAVA_HOME 和 MAVEN_HOME

java 开发环境配置 JAVA_HOME 和 MAVEN_HOME 介绍JAVA_HOMEMAVEN_HOME 配置环境1. 创建Java Home2. 创建Maven Home3. 设置环境变量4. 验证安装 没有 Maven 看这里 介绍 在Java和Maven的开发环境中,JAVA_HOME和MAVEN_HOME是非常重要的环境变量,它们帮助…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑

引言 在 iOS 开发中,将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下,我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而,如果你没有 Mac 电脑,也没有关系,本文将介绍一…

JAVA毕业设计135—基于Java+Springboot+Vue的服装商城(源代码+数据库+万字论文)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的服装商城(源代码数据库万字论文)135 一、系统介绍 本项目前后端分离,分为管理员、用户两种角色 1、用户: 注册、登录、服装购买、…

Centos7搭建 SkyWalking 单机版

介绍 Skywalking是应用性能监控平台,可用于分布式系统,支持微服务、云原生、Docker、Kubernetes 等多种架构场景。 整体架构如图 Agent :在应用中,收集 Trace、Log、Metrics 等监控数据,使用 RPC、RESTful API、Kafk…

解决PyCharm更新到2024.1版本后不能运行项目的问题

先来看看这个问题的表现吧。 1、运行和调试按钮是灰色的,并且显示编辑器中的文件不可运行,代码也是灰色的,还有我们的python文件的图标和文本文件的图标一样。 当然右键也是没有运行、调试选项。 2、无法创建新的项目和py文件,能…

Teachable Machine模型之TensorFlow使用篇

前言: 使用在teachable machine训练的h5格式模型 tensorflow使用篇 1. 使用teachable machine训练模型 地址: 传送门, 需要梯子翻一下 训练后, 导出的时候可以选择三种类型 导出模型文件 converted_keras.zip (py版) 解压后得到 2. py项目中使用模型 根据你当时使用tea…

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品,例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中,随着 3D 建模和渲染软件的出现,3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04 2024/4/8 20:48 IMG固件使用:h3-eflasher-friendlycore-xenial-4.14-armhf-20210618.img 固件不能放倒中文目录里/只能放到英文目录内! 【也不能放到网络磁盘里】映射网络驱动器! Wi…

大模型日报|今日必读的7篇大模型论文

大家好,今日必读的大模型论文来啦! 1.CT-LLM:仅 20 亿参数,基于中文的大型语言模型 来自开源研究社区 Multimodal Art Projection、复旦大学和香港科技大学的研究团队及其合作者,推出了一个 20 亿参数的大型语言模型…

c++配置libtorch

这里写目录标题 LibTorch下载Vistual Studio环境配置C部署Libtorch出现问题、错误汇总检测环境是否配置成功 LibTorch下载 安装LibTorch非常简单,只需要从其官网选择相应的版本即可,具体页面如下图所示。 如果需要加载PyTorch训练的模型文件&#xff0…

Centos中一些有趣的命令

目录 1.sl 小火车 2. cowsay 会说话的牛 3.toilet/figlet 图形化输出 4.aafire 小火焰 5.linux_logo 显示系统logo 1.sl 小火车 yum install sl 2. cowsay 会说话的牛 yum install cowsay 3.toilet/figlet 图形化输出 yum install toilet yum install figlet 4.aafire 小火…

电子电路中,MOS管的开启电压取多少最为合适呢?

电路中,MOS管的开启电压取多少最为合适呢? 比如: 某Nmos VGS范围为正负20V 栅极阈值电压(VGSth)最小为0.8V,最大为1.5V 那么此时的Mos管栅极电压取多少最为合适? 在电路中,MOS管的开…

通过Golang获取公网IP地址

在Go语言中,获取当前的外网(公网)IP地址可以通过多种方法实现。其中一种常见的方法是通过访问外部服务来获取。这些服务可以返回访问者的公网IP地址,例如 httpbin.org/ip 或 ipify.org。下面是一个简单的例子,展示了如…

汇编语言程序设计实验五 条件转移指令

实验目的和要求 (1) 编写实验任务要求的两个程序。 (2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。 (3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。 实验环境 DOSBOX 实验内容与过程 验证以下程序 16进制数…

JS 轮播图点击左右切换

点击左右按钮实现轮播图切换图片 style: *{margin: 0;padding: 0;margin: auto;}#img1{width: 300px;height: 300px;position: relative;}#butto1{width: 50px;height: 100px;font-size: 50px;border: none;background-color: hsla(0, 0%, 0%, 0.2);position: abs…

CS162 Operating System笔记

What is an Operating System? it’s typically a special layer of software that provides the application access to hardware resources.So.it’s convenient abs fractions of complex hardware devices.