rtsp超分推流流程(一)

news/2024/7/10 20:53:26 标签: 音视频, ffmpeg

记录一下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

超分媒体服务

下期再讲


http://www.niftyadmin.cn/n/5305777.html

相关文章

C++——stack的基本概念与常用接口

1.stack基本概念 概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口 图形剖析: ____________________________栈底 | | 数据元素 | || |________________________| || | 数据元素 | || |________________________| || | 数据元…

全志F1C100s Linux 系统编译出错:不能连接 github

环境 Ubuntu 20.04 LTS 64 位虚拟机 开发板:Lichee Pi Nano 源代码:GitHub - florpor/licheepi-nano 问题描述 该源码库使用了 git 子模块的概念,一个库中包含了 u-boot、Linux等代码库。不需要分别编译,一个 make 全搞定 编译时提示错误: >>> linux-hea…

超维空间M1无人机使用说明书——21、基于opencv的人脸识别

引言:M1型号无人机不仅提供了yolo进行物体识别,也增加了基于opencv的人脸识别功能包,仅需要启动摄像头和识别节点即可 一、一键启动摄像头和人脸识别节点 roslaunch robot_bringup bringup_face_detect.launch无报错,出现以下界…

Pointnet++改进注意力机制系列:全网首发CoordAtt注意力机制 |即插即用,实现有效涨点

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入CoordAtt注意力机制,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二

JMeter与Allure的完美结合:打造高效、易读的性能测试报告

随着互联网的快速发展,软件性能测试已经成为软件开发过程中不可或缺的一环。为了提高测试效率和报告质量,许多测试团队开始寻求自动化测试工具和报告生成工具的结合。在这篇文章中,我们将介绍如何将JMeter与Allure结合使用,以实现…

Ansible自动化运维(一)简介及部署、清单

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

Linux 服务器安全策略技巧:使用 Bcrypt 或 Argon2 进行密码哈希

在当今数字化时代,保护服务器和用户数据的安全至关重要。密码哈希是一种常用的安全策略,用于将用户密码转换为不可逆的散列值。本文将介绍在Linux服务器上使用Bcrypt或Argon2进行密码哈希的技巧。 Bcrypt密码哈希算法 Bcrypt是一种基于Blowfish密码算法的密码哈希函数。它是…

paddlehub 文本检测使用

PaddleHub负责模型的管理、获取和预训练模型的使用。 参考:https://github.com/PaddlePaddle/PaddleHub/tree/develop/modules/image/text_recognition/chinese_text_detection_db_server import paddlehub as hub import cv2 # from utils import cv_show import…