当前位置:网站首页>Packet mode and three streaming modes in SDP protocol
Packet mode and three streaming modes in SDP protocol
2022-07-01 10:56:00 【qianbo_ insist】
1、rtsp Medium sdp agreement
sdp The name is Session Description Protocol , Include sip This is also used in the agreement
rtsp The protocol can transmit ps flow ,ts flow , Bare flow is also called es flow ,es The flow is more conventional , be familiar with h264 Of rtp The way the packet is packaged , perhaps h265 The way the packet is packaged ,h265 Packet RTP You can refer to ffmpeg Source code
rtsp Agreement If the transmission is h264 h265
“m=” The media name in the line is “video”
“a=rtpmap” The code name in the line is H264 h265
“a=rtpmap” The clock frequency in the row is generally 90000, It can be other numbers , however 90000 This number is suitable for many frame rates , So use it .
Other parameters are included in “a=fmtp” .
2、pm The way
packetization-mode:
Indicates the supported packet mode .
1 、packetization-mode The value is 0 Or when it doesn't exist , A single... Must be used NALU Unit mode .
2、 packetization-mode The value is 1 Use non interlaced (non-interleaved) Packet mode .
3、 packetization-mode The value is 2 Use interleaving (interleaved) Packet mode .
profile-level-id:
This parameter is used to indicate H.264 The flow of profile Type and level . from Base16( Hexadecimal ) It means 3 Bytes . The first byte indicates H.264 Of Profile type , The third byte represents H.264 Of Profile Level
We usually use packetization-mode = 1, Non staggered mode
3、ps 、ts、es transmission mode
The following code is used to recover rtsp The scenario transmits three different streams
int handle_cmd(string& cmd, string& CSeq, uint32_t sessionid, char* cmdres,int ps_n_ts)
{
#define BUFSIZE 8*1024
int h26xtype = 96;
if (cmd.compare("DESCRIBE") == 0)
{
const char * psnts;
if (ps_n_ts == 1)
{
psnts = "a=rtpmap:32 MP2P/90000";
h26xtype = 32;
}
else if (ps_n_ts == 2)
{
psnts = "a=rtpmap:96 H264/90000";
h26xtype = 96;
}
else if (ps_n_ts == 3)
{
psnts = "a=rtpmap:33 MP2T/90000";
h26xtype = 33;
}
char sdp[4096];
sprintf(sdp, "v=0\r\n"
"o=shyjx 22345 22345 IN IP4 %s\r\n"
"s=H.264 Video, streamed by qb\r\n"
"t=0 0\r\n"
//"m=video 0 RTP/AVP 96\r\n"
"%s\r\n"
"c=IN IP4 0.0.0.0\r\n"
"a=rtpmap:96 H264/90000\r\n"
"a=fmtp:96 packetization-mode=1;\r\n"
"a=control:stream", m_strlocalip.c_str(), psnts, h26xtype);
return buildDescribeRes(cmdres, BUFSIZE, sdp, CSeq.c_str());
}
else if (cmd.compare("OPTIONS") == 0)
{
return buildOptionRes(cmdres, BUFSIZE, CSeq.c_str());
}
else if (cmd.compare("SETUP") == 0)
{
return buildSetupTcpRes(cmdres, BUFSIZE, 0, 1, sessionid, CSeq.c_str());
}
else if (cmd.compare("PLAY") == 0)
{
return buildPlayRes(cmdres, BUFSIZE, NULL, sessionid, CSeq.c_str());
}
else if (cmd.compare("TEARDOWN") == 0)
{
return buildTeardownRes(cmdres, BUFSIZE, sessionid, CSeq.c_str());
}
return -1;
}
边栏推荐
- [paper reading] trajectory guided control prediction for end to end autonomous driving: a simple yet strong Ba
- 建议收藏 | 在openGauss上遇到慢SQL该怎么办?
- 技术分享 | Linkis参数介绍
- 移动硬盘驱动器读到,但不显示盘符
- Suggest collecting | what to do when encountering slow SQL on opengauss?
- mysql如何把 一个数据库中的表数据 复制到 另一个数据库中(两个数据库不在同一个数据库链接下)
- JS foundation -- data type
- Half of 2022 has passed, isn't it sudden?
- CRC verification
- 2022年已经过去一半了,是不是很突然呢?
猜你喜欢

Addition, deletion, modification and query of database

中国探月工程独家藏品限量发售!

Lack of comparator, operational amplifier to save the field! (the op amp is recorded as a comparator circuit)

【Matytype】在CSDN博客中插入Mathtype行间与行内公式

NC | 肠道细胞和乳酸菌共同作用来防止念珠菌感染

Yoda unified data application -- Exploration and practice of fusion computing in ant risk scenarios

The first anniversary of the data security law, which four major changes are coming?
![[MPC] ① quadratic programming problem matlab solver quadprog](/img/be/5e300255041e3348b933bc32e2ea46.png)
[MPC] ① quadratic programming problem matlab solver quadprog

关于#SQL#的问题,如何解决?

全局过滤器(处理时间格式)
随机推荐
Google's new paper Minerva: solving quantitative reasoning problems with language models
Venv: directory structure of venv
2022年已经过去一半了,是不是很突然呢?
建议收藏 | 在openGauss上遇到慢SQL该怎么办?
Handling distributed transactions with powerful dbpack (PHP tutorial)
bash: ln: command not found
《数据安全法》出台一周年,看哪四大变化来袭?
想请教一下,我在广州,到哪里开户比较好?现在网上开户安全么?
Valgrind usage of memory leak locating tool
Project0:小游戏
Prism journal navigation button usability exploration record
Handling distributed transactions with powerful dbpack (PHP tutorial)
Graduation season · advanced technology er
网站源码整站下载 网站模板源代码下载
数字藏品平台搭建需要注意哪些法律风险及资质?
12款大家都在用的產品管理平臺
Database experiment report (II)
使用强大的DBPack处理分布式事务(PHP使用教程)
[matytype] insert MathType inter line and intra line formulas in CSDN blog
CRC check