mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
rename pkg/formats into pkt/format
This commit is contained in:
38
README.md
38
README.md
@@ -102,35 +102,35 @@ In RTSP, media streams are routed between server and clients by using RTP packet
|
|||||||
|
|
||||||
|format / codec|variant|documentation|encoder and decoder available|
|
|format / codec|variant|documentation|encoder and decoder available|
|
||||||
|--------------|-------|-------------|-----------------------------|
|
|--------------|-------|-------------|-----------------------------|
|
||||||
|AV1||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#AV1)|:heavy_check_mark:|
|
|AV1||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#AV1)|:heavy_check_mark:|
|
||||||
|VP9||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#VP9)|:heavy_check_mark:|
|
|VP9||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#VP9)|:heavy_check_mark:|
|
||||||
|VP8||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#VP8)|:heavy_check_mark:|
|
|VP8||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#VP8)|:heavy_check_mark:|
|
||||||
|H265||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#H265)|:heavy_check_mark:|
|
|H265||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#H265)|:heavy_check_mark:|
|
||||||
|H264||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#H264)|:heavy_check_mark:|
|
|H264||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#H264)|:heavy_check_mark:|
|
||||||
|MPEG-4 Video (H263, Xvid)||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MPEG4VideoES)|:heavy_check_mark:|
|
|MPEG-4 Video (H263, Xvid)||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MPEG4VideoES)|:heavy_check_mark:|
|
||||||
|MPEG-1/2 Video||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MPEG1Video)||
|
|MPEG-1/2 Video||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MPEG1Video)||
|
||||||
|M-JPEG||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MJPEG)|:heavy_check_mark:|
|
|M-JPEG||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MJPEG)|:heavy_check_mark:|
|
||||||
|
|
||||||
### Audio
|
### Audio
|
||||||
|
|
||||||
|format / codec|variant|documentation|encoder and decoder available|
|
|format / codec|variant|documentation|encoder and decoder available|
|
||||||
|--------------|-------|-------------|-----------------------------|
|
|--------------|-------|-------------|-----------------------------|
|
||||||
|Opus||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#Opus)|:heavy_check_mark:|
|
|Opus||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#Opus)|:heavy_check_mark:|
|
||||||
|Vorbis||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#Vorbis)||
|
|Vorbis||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#Vorbis)||
|
||||||
|MPEG-4 Audio (AAC)|Generic (RFC3640)|[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MPEG4AudioGeneric)|:heavy_check_mark:|
|
|MPEG-4 Audio (AAC)|Generic (RFC3640)|[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MPEG4AudioGeneric)|:heavy_check_mark:|
|
||||||
|MPEG-4 Audio (AAC)|LATM (RFC6416)|[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MPEG4AudioLATM)|:heavy_check_mark:|
|
|MPEG-4 Audio (AAC)|LATM (RFC6416)|[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MPEG4AudioLATM)|:heavy_check_mark:|
|
||||||
|MPEG-1/2 Audio (MP3)||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MPEG1Audio)|:heavy_check_mark:|
|
|MPEG-1/2 Audio (MP3)||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MPEG1Audio)|:heavy_check_mark:|
|
||||||
|Speex||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#Speex)||
|
|Speex||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#Speex)||
|
||||||
|G726||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#G726)||
|
|G726||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#G726)||
|
||||||
|G722||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#G722)|:heavy_check_mark:|
|
|G722||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#G722)|:heavy_check_mark:|
|
||||||
|G711 (PCMA, PCMU)||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#G711)|:heavy_check_mark:|
|
|G711 (PCMA, PCMU)||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#G711)|:heavy_check_mark:|
|
||||||
|LPCM||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#LPCM)|:heavy_check_mark:|
|
|LPCM||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#LPCM)|:heavy_check_mark:|
|
||||||
|
|
||||||
### Mixed
|
### Mixed
|
||||||
|
|
||||||
|format / codec|variant|documentation|encoder and decoder available|
|
|format / codec|variant|documentation|encoder and decoder available|
|
||||||
|--------------|-------|-------------|-----------------------------|
|
|--------------|-------|-------------|-----------------------------|
|
||||||
|MPEG-TS||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/formats#MPEGTS)||
|
|MPEG-TS||[link](https://pkg.go.dev/github.com/bluenviron/gortsplib/v4/pkg/format#MPEGTS)||
|
||||||
|
|
||||||
## Standards
|
## Standards
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@ import (
|
|||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/bytecounter"
|
"github.com/bluenviron/gortsplib/v4/pkg/bytecounter"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/conn"
|
"github.com/bluenviron/gortsplib/v4/pkg/conn"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/headers"
|
"github.com/bluenviron/gortsplib/v4/pkg/headers"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/liberrors"
|
"github.com/bluenviron/gortsplib/v4/pkg/liberrors"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
@@ -199,7 +199,7 @@ type ClientOnDecodeErrorFunc func(err error)
|
|||||||
type OnPacketRTPFunc func(*rtp.Packet)
|
type OnPacketRTPFunc func(*rtp.Packet)
|
||||||
|
|
||||||
// OnPacketRTPAnyFunc is the prototype of the callback passed to OnPacketRTP(Any).
|
// OnPacketRTPAnyFunc is the prototype of the callback passed to OnPacketRTP(Any).
|
||||||
type OnPacketRTPAnyFunc func(*media.Media, formats.Format, *rtp.Packet)
|
type OnPacketRTPAnyFunc func(*media.Media, format.Format, *rtp.Packet)
|
||||||
|
|
||||||
// OnPacketRTCPFunc is the prototype of the callback passed to OnPacketRTCP().
|
// OnPacketRTCPFunc is the prototype of the callback passed to OnPacketRTCP().
|
||||||
type OnPacketRTCPFunc func(rtcp.Packet)
|
type OnPacketRTCPFunc func(rtcp.Packet)
|
||||||
@@ -1639,7 +1639,7 @@ func (c *Client) OnPacketRTCPAny(cb OnPacketRTCPAnyFunc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OnPacketRTP sets the callback that is called when a RTP packet is read.
|
// OnPacketRTP sets the callback that is called when a RTP packet is read.
|
||||||
func (c *Client) OnPacketRTP(medi *media.Media, forma formats.Format, cb OnPacketRTPFunc) {
|
func (c *Client) OnPacketRTP(medi *media.Media, forma format.Format, cb OnPacketRTPFunc) {
|
||||||
cm := c.medias[medi]
|
cm := c.medias[medi]
|
||||||
ct := cm.formats[forma.PayloadType()]
|
ct := cm.formats[forma.PayloadType()]
|
||||||
ct.onPacketRTP = cb
|
ct.onPacketRTP = cb
|
||||||
|
@@ -7,7 +7,7 @@ import (
|
|||||||
"github.com/pion/rtcp"
|
"github.com/pion/rtcp"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/rtcpreceiver"
|
"github.com/bluenviron/gortsplib/v4/pkg/rtcpreceiver"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/rtcpsender"
|
"github.com/bluenviron/gortsplib/v4/pkg/rtcpsender"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/rtplossdetector"
|
"github.com/bluenviron/gortsplib/v4/pkg/rtplossdetector"
|
||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
|
|
||||||
type clientFormat struct {
|
type clientFormat struct {
|
||||||
cm *clientMedia
|
cm *clientMedia
|
||||||
format formats.Format
|
format format.Format
|
||||||
udpReorderer *rtpreorderer.Reorderer // play
|
udpReorderer *rtpreorderer.Reorderer // play
|
||||||
udpRTCPReceiver *rtcpreceiver.RTCPReceiver // play
|
udpRTCPReceiver *rtcpreceiver.RTCPReceiver // play
|
||||||
tcpLossDetector *rtplossdetector.LossDetector // play
|
tcpLossDetector *rtplossdetector.LossDetector // play
|
||||||
@@ -24,7 +24,7 @@ type clientFormat struct {
|
|||||||
onPacketRTP OnPacketRTPFunc
|
onPacketRTP OnPacketRTPFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
func newClientFormat(cm *clientMedia, forma formats.Format) *clientFormat {
|
func newClientFormat(cm *clientMedia, forma format.Format) *clientFormat {
|
||||||
return &clientFormat{
|
return &clientFormat{
|
||||||
cm: cm,
|
cm: cm,
|
||||||
format: forma,
|
format: forma,
|
||||||
|
@@ -18,7 +18,7 @@ import (
|
|||||||
"github.com/bluenviron/gortsplib/v4/pkg/auth"
|
"github.com/bluenviron/gortsplib/v4/pkg/auth"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/conn"
|
"github.com/bluenviron/gortsplib/v4/pkg/conn"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/headers"
|
"github.com/bluenviron/gortsplib/v4/pkg/headers"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
@@ -38,7 +38,7 @@ func mustMarshalMedias(medias media.Medias) []byte {
|
|||||||
return byts
|
return byts
|
||||||
}
|
}
|
||||||
|
|
||||||
func readAll(c *Client, ur string, cb func(*media.Media, formats.Format, *rtp.Packet)) error {
|
func readAll(c *Client, ur string, cb func(*media.Media, format.Format, *rtp.Packet)) error {
|
||||||
u, err := url.Parse(ur)
|
u, err := url.Parse(ur)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -79,7 +79,7 @@ func TestClientPlayFormats(t *testing.T) {
|
|||||||
|
|
||||||
media2 := &media.Media{
|
media2 := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.MPEG4Audio{
|
Formats: []format.Format{&format.MPEG4Audio{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
Config: &mpeg4audio.Config{
|
Config: &mpeg4audio.Config{
|
||||||
Type: mpeg4audio.ObjectTypeAACLC,
|
Type: mpeg4audio.ObjectTypeAACLC,
|
||||||
@@ -94,7 +94,7 @@ func TestClientPlayFormats(t *testing.T) {
|
|||||||
|
|
||||||
media3 := &media.Media{
|
media3 := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.MPEG4Audio{
|
Formats: []format.Format{&format.MPEG4Audio{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
Config: &mpeg4audio.Config{
|
Config: &mpeg4audio.Config{
|
||||||
Type: mpeg4audio.ObjectTypeAACLC,
|
Type: mpeg4audio.ObjectTypeAACLC,
|
||||||
@@ -271,7 +271,7 @@ func TestClientPlay(t *testing.T) {
|
|||||||
require.Equal(t, base.Describe, req.Method)
|
require.Equal(t, base.Describe, req.Method)
|
||||||
require.Equal(t, mustParseURL(scheme+"://"+listenIP+":8554/test/stream?param=value"), req.URL)
|
require.Equal(t, mustParseURL(scheme+"://"+listenIP+":8554/test/stream?param=value"), req.URL)
|
||||||
|
|
||||||
forma := &formats.Generic{
|
forma := &format.Generic{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
RTPMa: "private/90000",
|
RTPMa: "private/90000",
|
||||||
}
|
}
|
||||||
@@ -281,11 +281,11 @@ func TestClientPlay(t *testing.T) {
|
|||||||
medias := media.Medias{
|
medias := media.Medias{
|
||||||
&media.Media{
|
&media.Media{
|
||||||
Type: "application",
|
Type: "application",
|
||||||
Formats: []formats.Format{forma},
|
Formats: []format.Format{forma},
|
||||||
},
|
},
|
||||||
&media.Media{
|
&media.Media{
|
||||||
Type: "application",
|
Type: "application",
|
||||||
Formats: []formats.Format{forma},
|
Formats: []format.Format{forma},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
resetMediaControls(medias)
|
resetMediaControls(medias)
|
||||||
@@ -496,7 +496,7 @@ func TestClientPlay(t *testing.T) {
|
|||||||
err = c.SetupAll(medias, baseURL)
|
err = c.SetupAll(medias, baseURL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
c.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
c.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
require.Equal(t, &testRTPPacket, pkt)
|
require.Equal(t, &testRTPPacket, pkt)
|
||||||
err := c.WritePacketRTCP(medi, &testRTCPPacket)
|
err := c.WritePacketRTCP(medi, &testRTCPPacket)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -547,7 +547,7 @@ func TestClientPlayPartial(t *testing.T) {
|
|||||||
require.Equal(t, base.Describe, req.Method)
|
require.Equal(t, base.Describe, req.Method)
|
||||||
require.Equal(t, mustParseURL("rtsp://"+listenIP+":8554/teststream"), req.URL)
|
require.Equal(t, mustParseURL("rtsp://"+listenIP+":8554/teststream"), req.URL)
|
||||||
|
|
||||||
forma := &formats.Generic{
|
forma := &format.Generic{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
RTPMa: "private/90000",
|
RTPMa: "private/90000",
|
||||||
}
|
}
|
||||||
@@ -557,11 +557,11 @@ func TestClientPlayPartial(t *testing.T) {
|
|||||||
medias := media.Medias{
|
medias := media.Medias{
|
||||||
&media.Media{
|
&media.Media{
|
||||||
Type: "application",
|
Type: "application",
|
||||||
Formats: []formats.Format{forma},
|
Formats: []format.Format{forma},
|
||||||
},
|
},
|
||||||
&media.Media{
|
&media.Media{
|
||||||
Type: "application",
|
Type: "application",
|
||||||
Formats: []formats.Format{forma},
|
Formats: []format.Format{forma},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
resetMediaControls(medias)
|
resetMediaControls(medias)
|
||||||
@@ -652,7 +652,7 @@ func TestClientPlayPartial(t *testing.T) {
|
|||||||
_, err = c.Setup(medias[1], baseURL, 0, 0)
|
_, err = c.Setup(medias[1], baseURL, 0, 0)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
c.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
c.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
require.Equal(t, medias[1], medi)
|
require.Equal(t, medias[1], medi)
|
||||||
require.Equal(t, medias[1].Formats[0], forma)
|
require.Equal(t, medias[1].Formats[0], forma)
|
||||||
require.Equal(t, &testRTPPacket, pkt)
|
require.Equal(t, &testRTPPacket, pkt)
|
||||||
@@ -937,7 +937,7 @@ func TestClientPlayAnyPort(t *testing.T) {
|
|||||||
|
|
||||||
var med *media.Media
|
var med *media.Media
|
||||||
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
require.Equal(t, &testRTPPacket, pkt)
|
require.Equal(t, &testRTPPacket, pkt)
|
||||||
med = medi
|
med = medi
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
@@ -1065,7 +1065,7 @@ func TestClientPlayAutomaticProtocol(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -1245,7 +1245,7 @@ func TestClientPlayAutomaticProtocol(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -1486,7 +1486,7 @@ func TestClientPlayAutomaticProtocol(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://myuser:mypass@localhost:8554/teststream",
|
err = readAll(&c, "rtsp://myuser:mypass@localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -1609,7 +1609,7 @@ func TestClientPlayDifferentInterleavedIDs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -1797,7 +1797,7 @@ func TestClientPlayRedirect(t *testing.T) {
|
|||||||
ru = "rtsp://testusr:testpwd@localhost:8554/path1"
|
ru = "rtsp://testusr:testpwd@localhost:8554/path1"
|
||||||
}
|
}
|
||||||
err = readAll(&c, ru,
|
err = readAll(&c, ru,
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -1999,7 +1999,7 @@ func TestClientPlayPause(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
if atomic.SwapInt32(&firstFrame, 1) == 0 {
|
if atomic.SwapInt32(&firstFrame, 1) == 0 {
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
}
|
}
|
||||||
@@ -2464,7 +2464,7 @@ func TestClientPlayIgnoreTCPInvalidMedia(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
err = readAll(&c, "rtsp://localhost:8554/teststream",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
close(recv)
|
close(recv)
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -2877,7 +2877,7 @@ func TestClientPlayDifferentSource(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = readAll(&c, "rtsp://localhost:8554/test/stream?param=value",
|
err = readAll(&c, "rtsp://localhost:8554/test/stream?param=value",
|
||||||
func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
require.Equal(t, &testRTPPacket, pkt)
|
require.Equal(t, &testRTPPacket, pkt)
|
||||||
close(packetRecv)
|
close(packetRecv)
|
||||||
})
|
})
|
||||||
@@ -2941,7 +2941,7 @@ func TestClientPlayDecodeErrors(t *testing.T) {
|
|||||||
|
|
||||||
medias := media.Medias{&media.Media{
|
medias := media.Medias{&media.Media{
|
||||||
Type: media.TypeApplication,
|
Type: media.TypeApplication,
|
||||||
Formats: []formats.Format{&formats.Generic{
|
Formats: []format.Format{&format.Generic{
|
||||||
PayloadTyp: 97,
|
PayloadTyp: 97,
|
||||||
RTPMa: "private/90000",
|
RTPMa: "private/90000",
|
||||||
}},
|
}},
|
||||||
|
@@ -14,7 +14,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/conn"
|
"github.com/bluenviron/gortsplib/v4/pkg/conn"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/headers"
|
"github.com/bluenviron/gortsplib/v4/pkg/headers"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/sdp"
|
"github.com/bluenviron/gortsplib/v4/pkg/sdp"
|
||||||
@@ -23,7 +23,7 @@ import (
|
|||||||
|
|
||||||
var testH264Media = &media.Media{
|
var testH264Media = &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.H264{
|
Formats: []format.Format{&format.H264{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
SPS: []byte{0x01, 0x02, 0x03, 0x04},
|
SPS: []byte{0x01, 0x02, 0x03, 0x04},
|
||||||
PPS: []byte{0x01, 0x02, 0x03, 0x04},
|
PPS: []byte{0x01, 0x02, 0x03, 0x04},
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
// create a media that contains a G711 format
|
// create a media that contains a G711 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.G711{}},
|
Formats: []format.Format{&format.G711{}},
|
||||||
}
|
}
|
||||||
|
|
||||||
c := gortsplib.Client{}
|
c := gortsplib.Client{}
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
// create a media that contains a G722 format
|
// create a media that contains a G722 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.G722{}},
|
Formats: []format.Format{&format.G722{}},
|
||||||
}
|
}
|
||||||
|
|
||||||
c := gortsplib.Client{}
|
c := gortsplib.Client{}
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -40,7 +40,7 @@ func main() {
|
|||||||
// create a media that contains a H264 format
|
// create a media that contains a H264 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.H264{
|
Formats: []format.Format{&format.H264{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
PacketizationMode: 1,
|
PacketizationMode: 1,
|
||||||
}},
|
}},
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -39,7 +39,7 @@ func main() {
|
|||||||
// create a media that contains a H265 format
|
// create a media that contains a H265 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.H265{
|
Formats: []format.Format{&format.H265{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
// create a media that contains a LPCM format
|
// create a media that contains a LPCM format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.LPCM{
|
Formats: []format.Format{&format.LPCM{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
BitDepth: 16,
|
BitDepth: 16,
|
||||||
SampleRate: 44100,
|
SampleRate: 44100,
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
// create a media that contains a M-JPEG format
|
// create a media that contains a M-JPEG format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.MJPEG{}},
|
Formats: []format.Format{&format.MJPEG{}},
|
||||||
}
|
}
|
||||||
|
|
||||||
// connect to the server and start recording the media
|
// connect to the server and start recording the media
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/mediacommon/pkg/codecs/mpeg4audio"
|
"github.com/bluenviron/mediacommon/pkg/codecs/mpeg4audio"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -39,7 +39,7 @@ func main() {
|
|||||||
// create a media that contains a MPEG4-audio format
|
// create a media that contains a MPEG4-audio format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.MPEG4Audio{
|
Formats: []format.Format{&format.MPEG4Audio{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
Config: &mpeg4audio.Config{
|
Config: &mpeg4audio.Config{
|
||||||
Type: mpeg4audio.ObjectTypeAACLC,
|
Type: mpeg4audio.ObjectTypeAACLC,
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
// create a media that contains a Opus format
|
// create a media that contains a Opus format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeAudio,
|
Type: media.TypeAudio,
|
||||||
Formats: []formats.Format{&formats.Opus{
|
Formats: []format.Format{&format.Opus{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
IsStereo: false,
|
IsStereo: false,
|
||||||
}},
|
}},
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -39,7 +39,7 @@ func main() {
|
|||||||
// create a media that contains a VP8 format
|
// create a media that contains a VP8 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.VP8{
|
Formats: []format.Format{&format.VP8{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -39,7 +39,7 @@ func main() {
|
|||||||
// create a media that contains a VP9 format
|
// create a media that contains a VP9 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.VP9{
|
Formats: []format.Format{&format.VP9{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -40,7 +40,7 @@ func main() {
|
|||||||
// create a media that contains a H264 media
|
// create a media that contains a H264 media
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.H264{
|
Formats: []format.Format{&format.H264{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
PacketizationMode: 1,
|
PacketizationMode: 1,
|
||||||
}},
|
}},
|
||||||
|
@@ -6,7 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -41,7 +41,7 @@ func main() {
|
|||||||
// create a media that contains a H264 format
|
// create a media that contains a H264 format
|
||||||
medi := &media.Media{
|
medi := &media.Media{
|
||||||
Type: media.TypeVideo,
|
Type: media.TypeVideo,
|
||||||
Formats: []formats.Format{&formats.H264{
|
Formats: []format.Format{&format.H264{
|
||||||
PayloadTyp: 96,
|
PayloadTyp: 96,
|
||||||
PacketizationMode: 1,
|
PacketizationMode: 1,
|
||||||
}},
|
}},
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -37,7 +37,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the G711 media and format
|
// find the G711 media and format
|
||||||
var forma *formats.G711
|
var forma *format.G711
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -37,7 +37,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the G722 media and format
|
// find the G722 media and format
|
||||||
var forma *formats.G722
|
var forma *format.G722
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -9,8 +9,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph264"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph264"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -64,7 +64,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the H264 media and format
|
// find the H264 media and format
|
||||||
var forma *formats.H264
|
var forma *format.H264
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,8 +4,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph264"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph264"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the H264 media and format
|
// find the H264 media and format
|
||||||
var forma *formats.H264
|
var forma *format.H264
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,8 +4,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph264"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph264"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -41,7 +41,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the H264 media and format
|
// find the H264 media and format
|
||||||
var forma *formats.H264
|
var forma *format.H264
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,8 +4,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph265"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph265"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the H265 media and format
|
// find the H265 media and format
|
||||||
var forma *formats.H265
|
var forma *format.H265
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -37,7 +37,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the LPCM media and format
|
// find the LPCM media and format
|
||||||
var forma *formats.LPCM
|
var forma *format.LPCM
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -6,8 +6,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpmjpeg"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpmjpeg"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -41,7 +41,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the M-JPEG media and format
|
// find the M-JPEG media and format
|
||||||
var forma *formats.MJPEG
|
var forma *format.MJPEG
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -37,7 +37,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the MPEG4-audio media and format
|
// find the MPEG4-audio media and format
|
||||||
var forma *formats.MPEG4Audio
|
var forma *format.MPEG4Audio
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -37,7 +37,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the MPEG4-audio media and format
|
// find the MPEG4-audio media and format
|
||||||
var forma *formats.MPEG4Audio
|
var forma *format.MPEG4Audio
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -37,7 +37,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the Opus media and format
|
// find the Opus media and format
|
||||||
var forma *formats.Opus
|
var forma *format.Opus
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,8 +4,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpvp8"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpvp8"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the VP8 media and format
|
// find the VP8 media and format
|
||||||
var forma *formats.VP8
|
var forma *format.VP8
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -4,8 +4,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpvp9"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpvp9"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the VP9 media and format
|
// find the VP9 media and format
|
||||||
var forma *formats.VP9
|
var forma *format.VP9
|
||||||
medi := medias.FindFormat(&forma)
|
medi := medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
panic("media not found")
|
panic("media not found")
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtcp"
|
"github.com/pion/rtcp"
|
||||||
@@ -53,7 +53,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// called when a RTP packet arrives
|
// called when a RTP packet arrives
|
||||||
c.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
c.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
log.Printf("RTP packet from media %v\n", medi)
|
log.Printf("RTP packet from media %v\n", medi)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtcp"
|
"github.com/pion/rtcp"
|
||||||
@@ -47,7 +47,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// called when a RTP packet arrives
|
// called when a RTP packet arrives
|
||||||
c.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
c.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
log.Printf("RTP packet from media %v\n", medi)
|
log.Printf("RTP packet from media %v\n", medi)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -54,7 +54,7 @@ func main() {
|
|||||||
defer publisher.Close()
|
defer publisher.Close()
|
||||||
|
|
||||||
// read RTP packets from the reader and route them to the publisher
|
// read RTP packets from the reader and route them to the publisher
|
||||||
reader.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
reader.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
publisher.WritePacketRTP(medi, pkt)
|
publisher.WritePacketRTP(medi, pkt)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtcp"
|
"github.com/pion/rtcp"
|
||||||
@@ -44,7 +44,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// called when a RTP packet arrives
|
// called when a RTP packet arrives
|
||||||
c.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
c.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
log.Printf("RTP packet from media %v\n", medi)
|
log.Printf("RTP packet from media %v\n", medi)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
"github.com/bluenviron/gortsplib/v4/pkg/url"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
@@ -74,7 +74,7 @@ func (c *client) read() error {
|
|||||||
log.Printf("stream is ready and can be read from the server at rtsp://localhost:8554/stream\n")
|
log.Printf("stream is ready and can be read from the server at rtsp://localhost:8554/stream\n")
|
||||||
|
|
||||||
// called when a RTP packet arrives
|
// called when a RTP packet arrives
|
||||||
rc.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
rc.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
// route incoming packets to the server stream
|
// route incoming packets to the server stream
|
||||||
stream.WritePacketRTP(medi, pkt)
|
stream.WritePacketRTP(medi, pkt)
|
||||||
})
|
})
|
||||||
|
@@ -9,8 +9,8 @@ import (
|
|||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph264"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph264"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ type serverHandler struct {
|
|||||||
mutex sync.Mutex
|
mutex sync.Mutex
|
||||||
publisher *gortsplib.ServerSession
|
publisher *gortsplib.ServerSession
|
||||||
media *media.Media
|
media *media.Media
|
||||||
format *formats.H264
|
format *format.H264
|
||||||
rtpDec *rtph264.Decoder
|
rtpDec *rtph264.Decoder
|
||||||
mpegtsMuxer *mpegtsMuxer
|
mpegtsMuxer *mpegtsMuxer
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@ func (sh *serverHandler) OnAnnounce(ctx *gortsplib.ServerHandlerOnAnnounceCtx) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find the H264 media and format
|
// find the H264 media and format
|
||||||
var forma *formats.H264
|
var forma *format.H264
|
||||||
medi := ctx.Medias.FindFormat(&forma)
|
medi := ctx.Medias.FindFormat(&forma)
|
||||||
if medi == nil {
|
if medi == nil {
|
||||||
return &base.Response{
|
return &base.Response{
|
||||||
|
@@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ func (sh *serverHandler) OnRecord(ctx *gortsplib.ServerHandlerOnRecordCtx) (*bas
|
|||||||
log.Printf("record request")
|
log.Printf("record request")
|
||||||
|
|
||||||
// called when receiving a RTP packet
|
// called when receiving a RTP packet
|
||||||
ctx.Session.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
ctx.Session.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
// route the RTP packet to all readers
|
// route the RTP packet to all readers
|
||||||
sh.stream.WritePacketRTP(medi, pkt)
|
sh.stream.WritePacketRTP(medi, pkt)
|
||||||
})
|
})
|
||||||
|
@@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ func (sh *serverHandler) OnRecord(ctx *gortsplib.ServerHandlerOnRecordCtx) (*bas
|
|||||||
log.Printf("record request")
|
log.Printf("record request")
|
||||||
|
|
||||||
// called when receiving a RTP packet
|
// called when receiving a RTP packet
|
||||||
ctx.Session.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
ctx.Session.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
// route the RTP packet to all readers
|
// route the RTP packet to all readers
|
||||||
sh.stream.WritePacketRTP(medi, pkt)
|
sh.stream.WritePacketRTP(medi, pkt)
|
||||||
})
|
})
|
||||||
|
@@ -19,7 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4"
|
"github.com/bluenviron/gortsplib/v4"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
"github.com/bluenviron/gortsplib/v4/pkg/base"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats"
|
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
"github.com/bluenviron/gortsplib/v4/pkg/media"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@ func TestServerRecordRead(t *testing.T) {
|
|||||||
}, fmt.Errorf("invalid query (%s)", ctx.Query)
|
}, fmt.Errorf("invalid query (%s)", ctx.Query)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Session.OnPacketRTPAny(func(medi *media.Media, forma formats.Format, pkt *rtp.Packet) {
|
ctx.Session.OnPacketRTPAny(func(medi *media.Media, forma format.Format, pkt *rtp.Packet) {
|
||||||
stream.WritePacketRTP(medi, pkt)
|
stream.WritePacketRTP(medi, pkt)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
package formats //nolint:dupl
|
package format //nolint:dupl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpav1"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpav1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AV1 is a RTP format for the AV1 codec.
|
// AV1 is a RTP format for the AV1 codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats //nolint:dupl
|
package format //nolint:dupl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,5 +1,5 @@
|
|||||||
// Package formats contains RTP format definitions, decoders and encoders.
|
// Package format contains RTP format definitions, decoders and encoders.
|
||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,9 +1,9 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpsimpleaudio"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpsimpleaudio"
|
||||||
)
|
)
|
||||||
|
|
||||||
// G711 is a RTP format for the G711 codec, encoded with mu-law or A-law.
|
// G711 is a RTP format for the G711 codec, encoded with mu-law or A-law.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,9 +1,9 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpsimpleaudio"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpsimpleaudio"
|
||||||
)
|
)
|
||||||
|
|
||||||
// G722 is a RTP format for the G722 codec.
|
// G722 is a RTP format for the G722 codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strconv"
|
"strconv"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph264"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph264"
|
||||||
"github.com/bluenviron/mediacommon/pkg/codecs/h264"
|
"github.com/bluenviron/mediacommon/pkg/codecs/h264"
|
||||||
)
|
)
|
||||||
|
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"github.com/bluenviron/mediacommon/pkg/codecs/h265"
|
"github.com/bluenviron/mediacommon/pkg/codecs/h265"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtph265"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtph265"
|
||||||
)
|
)
|
||||||
|
|
||||||
// H265 is a RTP format for the H265 codec.
|
// H265 is a RTP format for the H265 codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtplpcm"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtplpcm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// LPCM is a RTP format for the uncompressed, Linear PCM codec.
|
// LPCM is a RTP format for the uncompressed, Linear PCM codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,9 +1,9 @@
|
|||||||
package formats //nolint:dupl
|
package format //nolint:dupl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpmjpeg"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpmjpeg"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MJPEG is a RTP format for the Motion-JPEG codec.
|
// MJPEG is a RTP format for the Motion-JPEG codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,9 +1,9 @@
|
|||||||
package formats //nolint:dupl
|
package format //nolint:dupl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpmpeg1audio"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpmpeg1audio"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MPEG1Audio is a RTP format for a MPEG-1/2 Audio codec.
|
// MPEG1Audio is a RTP format for a MPEG-1/2 Audio codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats //nolint:dupl
|
package format //nolint:dupl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"github.com/bluenviron/mediacommon/pkg/codecs/mpeg4audio"
|
"github.com/bluenviron/mediacommon/pkg/codecs/mpeg4audio"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpmpeg4audio"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpmpeg4audio"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MPEG4Audio is an alias for MPEG4AudioGeneric.
|
// MPEG4Audio is an alias for MPEG4AudioGeneric.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/bluenviron/mediacommon/pkg/codecs/mpeg4audio"
|
"github.com/bluenviron/mediacommon/pkg/codecs/mpeg4audio"
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpmpeg4audiolatm"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpmpeg4audiolatm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MPEG4AudioLATM is a RTP format for a MPEG-4 Audio codec.
|
// MPEG4AudioLATM is a RTP format for a MPEG-4 Audio codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpmpeg4video"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpmpeg4video"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MPEG4Video is an alias for MPEG4VideoES.
|
// MPEG4Video is an alias for MPEG4VideoES.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
3
pkg/format/mpeg4_video_generic.go
Normal file
3
pkg/format/mpeg4_video_generic.go
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
package format
|
||||||
|
|
||||||
|
// TODO
|
3
pkg/format/mpeg4_video_generic_test.go
Normal file
3
pkg/format/mpeg4_video_generic_test.go
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
package format
|
||||||
|
|
||||||
|
// TODO
|
@@ -1,4 +1,4 @@
|
|||||||
package formats //nolint:dupl
|
package format //nolint:dupl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
|
|
||||||
"github.com/bluenviron/gortsplib/v4/pkg/formats/rtpsimpleaudio"
|
"github.com/bluenviron/gortsplib/v4/pkg/format/rtpsimpleaudio"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Opus is a RTP format for the Opus codec.
|
// Opus is a RTP format for the Opus codec.
|
@@ -1,4 +1,4 @@
|
|||||||
package formats
|
package format
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user