本文主要讲解 客户端 通过 RTSP 协议推流到 服务器的 整个交互过程,以及这个过程中的一些交互,原理。
服务器采用 ZLMediaKits
,服务器的搭建请看 ZL的官方文档。
推流客户端是 ffmpeg
,推流命令如下:
ffmpeg.exe -re -i juren.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.0.123/live/test
上面我用了 一个命令,指定编码格式,然后通过 rtsp 协议把一个动画片推到了 ZLMediaKit 的 RSTP 服务器。
下面就用 wireshark
来抓包看下整个通信过程,过滤规则如下:
host 192.168.0.123
为了方便读者对照,这里提供一下 pcapng
包文件,可以下载 用 wireshark
打开,就跟本文的一致了。下载地址:百度网盘,提取码:sphw
实际上,TCP 推流跟 UDP 推流 ,有一些地方是类似的,我主要讲解一下差异的地方
1,setup 的时候,TCP 跟 UDP 的方式有点不同,如下图:
从上图可以看出 TCP 场景,setup 的时候没有传端口号,所以 tcp 的方式,3个协议走的是同一个端口,都是 544。这 3个协议分别是 RTSP,RTP,RTCP,都是 544 端口。
其他的流程跟 UDP 场景很类似,推荐阅读 《RTSP协议-UDP推流》,《RTSP协议-UDP拉流》
RTSP协议-TCP推流 分析完毕。
相关阅读:
由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。QQ:2338195090。