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和目的多播端口就可以了
目录
相关文章
|
1月前
|
编解码 网络协议 网络性能优化
RTP/RTCP 协议讲解
RTP/RTCP 协议讲解
64 0
|
5月前
|
Web App开发
ZLMediaKit webrtc RTP包接受与重传
ZLMediaKit webrtc RTP包接受与重传
|
5月前
|
存储 网络协议 Serverless
C/C++ 运用Npcap发送UDP数据包
Npcap 是一个功能强大的开源网络抓包库,它是 WinPcap 的一个分支,并提供了一些增强和改进。特别适用于在 Windows 环境下进行网络流量捕获和分析。除了支持通常的网络抓包功能外,Npcap 还提供了对数据包的拼合与构造,使其成为实现 UDP 数据包发包的理想选择。本章将通过Npcap库构造一个UDP原始数据包,并实现对特定主机的发包功能,通过本章的学习读者可以掌握如何使用Npcap库伪造特定的数据包格式。
113 0
C/C++ 运用Npcap发送UDP数据包
|
12月前
|
网络协议
v4l2帧的tcp传输模板
v4l2帧的tcp传输模板
41 0
|
Web App开发 存储 缓存
|
编解码
RTP 协议
概述: 实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。
1107 0