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和目的多播端口就可以了
目录
相关文章
Sipdroid的rtp数据包的发送过程
麦洛已经拥有自己的blog,可以直接到http://miloisbadboy.com/archives/24访问 谢谢!
623 0
|
网络架构
通过UDP的组播方式收发数据
客户端代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.
1066 0
|
C#
UDP广播的方式收发数据(C#)
发送数据: /// /// 发送信息 /// /// /// private void button1_Click(object sender, EventArgs e) ...
915 0
|
7月前
|
缓存 安全 网络协议
|
网络协议 Unix 数据格式
Tcp/Ip协议族简单解读及网络数据包/报/帧数据格式及封装及解包;
http://www.creseek.cn/products-install/install_on_bsd_linux/ 中文检索 离线cloudera ecosystem components; http://archive-primary.
961 0
|
网络协议
v4l2帧的tcp传输模板
v4l2帧的tcp传输模板
72 0
|
7月前
|
网络协议 网络性能优化
用udp协议传输文件
【7月更文挑战第18天】使用 UDP 协议传输文件 UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输协议。尽管它不像 TCP 那样提供可靠的传输和拥塞控制,但在某些特定场景下,例如对实时性要求较高、能容忍一定数据丢失的情况,也可以用于文件传输。
106 0

热门文章

最新文章