Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
e6700991
Commit
e6700991
authored
Mar 28, 2021
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善sdp相关
parent
7722564a
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
22 行增加
和
4 行删除
+22
-4
webrtc/Sdp.h
+21
-4
webrtc/WebRtcTransport.cpp
+1
-0
没有找到文件。
webrtc/Sdp.h
查看文件 @
e6700991
...
@@ -12,6 +12,8 @@ using namespace std;
...
@@ -12,6 +12,8 @@ using namespace std;
using
namespace
mediakit
;
using
namespace
mediakit
;
//https://datatracker.ietf.org/doc/rfc4566/?include_text=1
//https://datatracker.ietf.org/doc/rfc4566/?include_text=1
//https://blog.csdn.net/aggresss/article/details/109850434
//https://aggresss.blog.csdn.net/article/details/106436703
//Session description
//Session description
// v= (protocol version)
// v= (protocol version)
// o= (originator and session identifier)
// o= (originator and session identifier)
...
@@ -290,6 +292,7 @@ public:
...
@@ -290,6 +292,7 @@ public:
class
SdpAttrExtmap
:
public
SdpItem
{
class
SdpAttrExtmap
:
public
SdpItem
{
public
:
public
:
//https://aggresss.blog.csdn.net/article/details/106436703
//a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
//a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
int
index
;
int
index
;
string
ext
;
string
ext
;
...
@@ -313,6 +316,11 @@ public:
...
@@ -313,6 +316,11 @@ public:
class
SdpAttrRtcpFb
:
public
SdpItem
{
class
SdpAttrRtcpFb
:
public
SdpItem
{
public
:
public
:
//a=rtcp-fb:98 nack pli
//a=rtcp-fb:98 nack pli
//a=rtcp-fb:120 nack 支持 nack 重传,nack (Negative-Acknowledgment) 。
//a=rtcp-fb:120 nack pli 支持 nack 关键帧重传,PLI (Picture Loss Indication) 。
//a=rtcp-fb:120 ccm fir 支持编码层关键帧请求,CCM (Codec Control Message),FIR (Full Intra Request ),通常与 nack pli 有同样的效果,但是 nack pli 是用于重传时的关键帧请求。
//a=rtcp-fb:120 goog-remb 支持 REMB (Receiver Estimated Maximum Bitrate) 。
//a=rtcp-fb:120 transport-cc 支持 TCC (Transport Congest Control) 。
uint8_t
pt
;
uint8_t
pt
;
vector
<
string
>
arr
;
vector
<
string
>
arr
;
void
parse
(
const
string
&
str
)
override
;
void
parse
(
const
string
&
str
)
override
;
...
@@ -332,9 +340,20 @@ public:
...
@@ -332,9 +340,20 @@ public:
class
SdpAttrSSRC
:
public
SdpItem
{
class
SdpAttrSSRC
:
public
SdpItem
{
public
:
public
:
//a=ssrc:120276603 cname:iSkJ2vn5cYYubTve
//a=ssrc:3245185839 cname:Cx4i/VTR51etgjT7
//a=ssrc:3245185839 msid:cb373bff-0fea-4edb-bc39-e49bb8e8e3b9 0cf7e597-36a2-4480-9796-69bf0955eef5
//a=ssrc:3245185839 mslabel:cb373bff-0fea-4edb-bc39-e49bb8e8e3b9
//a=ssrc:3245185839 label:0cf7e597-36a2-4480-9796-69bf0955eef5
//a=ssrc:<ssrc-id> <attribute>
//a=ssrc:<ssrc-id> <attribute>
//a=ssrc:<ssrc-id> <attribute>:<value>
//a=ssrc:<ssrc-id> <attribute>:<value>
//cname 是必须的,msid/mslabel/label 这三个属性都是 WebRTC 自创的,或者说 Google 自创的,可以参考 https://tools.ietf.org/html/draft-ietf-mmusic-msid-17,
// 理解它们三者的关系需要先了解三个概念:RTP stream / MediaStreamTrack / MediaStream :
//一个 a=ssrc 代表一个 RTP stream ;
//一个 MediaStreamTrack 通常包含一个或多个 RTP stream,例如一个视频 MediaStreamTrack 中通常包含两个 RTP stream,一个用于常规传输,一个用于 nack 重传;
//一个 MediaStream 通常包含一个或多个 MediaStreamTrack ,例如 simulcast 场景下,一个 MediaStream 通常会包含三个不同编码质量的 MediaStreamTrack ;
//这种标记方式并不被 Firefox 认可,在 Firefox 生成的 SDP 中一个 a=ssrc 通常只有一行,例如:
//a=ssrc:3245185839 cname:Cx4i/VTR51etgjT7
uint32_t
ssrc
;
uint32_t
ssrc
;
string
attribute
;
string
attribute
;
string
attribute_value
;
string
attribute_value
;
...
@@ -345,11 +364,9 @@ public:
...
@@ -345,11 +364,9 @@ public:
class
SdpAttrSSRCGroup
:
public
SdpItem
{
class
SdpAttrSSRCGroup
:
public
SdpItem
{
public
:
public
:
//a=ssrc-group 定义参考 RFC 5576 ,用于描述多个 ssrc 之间的关联,常见的有两种:
//a=ssrc-group 定义参考 RFC 5576(https://tools.ietf.org/html/rfc5576) ,用于描述多个 ssrc 之间的关联,常见的有两种:
//a=ssrc-group:FID 2430709021 3715850271
//a=ssrc-group:FID 2430709021 3715850271
// FID (Flow Identification) 最初用在 FEC 的关联中,WebRTC 中通常用于关联一组常规 RTP stream 和 重传 RTP stream 。
// FID (Flow Identification) 最初用在 FEC 的关联中,WebRTC 中通常用于关联一组常规 RTP stream 和 重传 RTP stream 。
//a=ssrc-group:SIM 360918977 360918978 360918980
//a=ssrc-group:SIM 360918977 360918978 360918980
// 在 Chrome 独有的 SDP munging 风格的 simulcast 中使用,将三组编码质量由低到高的 MediaStreamTrack 关联在一起。
// 在 Chrome 独有的 SDP munging 风格的 simulcast 中使用,将三组编码质量由低到高的 MediaStreamTrack 关联在一起。
string
type
{
"FID"
};
string
type
{
"FID"
};
...
...
webrtc/WebRtcTransport.cpp
查看文件 @
e6700991
...
@@ -93,6 +93,7 @@ std::string WebRtcTransport::GetLocalSdp() {
...
@@ -93,6 +93,7 @@ std::string WebRtcTransport::GetLocalSdp() {
"a=mid:video
\r\n
"
"a=mid:video
\r\n
"
"a=sendonly
\r\n
"
"a=sendonly
\r\n
"
"a=rtcp-mux
\r\n
"
"a=rtcp-mux
\r\n
"
"a=ice-lite
\r\n
"
"a=ice-ufrag:%s
\r\n
"
"a=ice-ufrag:%s
\r\n
"
"a=ice-pwd:%s
\r\n
"
"a=ice-pwd:%s
\r\n
"
"a=ice-options:trickle
\r\n
"
"a=ice-options:trickle
\r\n
"
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论