mirror of
https://github.com/bluenviron/mediamtx.git
synced 2025-12-20 02:00:05 -08:00
hls, webrtc: add FromStream / ToStream (#3752)
Some checks failed
code_lint / golangci_lint (push) Has been cancelled
code_lint / mod_tidy (push) Has been cancelled
code_lint / api_docs (push) Has been cancelled
code_test / test_64 (push) Has been cancelled
code_test / test_32 (push) Has been cancelled
code_test / test_highlevel (push) Has been cancelled
Some checks failed
code_lint / golangci_lint (push) Has been cancelled
code_lint / mod_tidy (push) Has been cancelled
code_lint / api_docs (push) Has been cancelled
code_test / test_64 (push) Has been cancelled
code_test / test_32 (push) Has been cancelled
code_test / test_highlevel (push) Has been cancelled
This commit is contained in:
parent
7b01f48d40
commit
6a38c87a5b
32 changed files with 1776 additions and 1689 deletions
|
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/bluenviron/mediamtx/internal/defs"
|
||||
"github.com/bluenviron/mediamtx/internal/externalcmd"
|
||||
"github.com/bluenviron/mediamtx/internal/protocols/webrtc"
|
||||
"github.com/bluenviron/mediamtx/internal/protocols/whip"
|
||||
"github.com/bluenviron/mediamtx/internal/stream"
|
||||
"github.com/bluenviron/mediamtx/internal/test"
|
||||
"github.com/bluenviron/mediamtx/internal/unit"
|
||||
|
|
@ -26,6 +27,10 @@ import (
|
|||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func uint16Ptr(v uint16) *uint16 {
|
||||
return &v
|
||||
}
|
||||
|
||||
func checkClose(t *testing.T, closeFunc func() error) {
|
||||
require.NoError(t, closeFunc())
|
||||
}
|
||||
|
|
@ -228,7 +233,7 @@ func TestServerOptionsICEServer(t *testing.T) {
|
|||
|
||||
require.Equal(t, http.StatusNoContent, res.StatusCode)
|
||||
|
||||
iceServers, err := webrtc.LinkHeaderUnmarshal(res.Header["Link"])
|
||||
iceServers, err := whip.LinkHeaderUnmarshal(res.Header["Link"])
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, []pwebrtc.ICEServer{{
|
||||
|
|
@ -290,17 +295,25 @@ func TestServerPublish(t *testing.T) {
|
|||
su, err := url.Parse("http://myuser:mypass@localhost:8886/teststream/whip?param=value")
|
||||
require.NoError(t, err)
|
||||
|
||||
wc := &webrtc.WHIPClient{
|
||||
wc := &whip.Client{
|
||||
HTTPClient: hc,
|
||||
URL: su,
|
||||
Log: test.NilLogger,
|
||||
}
|
||||
|
||||
tracks, err := wc.Publish(context.Background(), test.FormatH264, nil)
|
||||
track := &webrtc.OutgoingTrack{
|
||||
Caps: pwebrtc.RTPCodecCapability{
|
||||
MimeType: pwebrtc.MimeTypeH264,
|
||||
ClockRate: 90000,
|
||||
SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f",
|
||||
},
|
||||
}
|
||||
|
||||
err = wc.Publish(context.Background(), []*webrtc.OutgoingTrack{track})
|
||||
require.NoError(t, err)
|
||||
defer checkClose(t, wc.Close)
|
||||
|
||||
err = tracks[0].WriteRTP(&rtp.Packet{
|
||||
err = track.WriteRTP(&rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -337,7 +350,7 @@ func TestServerPublish(t *testing.T) {
|
|||
return nil
|
||||
})
|
||||
|
||||
err = tracks[0].WriteRTP(&rtp.Packet{
|
||||
err = track.WriteRTP(&rtp.Packet{
|
||||
Header: rtp.Header{
|
||||
Version: 2,
|
||||
Marker: true,
|
||||
|
|
@ -565,7 +578,7 @@ func TestServerRead(t *testing.T) {
|
|||
defer tr.CloseIdleConnections()
|
||||
hc := &http.Client{Transport: tr}
|
||||
|
||||
wc := &webrtc.WHIPClient{
|
||||
wc := &whip.Client{
|
||||
HTTPClient: hc,
|
||||
URL: u,
|
||||
Log: test.NilLogger,
|
||||
|
|
@ -602,9 +615,20 @@ func TestServerRead(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
defer checkClose(t, wc.Close)
|
||||
|
||||
pkt, err := tracks[0].ReadRTP()
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, ca.outRTPPayload, pkt.Payload)
|
||||
done := make(chan struct{})
|
||||
|
||||
tracks[0].OnPacketRTP = func(pkt *rtp.Packet) {
|
||||
select {
|
||||
case <-done:
|
||||
default:
|
||||
require.Equal(t, ca.outRTPPayload, pkt.Payload)
|
||||
close(done)
|
||||
}
|
||||
}
|
||||
|
||||
wc.StartReading()
|
||||
|
||||
<-done
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -847,7 +871,7 @@ func TestServerPatchNotFound(t *testing.T) {
|
|||
offer, err := pc.CreateOffer(nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
frag, err := webrtc.ICEFragmentMarshal(offer.SDP, []*pwebrtc.ICECandidateInit{{
|
||||
frag, err := whip.ICEFragmentMarshal(offer.SDP, []*pwebrtc.ICECandidateInit{{
|
||||
Candidate: "mycandidate",
|
||||
SDPMLineIndex: uint16Ptr(0),
|
||||
}})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue