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月前
|
缓存 安全 网络协议
|
19天前
|
网络协议 网络性能优化
用udp协议传输文件
【7月更文挑战第18天】使用 UDP 协议传输文件 UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输协议。尽管它不像 TCP 那样提供可靠的传输和拥塞控制,但在某些特定场景下,例如对实时性要求较高、能容忍一定数据丢失的情况,也可以用于文件传输。
|
3月前
|
网络协议 iOS开发 MacOS
LabVIEW在快速传输速率下丢失UDP数据包
LabVIEW在快速传输速率下丢失UDP数据包
42 0
|
3月前
|
编解码 网络协议 网络性能优化
RTP/RTCP 协议讲解
RTP/RTCP 协议讲解
186 0
|
8月前
|
Web App开发
ZLMediaKit webrtc RTP包接受与重传
ZLMediaKit webrtc RTP包接受与重传
|
10月前
|
缓存 网络协议 Shell
网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报
网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报
106 0
|
Web App开发 存储 缓存
|
编解码
RTP 协议
概述: 实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。
1148 0