当前位置: 首页 > news >正文

AWS WebRTC:RTP讲解

概念
RTP(Real-time Transport Protocol,实时传输协议)是音视频领域非常基础和重要的一个协议。

RTP 是一种用于通过 IP 网络实时传输音频和视频的协议,常用于视频会议、语音通话、实时监控等实时媒体传输场景。

举例
假设我和朋友在视频通话,摄像头不停采集画面,麦克风不停录音,这些数据需要被分成一小块一小块发送到对方。
RTP 就是这时候用来包装这些“小块数据”的协议,让它们有序、安全、可识别、可播放地传给对方。

RTP做的事情

功能作用
时间戳(timestamp)用于音视频同步(音画同步、按顺序播放)
序列号(sequence number)标记每个包的顺序,丢包可检测
媒体类型标记(payload type)告诉接收方:这是 H264?AAC?还是 VP8?
不保证传输(用 UDP)追求低延迟,不像 TCP 一定要“收齐再播”
小包封装把一帧视频或音频切成多个小包发送

RTP在网络协议栈中的位置

[媒体数据] → RTP → UDP → IP → 网络传输 → 对方 IP → UDP → RTP → [还原媒体]
  • RTP 通常基于 UDP,不走 TCP
  • 不关心数据,丢了就重传,而是优先“实时性”

RTP 常见的配套协议

协议作用
RTCP(RTP Control Protocol)RTP 的“反馈/控制通道”,用于统计、延迟、丢包报告等
RTSP控制播放(开始、暂停、seek),但真正传数据的是 RTP
WebRTC内部用 RTP 传音视频(封装在 DTLS/SRTP 中)
SRTPSecure RTP,加密后的 RTP,更安全

应用场景

场景是否用 RTP?说明
视频会议(WebRTC)内部用 RTP 传输音视频
安防摄像头(RTSP/RTP)视频流通过 RTP
直播系统(RTMP/HLS)不直接用 RTP

分析RTP流
使用Wireshark,可以看一个实际的 RTP 数据包长什么样

Master和Viewer之间无论是 P2P 还是 Relay(TURN 中继),它们之间传输媒体数据时,使用的都是 RTP 通道

一、RTP 是传输音视频的协议

  • RTP(Real-time Transport Protocol) 是一种标准的实时音视频传输协议,是 WebRTC 传输音视频的核心协议;
  • WebRTC 中的媒体流(音视频数据)最终都是通过 RTP/UDP(或 RTP/TCP)传输;
  • 所以不论走哪条网络路径(直连或中继),只要媒体数据在传输,就用 RTP。

二、P2P 与 Relay(TURN)只是传输路径不同

P2P(点对点)

  • Viewer 和 Master 之间可以直接通信,不需要中继;
  • RTP 数据通过 NAT/防火墙穿透技术(STUN/ICE)打通后,直接点对点发送;
  • RTP over UDP(通常),延迟低、效率高。

Relay(TURN 中继)

  • 如果点对点通信失败(如 NAT 非对称或防火墙限制),WebRTC 会自动回退使用 TURN 服务(如 AWS Kinesis Video Streams 内部的 TURN,可以参考前面的文章);
  • 媒体数据将经过 TURN 服务器中继,路径变长;
  • RTP 数据仍然存在,只不过它通过 TURN server 中继了一下;
  • 一般是 RTP over TCP 或甚至 RTP over TLS(即 SRTP over TLS),性能略低但能保障连接成功。
http://www.lryc.cn/news/590945.html

相关文章:

  • 磁盘分区(D盘分给C盘)
  • 学习笔记(39):结合生活案例,介绍 10 种常见模型
  • IPC进程间通信 interprocess communicate
  • 09-three.js Materials
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘flask’问题
  • 串口232通讯数据传输丢失的原因、不可靠性及底层原理分析
  • 12.9 Mixtral-8x7B核心技术解密:如何用1/3参数实现4倍推理速度碾压LLaMA2?
  • RabbitMQ概述和工作模式
  • 苍穹外卖项目日记(day11)
  • 优先队列的实现
  • vue中的this.$set
  • Spring Cloud LoadBalancer 详解
  • 理解 PS1/PROMPT 及 macOS iTerm2 + zsh 终端配置优化指南
  • javaScript中数组常用的函数方法
  • 【Java开发日记】我们来说说 LockSupport 的 park 和 unpark
  • python Flask 框架入门
  • stack,queue,priority_queue的模拟实现及常用接口
  • 从AWS MySQL数据库下载备份到S3的完整解决方案
  • istio如何自定义重试状态码
  • NLP——迁移学习
  • pytorch学习笔记(五)-- 计算机视觉的迁移学习
  • 浅探C语言的回调函数(Callback Function)
  • 要实现在调用  driver.get()  后立即阻止页面自动跳转到 Azure 登录页,可通过以下几种方法实现:
  • AWS Lambda 最佳实践:构建高效无服务器应用的完整指南
  • Kubernetes ConfigMap 深度指南
  • 大模型Agent应用开发实战:从框架选型到行业落地
  • ros2 标定相机
  • 三轴云台之测距算法篇
  • 《C++初阶之STL》【auto关键字 + 范围for循环 + 迭代器】
  • 【Dv3Admin】菜单管理集成阿里巴巴自定义矢量图标库