Add more compatibility go webrtc api
This commit is contained in:
@@ -56,4 +56,6 @@ replace (
|
|||||||
github.com/brutella/hap v0.0.17 => github.com/AlexxIT/hap v0.0.15-0.20221108133010-d8a45b7a7045
|
github.com/brutella/hap v0.0.17 => github.com/AlexxIT/hap v0.0.15-0.20221108133010-d8a45b7a7045
|
||||||
// fix reading AAC config bytes
|
// fix reading AAC config bytes
|
||||||
github.com/deepch/vdk v0.0.19 => github.com/AlexxIT/vdk v0.0.18-0.20221108193131-6168555b4f92
|
github.com/deepch/vdk v0.0.19 => github.com/AlexxIT/vdk v0.0.18-0.20221108193131-6168555b4f92
|
||||||
|
// fix DTLS InsecureSkipHelloVerify option
|
||||||
|
github.com/pion/webrtc/v3 v3.1.56 => github.com/AlexxIT/pion-webrtc/v3 v3.0.0-20230228104617-597d4c8aefbf
|
||||||
)
|
)
|
||||||
|
|||||||
+52
-18
@@ -22,9 +22,7 @@ func NewAPI(address string) (*webrtc.API, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
s := webrtc.SettingEngine{
|
s := webrtc.SettingEngine{}
|
||||||
//LoggerFactory: customLoggerFactory{},
|
|
||||||
}
|
|
||||||
|
|
||||||
// disable listen on Hassio docker interfaces
|
// disable listen on Hassio docker interfaces
|
||||||
s.SetInterfaceFilter(func(name string) bool {
|
s.SetInterfaceFilter(func(name string) bool {
|
||||||
@@ -34,12 +32,15 @@ func NewAPI(address string) (*webrtc.API, error) {
|
|||||||
// disable mDNS listener
|
// disable mDNS listener
|
||||||
s.SetICEMulticastDNSMode(ice.MulticastDNSModeDisabled)
|
s.SetICEMulticastDNSMode(ice.MulticastDNSModeDisabled)
|
||||||
|
|
||||||
if address != "" {
|
// UDP6 may have problems with DNS resolving for STUN servers
|
||||||
s.SetNetworkTypes([]webrtc.NetworkType{
|
s.SetNetworkTypes([]webrtc.NetworkType{
|
||||||
webrtc.NetworkTypeUDP4, webrtc.NetworkTypeUDP6,
|
webrtc.NetworkTypeUDP4, webrtc.NetworkTypeTCP4,
|
||||||
webrtc.NetworkTypeTCP4, webrtc.NetworkTypeTCP6,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// fix https://github.com/pion/webrtc/pull/2407
|
||||||
|
s.SetDTLSInsecureSkipHelloVerify(true)
|
||||||
|
|
||||||
|
if address != "" {
|
||||||
if ln, err := net.ListenPacket("udp", address); err == nil {
|
if ln, err := net.ListenPacket("udp", address); err == nil {
|
||||||
udpMux := webrtc.NewICEUDPMux(nil, ln)
|
udpMux := webrtc.NewICEUDPMux(nil, ln)
|
||||||
s.SetICEUDPMux(udpMux)
|
s.SetICEUDPMux(udpMux)
|
||||||
@@ -61,13 +62,21 @@ func NewAPI(address string) (*webrtc.API, error) {
|
|||||||
func RegisterDefaultCodecs(m *webrtc.MediaEngine) error {
|
func RegisterDefaultCodecs(m *webrtc.MediaEngine) error {
|
||||||
for _, codec := range []webrtc.RTPCodecParameters{
|
for _, codec := range []webrtc.RTPCodecParameters{
|
||||||
{
|
{
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypeOpus, 48000, 2, "minptime=10;useinbandfec=1", nil},
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypeOpus, ClockRate: 48000, Channels: 2, SDPFmtpLine: "minptime=10;useinbandfec=1",
|
||||||
|
},
|
||||||
PayloadType: 101, //111,
|
PayloadType: 101, //111,
|
||||||
}, {
|
},
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypePCMU, 8000, 0, "", nil},
|
{
|
||||||
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypePCMU, ClockRate: 8000,
|
||||||
|
},
|
||||||
PayloadType: 0,
|
PayloadType: 0,
|
||||||
}, {
|
},
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypePCMA, 8000, 0, "", nil},
|
{
|
||||||
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypePCMA, ClockRate: 8000,
|
||||||
|
},
|
||||||
PayloadType: 8,
|
PayloadType: 8,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
@@ -76,22 +85,47 @@ func RegisterDefaultCodecs(m *webrtc.MediaEngine) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
videoRTCPFeedback := []webrtc.RTCPFeedback{{"goog-remb", ""}, {"ccm", "fir"}, {"nack", ""}, {"nack", "pli"}}
|
videoRTCPFeedback := []webrtc.RTCPFeedback{
|
||||||
|
{"goog-remb", ""},
|
||||||
|
{"ccm", "fir"},
|
||||||
|
{"nack", ""},
|
||||||
|
{"nack", "pli"},
|
||||||
|
}
|
||||||
for _, codec := range []webrtc.RTPCodecParameters{
|
for _, codec := range []webrtc.RTPCodecParameters{
|
||||||
// macOS Google Chrome 103.0.5060.134
|
// macOS Google Chrome 103.0.5060.134
|
||||||
{
|
{
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypeH264, 90000, 0, "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f", videoRTCPFeedback},
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypeH264,
|
||||||
|
ClockRate: 90000,
|
||||||
|
SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f",
|
||||||
|
RTCPFeedback: videoRTCPFeedback,
|
||||||
|
},
|
||||||
PayloadType: 96, //102,
|
PayloadType: 96, //102,
|
||||||
}, {
|
},
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypeH264, 90000, 0, "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f", videoRTCPFeedback},
|
{
|
||||||
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypeH264,
|
||||||
|
ClockRate: 90000,
|
||||||
|
SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f",
|
||||||
|
RTCPFeedback: videoRTCPFeedback,
|
||||||
|
},
|
||||||
PayloadType: 97, //125,
|
PayloadType: 97, //125,
|
||||||
}, {
|
},
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypeH264, 90000, 0, "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032", videoRTCPFeedback},
|
{
|
||||||
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypeH264,
|
||||||
|
ClockRate: 90000,
|
||||||
|
SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032",
|
||||||
|
RTCPFeedback: videoRTCPFeedback},
|
||||||
PayloadType: 98, //123,
|
PayloadType: 98, //123,
|
||||||
},
|
},
|
||||||
// macOS Safari 15.1
|
// macOS Safari 15.1
|
||||||
{
|
{
|
||||||
RTPCodecCapability: webrtc.RTPCodecCapability{webrtc.MimeTypeH265, 90000, 0, "", videoRTCPFeedback},
|
RTPCodecCapability: webrtc.RTPCodecCapability{
|
||||||
|
MimeType: webrtc.MimeTypeH265,
|
||||||
|
ClockRate: 90000,
|
||||||
|
RTCPFeedback: videoRTCPFeedback,
|
||||||
|
},
|
||||||
PayloadType: 100,
|
PayloadType: 100,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
|
|||||||
Reference in New Issue
Block a user