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
2d8ef45e
Commit
2d8ef45e
authored
3 years ago
by
xia-chu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善fci相关代码
parent
aa54adb1
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
83 行增加
和
49 行删除
+83
-49
src/Rtcp/Rtcp.cpp
+51
-3
src/Rtcp/Rtcp.h
+1
-1
src/Rtcp/RtcpFCI.cpp
+1
-1
webrtc/Sdp.cpp
+17
-6
webrtc/WebRtcTransport.cpp
+1
-1
webrtc/readme.md
+12
-37
没有找到文件。
src/Rtcp/Rtcp.cpp
查看文件 @
2d8ef45e
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#include <assert.h>
#include <assert.h>
#include "Rtcp.h"
#include "Rtcp.h"
#include "Util/logger.h"
#include "Util/logger.h"
#include "RtcpFCI.h"
namespace
mediakit
{
namespace
mediakit
{
...
@@ -493,18 +494,65 @@ string RtcpFB::dumpString() const {
...
@@ -493,18 +494,65 @@ string RtcpFB::dumpString() const {
printer
<<
RtcpHeader
::
dumpHeader
();
printer
<<
RtcpHeader
::
dumpHeader
();
printer
<<
"ssrc:"
<<
ssrc
<<
"
\r\n
"
;
printer
<<
"ssrc:"
<<
ssrc
<<
"
\r\n
"
;
printer
<<
"ssrc_media:"
<<
ssrc_media
<<
"
\r\n
"
;
printer
<<
"ssrc_media:"
<<
ssrc_media
<<
"
\r\n
"
;
auto
fci
=
(
uint8_t
*
)
&
ssrc_media
+
sizeof
(
ssrc_media
);
auto
fci
_data
=
(
uint8_t
*
)
&
ssrc_media
+
sizeof
(
ssrc_media
);
auto
fci_len
=
getSize
()
-
sizeof
(
RtcpFB
);
auto
fci_len
=
getSize
()
-
sizeof
(
RtcpFB
);
if
(
fci_len
)
{
switch
((
RtcpType
)
pt
)
{
switch
((
RtcpType
)
pt
)
{
case
RtcpType
:
:
RTCP_PSFB
:
{
case
RtcpType
:
:
RTCP_PSFB
:
{
switch
((
PSFBType
)
report_count
)
{
case
PSFBType
:
:
RTCP_PSFB_SLI
:
{
FCI_SLI
*
fci
=
(
FCI_SLI
*
)
fci_data
;
fci
->
check
(
fci_len
);
printer
<<
"fci:"
<<
psfbTypeToStr
((
PSFBType
)
report_count
)
<<
" "
<<
fci
->
dumpString
();
break
;
}
case
PSFBType
:
:
RTCP_PSFB_PLI
:
{
CHECK
(
fci_len
==
0
);
printer
<<
"fci:"
<<
psfbTypeToStr
((
PSFBType
)
report_count
);
break
;
}
case
PSFBType
:
:
RTCP_PSFB_FIR
:
{
FCI_FIR
*
fci
=
(
FCI_FIR
*
)
fci_data
;
fci
->
check
(
fci_len
);
printer
<<
"fci:"
<<
psfbTypeToStr
((
PSFBType
)
report_count
)
<<
" "
<<
fci
->
dumpString
();
break
;
}
case
PSFBType
:
:
RTCP_PSFB_REMB
:
{
FCI_REMB
*
fci
=
(
FCI_REMB
*
)
fci_data
;
fci
->
check
(
fci_len
);
printer
<<
"fci:"
<<
psfbTypeToStr
((
PSFBType
)
report_count
)
<<
" "
<<
fci
->
dumpString
();
break
;
}
default
:
{
printer
<<
"fci:"
<<
psfbTypeToStr
((
PSFBType
)
report_count
)
<<
" "
<<
hexdump
(
fci_data
,
fci_len
);
break
;
}
}
break
;
break
;
}
}
case
RtcpType
:
:
RTCP_RTPFB
:
{
case
RtcpType
:
:
RTCP_RTPFB
:
{
switch
((
RTPFBType
)
report_count
)
{
case
RTPFBType
:
:
RTCP_RTPFB_NACK
:
{
FCI_NACK
*
fci
=
(
FCI_NACK
*
)
fci_data
;
fci
->
check
(
fci_len
);
printer
<<
"fci:"
<<
rtpfbTypeToStr
((
RTPFBType
)
report_count
)
<<
" "
<<
fci
->
dumpString
();
break
;
}
case
RTPFBType
:
:
RTCP_RTPFB_TWCC
:
{
FCI_TWCC
*
fci
=
(
FCI_TWCC
*
)
fci_data
;
fci
->
check
(
fci_len
);
printer
<<
"fci:"
<<
rtpfbTypeToStr
((
RTPFBType
)
report_count
)
<<
" "
<<
fci
->
dumpString
(
fci_len
);
break
;
break
;
}
}
default
:
{
printer
<<
"fci:"
<<
rtpfbTypeToStr
((
RTPFBType
)
report_count
)
<<
" "
<<
hexdump
(
fci_data
,
fci_len
);
break
;
}
}
break
;
}
}
printer
<<
"fci:"
<<
hexdump
(
fci
,
fci_len
)
;
default
:
/*不可达*/
assert
(
0
);
break
;
}
}
return
std
::
move
(
printer
);
return
std
::
move
(
printer
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/Rtcp/Rtcp.h
查看文件 @
2d8ef45e
...
@@ -85,7 +85,7 @@ namespace mediakit {
...
@@ -85,7 +85,7 @@ namespace mediakit {
XX(RTCP_PSFB_TSTR, 5)\
XX(RTCP_PSFB_TSTR, 5)\
XX(RTCP_PSFB_TSTN, 6)\
XX(RTCP_PSFB_TSTN, 6)\
XX(RTCP_PSFB_VBCM, 7) \
XX(RTCP_PSFB_VBCM, 7) \
XX(RTCP_PSFB_
AF
B, 15)
XX(RTCP_PSFB_
REM
B, 15)
//https://tools.ietf.org/html/rfc4585#section-6.2
//https://tools.ietf.org/html/rfc4585#section-6.2
//6.2. Transport Layer Feedback Messages
//6.2. Transport Layer Feedback Messages
...
...
This diff is collapsed.
Click to expand it.
src/Rtcp/RtcpFCI.cpp
查看文件 @
2d8ef45e
...
@@ -453,7 +453,7 @@ map<uint16_t, std::pair<SymbolStatus, uint32_t/*stamp*/> > FCI_TWCC::getPacketCh
...
@@ -453,7 +453,7 @@ map<uint16_t, std::pair<SymbolStatus, uint32_t/*stamp*/> > FCI_TWCC::getPacketCh
string
FCI_TWCC
::
dumpString
(
size_t
total_size
)
const
{
string
FCI_TWCC
::
dumpString
(
size_t
total_size
)
const
{
_StrPrinter
printer
;
_StrPrinter
printer
;
auto
map
=
getPacketChunkList
(
total_size
);
auto
map
=
getPacketChunkList
(
total_size
);
printer
<<
"twcc fci, base_seq:"
<<
getBaseSeq
()
<<
",pkt_status_count:"
<<
getPacketCount
()
<<
", ref time:"
<<
getReferenceTime
()
<<
", fb count:"
<<
(
int
)
fb_pkt_count
<<
"
\n
"
;
printer
<<
"twcc fci, base_seq:"
<<
getBaseSeq
()
<<
",
pkt_status_count:"
<<
getPacketCount
()
<<
", ref time:"
<<
getReferenceTime
()
<<
", fb count:"
<<
(
int
)
fb_pkt_count
<<
"
\n
"
;
for
(
auto
&
pr
:
map
)
{
for
(
auto
&
pr
:
map
)
{
printer
<<
"rtp seq:"
<<
pr
.
first
<<
", packet status:"
<<
(
int
)(
pr
.
second
.
first
)
<<
", delta:"
<<
pr
.
second
.
second
<<
"
\n
"
;
printer
<<
"rtp seq:"
<<
pr
.
first
<<
", packet status:"
<<
(
int
)(
pr
.
second
.
first
)
<<
", delta:"
<<
pr
.
second
.
second
<<
"
\n
"
;
}
}
...
...
This diff is collapsed.
Click to expand it.
webrtc/Sdp.cpp
查看文件 @
2d8ef45e
...
@@ -1257,18 +1257,29 @@ void RtcConfigure::RtcTrackConfigure::setDefaultSetting(TrackType type){
...
@@ -1257,18 +1257,29 @@ void RtcConfigure::RtcTrackConfigure::setDefaultSetting(TrackType type){
//此处调整偏好的编码格式优先级
//此处调整偏好的编码格式优先级
preferred_codec
=
{
CodecAAC
,
CodecG711U
,
CodecG711A
,
CodecOpus
};
preferred_codec
=
{
CodecAAC
,
CodecG711U
,
CodecG711A
,
CodecOpus
};
rtcp_fb
=
{
"transport-cc"
};
rtcp_fb
=
{
"transport-cc"
};
extmap
=
{
"1 urn:ietf:params:rtp-hdrext:ssrc-audio-level"
};
extmap
=
{
"1 urn:ietf:params:rtp-hdrext:ssrc-audio-level"
,
"2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
,
"3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
,
"4 urn:ietf:params:rtp-hdrext:sdes:mid"
,
"5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id"
,
"6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"
};
break
;
break
;
}
}
case
TrackVideo
:
{
case
TrackVideo
:
{
//此处调整偏好的编码格式优先级
//此处调整偏好的编码格式优先级
preferred_codec
=
{
CodecH264
,
CodecH265
};
preferred_codec
=
{
CodecH264
,
CodecH265
};
rtcp_fb
=
{
"nack"
,
"ccm fir"
,
"nack pli"
,
"goog-remb"
,
"transport-cc"
};
rtcp_fb
=
{
"nack"
,
"ccm fir"
,
"nack pli"
,
"goog-remb"
,
"transport-cc"
};
extmap
=
{
"2 urn:ietf:params:rtp-hdrext:toffset"
,
extmap
=
{
"14 urn:ietf:params:rtp-hdrext:toffset"
,
"3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
,
"2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"
,
"4 urn:3gpp:video-orientation"
,
"13 urn:3gpp:video-orientation"
,
"5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
,
"3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"
,
"6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay"
};
"12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay"
,
"11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type"
,
"7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing"
,
"8 http://www.webrtc.org/experiments/rtp-hdrext/color-space"
,
"4 urn:ietf:params:rtp-hdrext:sdes:mid"
,
"5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id"
,
"6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"
};
break
;
break
;
}
}
case
TrackApplication
:
{
case
TrackApplication
:
{
...
...
This diff is collapsed.
Click to expand it.
webrtc/WebRtcTransport.cpp
查看文件 @
2d8ef45e
...
@@ -544,7 +544,7 @@ void WebRtcTransportImp::onRtcp(const char *buf, size_t len) {
...
@@ -544,7 +544,7 @@ void WebRtcTransportImp::onRtcp(const char *buf, size_t len) {
}
}
case
RtcpType
:
:
RTCP_PSFB
:
case
RtcpType
:
:
RTCP_PSFB
:
case
RtcpType
:
:
RTCP_RTPFB
:
{
case
RtcpType
:
:
RTCP_RTPFB
:
{
InfoL
<<
rtcp
->
dumpString
();
InfoL
<<
"
\n
"
<<
rtcp
->
dumpString
();
break
;
break
;
}
}
default
:
break
;
default
:
break
;
...
...
This diff is collapsed.
Click to expand it.
webrtc/readme.md
查看文件 @
2d8ef45e
# 致谢与声明
14 urn:ietf:params:rtp-hdrext:toffset
本文件夹下部分文件提取自
[
MediaSoup
](
https://github.com/versatica/mediasoup
)
,分别为:
2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
13 urn:3gpp:video-orientation
-
ice相关功能:
3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
-
IceServer.cpp
12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
-
IceServer.hpp
11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
-
StunPacket.cpp
7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
-
StunPacket.hpp
8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
-
Utils.hpp
4 urn:ietf:params:rtp-hdrext:sdes:mid
5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
-
dtls相关功能:
6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
-
DtlsTransport.cpp
\ No newline at end of file
-
DtlsTransport.hpp
-
srtp相关功能:
-
SrtpSession.cpp
-
SrtpSession.hpp
以上源码有一定的修改和裁剪,感谢MediaSoup开源项目及作者,
用户在使用本项目的同时,应该同时遵循MediaSoup的开源协议。
同时,在此也感谢开源项目
[
easy_webrtc_server
](
https://github.com/Mihawk086/easy_webrtc_server
)
及作者,
在集成MediaSoup相关代码前期,主要参考这个项目。
另外,感谢
[
big panda
](
<
2381267071@qq.com
>
)
开发并贡献的webrtc js测试客户端(www/webrtc目录下文件),
其开源项目地址为:https://gitee.com/xiongguangjie/zlmrtcclient.js
# 现状与规划
ZLMediaKit的WebRTC相关功能目前仅供测试与开发,现在还不成熟,后续主要工作有:
-
1、完善webrtc rtcp相关功能,包括丢包重传、带宽检测等功能。
-
2、实现rtp重传等相关功能。
-
3、实现simulecast相关功能。
-
4、fec、rtp扩展等其他功能。
-
5、如果精力允许,逐步替换MediaSoup相关代码,改用自有版权代码。
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论