H264多播传输RTP包

简介: H264多播传输RTP包

多播简介

  • 单播地址标识单个IP接口,广播地址标识某个子网的所有IP接口,多播地址标识一组IP接口
  • 单播和广播是两个极端,多播则在这两者之间折衷
  • 多播数据报只由加入多播组的应用的主机的接口接收
  • IPV4的D类地址是IPV4的多播地址,范围是(224.0.0.0-239.255.255.255)

如何实现多播

  • 服务端:多播服务端并不需要什么特殊的操作,只需要创建udp套接字,然后向多播地址指定端口发送数据就行
  • 客户端:多播客户端需要做的工作是,创建udp套接字,绑定多播端口,加入多播组

多播的sdp描述文件

a=type:broadcast
a=rtcp-unicast: reflection
m=video 5678 RTP/AVP 96
c=IN IP4 239.255.255.11/255
a=rtpmap:96 H264/90000
a=framerate:25
  • 这是一个多播H.264的sdp文件(详情看:"1.RTSP协议介绍.md")
  • 端口号:5678,多播IP:239.255.255.11

代码实现

源码

  • "test/005/test_rtp.c"
  • "test/005/test_rtp.h"
  • "test/005/test_rtp_h264.c.h"

额外所需文件

  • multicast.sdp
  • test.h264(使用"test/002/"下的即可)

测试

  • 编译:gcc test_rtp.c test_rtp_h264.c
  • 运行:./a.out test.h264
  • 在对多个命令行窗口下使用命令"vlc multicast.sdp"

源码讲解

// rtpSendH264Frame(rtpServerSockfd, CLIENT_IP, CLIENT_PORT, rtpPacket, frame + offset, naluLen);

rtpSendH264Frame(rtpServerSockfd,MULTICAST_IP,MULTICAST_PORT,rtpPacket,frame+offset,naluLen);

  • 源码说明:服务端代码实现非常简单,只需要修改“4.将H264码流打包成RTP包.md”对应的"test/002/"代码中的目的IP和目的端口改为目的多播IP和目的多播端口就可以了
目录
相关文章
|
11月前
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
906 0
|
11月前
|
Python
Matplotlib 教程 之 Matplotlib 散点图 4
使用 Matplotlib 的 `scatter()` 方法绘制散点图。通过设置 `x` 和 `y` 数组来定义数据点位置,还可以自定义点的大小(`s`)、颜色(`c`)、样式(`marker`)等参数。示例展示了两组不同颜色的散点图,分别使用 `hotpink` 和 `#88c999` 颜色绘制。
74 0
|
Ubuntu
Ubuntu编译安装、卸载Boost
Ubuntu编译安装、卸载Boost
1383 0
|
异构计算
Galacean Engine 1.2 使用问题之ShaderLab新版本在场景功能方面有什么提升
Galacean Engine 1.2 使用问题之ShaderLab新版本在场景功能方面有什么提升
|
敏捷开发 设计模式 负载均衡
探索现代Web开发中的微服务架构
【5月更文挑战第25天】 随着数字化转型的深入,Web应用变得越来越复杂多变。传统的单体架构因其耦合度高、扩展性差等限制,已难以满足快速迭代与灵活部署的需求。本文将深入探讨微服务架构在现代Web开发中的应用,解析其设计原则、核心组件以及如何通过微服务提升系统的可维护性和可扩展性。我们将从理论到实践,展示微服务如何优化资源利用,实现敏捷开发和持续集成,并最终为企业带来竞争优势。
|
算法 C语言
【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现
客观评价方法中的一种,亦称为理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近止理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。
【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现
|
网络协议 关系型数据库 MySQL
利用mysqldump 将一个表按条件导出数据
mysqldump -uroot -pdsideal -t dsideal_db t_resource_info --where="res_type=1 and group_id=1 and ts>2015122115005600474 ORDER BY TS DESC LIMIT 1" --triggers=false --replace > /usr/local/info.
1515 0
|
消息中间件 SQL Oracle
CDC 的各种方案小结
CDC 的各种方案小结
CDC 的各种方案小结
|
NoSQL Cloud Native 关系型数据库
阿里云RDS数据库_MySQL_SQL Server_MariaDB_PolarDB_PostgreSQL
阿里云RDS关系型数据库大全:MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
181 0
|
前端开发
React查询、搜索类功能的实现
React查询、搜索类功能的实现
216 0