rtsp超分推流流程(一)

记录一下rtsp 推流的流程

播放一个RTSP的流需要如下的RTSP请求命令:

OPTIONS -> DESCRIBE -> SETUP -> PLAY 然后就是接收RTP包、播放了

抓包分析出来,推流的RTSP请求命令如下:

OPTIONS -> ANNOUNCE -> SETUP -> RECORD

可以使用ffmpeg命令来模拟一路视频和音频推流,

ffmpeg -re -stream_loop -1 -i abc.mkv -rtsp_transport tcp -c copy -f rtsp rtsp://127.0.0.1:8554/stream

udp 推流

OPTIONS rtsp://192.168.0.135:8554/stream RTSP/1.0
CSeq: 1
User-Agent: Lavf60.16.100

RTSP/1.0 200 OK

CSeq: 1

Public: DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN

Server: gortsplib

ANNOUNCE rtsp://192.168.0.135:8554/stream RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: Lavf60.16.100
Content-Length: 500

**v=0

o=- 0 0 IN IP4 127.0.0.1

s=No Name

c=IN IP4 192.168.0.135

t=0 0

a=tool:libavformat 60.16.100

m=video 0 RTP/AVP 96

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAH6wspQFAFuwFqAgICgAAB9AAAdTBwAAATEsAACYlrd5cFA==,aOuPLA==; profile-level-id=64001F

a=control:streamid=0

m=audio 0 RTP/AVP 97

a=rtpmap:97 MPEG4-GENERIC/48000/2

a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=119056E500

a=control:streamid=1

**

RTSP/1.0 200 OK

CSeq: 2

Server: qbserver

SETUP rtsp://192.168.0.135:8554/stream/streamid=0 RTSP/1.0

Transport: RTP/AVP/UDP;unicast;client_port=17130-17131;mode=record

CSeq: 3

User-Agent: Lavf60.16.100

RTSP/1.0 200 OK

CSeq: 3

Server: gortsplib

Session: 04528041c4c342a7a3d1e0bbeb28b8e1

Transport: RTP/AVP;unicast;client_port=17130-17131;server_port=8000-8001

SETUP rtsp://192.168.0.135:8554/stream/streamid=1 RTSP/1.0

Transport: RTP/AVP/UDP;unicast;client_port=17132-17133;mode=record

CSeq: 4

User-Agent: Lavf60.16.100

Session: 04528041c4c342a7a3d1e0bbeb28b8e1

RTSP/1.0 200 OK

CSeq: 4

Server: gortsplib

Session: 04528041c4c342a7a3d1e0bbeb28b8e1

Transport: RTP/AVP;unicast;client_port=17132-17133;server_port=8000-8001

RECORD rtsp://192.168.0.135:8554/stream RTSP/1.0

Range: npt=0.000-

CSeq: 5

User-Agent: Lavf60.16.100

Session: 04528041c4c342a7a3d1e0bbeb28b8e1

RTSP/1.0 200 OK

CSeq: 5

Server: gortsplib

Session: 04528041c4c342a7a3d1e0bbeb28b8e1

EASYPUSHER安卓ANDROID手机直播推送之MEDIACODEC 硬编码H264格式

https://www.freesion.com/article/4282847055/

tcp 推流

以下是tcp,重点是tcp,尤其是在需要外网的时候,必须使用tcp来推流,udp方式是通不过的。

OPTIONS rtsp://127.0.0.1:8554/stream RTSP/1.0
CSeq: 1
User-Agent: Lavf60.16.100

RTSP/1.0 200 OK

CSeq: 1

Public: DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN

Server: gortsplib

ANNOUNCE rtsp://127.0.0.1:8554/stream RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: Lavf60.16.100
Content-Length: 496
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 60.16.100
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAH6wspQFAFuwFqAgICgAAB9AAAdTBwAAATEsAACYlrd5cFA==,aOuPLA==; profile-level-id=64001F
a=control:streamid=0
m=audio 0 RTP/AVP 97
a=rtpmap:97 MPEG4-GENERIC/48000/2
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=119056E500
a=control:streamid=1
RTSP/1.0 200 OK
CSeq: 2
Server: gortsplib

SETUP rtsp://127.0.0.1:8554/stream/streamid=0 RTSP/1.0
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record
CSeq: 3
User-Agent: Lavf60.16.100

RTSP/1.0 200 OK

CSeq: 3

Server: gortsplib

Session: 74c1debd7c2f45da974c4c6fc80d6fc6

Transport: RTP/AVP/TCP;unicast;interleaved=0-1

SETUP rtsp://127.0.0.1:8554/stream/streamid=1 RTSP/1.0
Transport: RTP/AVP/TCP;unicast;interleaved=2-3;mode=record
CSeq: 4
User-Agent: Lavf60.16.100
Session: 74c1debd7c2f45da974c4c6fc80d6fc6

RTSP/1.0 200 OK

CSeq: 4

Server: gortsplib

Session: 74c1debd7c2f45da974c4c6fc80d6fc6

Transport: RTP/AVP/TCP;unicast;interleaved=2-3

RECORD rtsp://127.0.0.1:8554/stream RTSP/1.0
Range: npt=0.000-
CSeq: 5
User-Agent: Lavf60.16.100
Session: 74c1debd7c2f45da974c4c6fc80d6fc6

RTSP/1.0 200 OK

CSeq: 5

Server: gortsplib

Session: 74c1debd7c2f45da974c4c6fc80d6fc6

以下是一些可以参考的资料

https://github.com/fyhertz/spydroid-ipcamera

https://github.com/kidloserme

https://github.com/Oo-Dev/OoDroid2

超分媒体服务

下期再讲

相关推荐
cuijiecheng20182 小时前
音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
测试工具·wireshark·音视频
struggle202520 小时前
2025开源DouyinLiveRecorder全平台直播间录制工具整合包,多直播同时录制、教学直播录制、教学视频推送、简单易用不占内存
图像处理·计算机视觉·开源·音视频·语音识别
追光天使1 天前
Mac M1 源码安装FFmpeg,开启enable-gpl 和 lib x264
macos·ffmpeg
硬件学长森哥2 天前
音视频多媒体编解码器基础-codec
驱动开发·嵌入式硬件·音视频
小镇拾光2 天前
PPT演示设置:插入音频&同步切换&播放时长计算
powerpoint·音视频·ppt播放设置
cuijiecheng20182 天前
FFmpeg源码:av_base64_decode函数分析
ffmpeg
程序猿玖月柒2 天前
全志 视频输入组件的使用
音视频
soonlyai2 天前
Windows平台最新视频号内容下载工具(MP4格式一键解析)
人工智能·经验分享·产品运营·音视频·流量运营·视频编解码·视频
2035去旅行2 天前
FFmpeg(7.1版本)编译:Ubuntu18.04交叉编译到ARM
arm开发·ffmpeg
消失的旧时光-19432 天前
Android-音频采集
android·音视频