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

超分媒体服务

下期再讲

相关推荐
光电的一只菜鸡3 小时前
ubuntu之坑(十四)——安装FFmpeg进行本地视频推流(在海思平台上运行)
ubuntu·ffmpeg·音视频
weixin_428498493 小时前
FFmpeg 压缩视频文件
ffmpeg
FF-Studio3 小时前
万物皆数:构建数字信号处理的数学基石
算法·数学建模·fpga开发·自动化·音视频·信号处理·dsp开发
AJi8 小时前
Android音视频框架探索(三):系统播放器MediaPlayer的创建流程
android·ffmpeg·音视频开发
硬件学长森哥12 小时前
Android音视频流媒体基础总结
android·音视频
aqi0012 小时前
FFmpeg开发笔记(六十六)Windows给FFmpeg集成LC3音频的编码器liblc3
ffmpeg·音视频·直播·流媒体
追随远方14 小时前
Android OpenSL ES 音频播放完整实现指南
android·elasticsearch·音视频
Digitally14 小时前
如何将视频从 iPhone 传输到 HP 笔记本电脑
电脑·音视频·iphone
键盘歌唱家16 小时前
AIGC方案-java实现视频伪动效果
java·aigc·音视频
Everbrilliant891 天前
音视频之H.264的句法和语义
音视频·h.264·h.264句法和语义·h.264句法表·h.264 nal层语义·h.264序列参数集语义·h.264图像参数集语义