From 075f84de28614503dceb68d25a4d1b884594fdfd Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Fri, 12 Nov 2021 17:50:34 +0100 Subject: [PATCH] simplify examples --- .../client-read-h264-save-to-disk/main.go | 67 +++++++++---------- examples/client-read-h264/main.go | 60 ++++++++--------- 2 files changed, 63 insertions(+), 64 deletions(-) diff --git a/examples/client-read-h264-save-to-disk/main.go b/examples/client-read-h264-save-to-disk/main.go index da6233f3..6390c30f 100644 --- a/examples/client-read-h264-save-to-disk/main.go +++ b/examples/client-read-h264-save-to-disk/main.go @@ -13,37 +13,7 @@ import ( // 3. save the content of the H264 track to a file in MPEG-TS format func main() { - dec := rtph264.NewDecoder() - var h264Track int - var enc *mpegtsEncoder - - c := gortsplib.Client{ - // called when a RTP packet arrives - OnPacketRTP: func(trackID int, payload []byte) { - if trackID != h264Track { - return - } - - // parse RTP packet - var pkt rtp.Packet - err := pkt.Unmarshal(payload) - if err != nil { - return - } - - // decode H264 NALUs from RTP packets - nalus, pts, err := dec.DecodeUntilMarker(&pkt) - if err != nil { - return - } - - // encode H264 NALUs into MPEG-TS - err = enc.encode(nalus, pts) - if err != nil { - return - } - }, - } + c := gortsplib.Client{} // parse URL u, err := base.ParseURL("rtsp://localhost:8554/mystream") @@ -70,7 +40,7 @@ func main() { } // find the H264 track - h264Track = func() int { + h264Track := func() int { for i, track := range tracks { if track.IsH264() { return i @@ -88,12 +58,41 @@ func main() { panic(err) } - // setup the encoder - enc, err = newMPEGTSEncoder(h264Conf) + // setup decoder + dec := rtph264.NewDecoder() + + // setup encoder + enc, err := newMPEGTSEncoder(h264Conf) if err != nil { panic(err) } + // called when a RTP packet arrives + c.OnPacketRTP = func(trackID int, payload []byte) { + if trackID != h264Track { + return + } + + // parse RTP packet + var pkt rtp.Packet + err := pkt.Unmarshal(payload) + if err != nil { + return + } + + // decode H264 NALUs from RTP packets + nalus, pts, err := dec.DecodeUntilMarker(&pkt) + if err != nil { + return + } + + // encode H264 NALUs into MPEG-TS + err = enc.encode(nalus, pts) + if err != nil { + return + } + } + // setup all tracks for _, t := range tracks { _, err := c.Setup(true, baseURL, t, 0, 0) diff --git a/examples/client-read-h264/main.go b/examples/client-read-h264/main.go index 64fd827a..b206ef6c 100644 --- a/examples/client-read-h264/main.go +++ b/examples/client-read-h264/main.go @@ -15,35 +15,7 @@ import ( // 3. get H264 NALUs of that track func main() { - var h264Track int - dec := rtph264.NewDecoder() - - c := gortsplib.Client{ - // called when a RTP packet arrives - OnPacketRTP: func(trackID int, payload []byte) { - if trackID != h264Track { - return - } - - // parse RTP packet - var pkt rtp.Packet - err := pkt.Unmarshal(payload) - if err != nil { - return - } - - // decode H264 NALUs from RTP packets - nalus, _, err := dec.Decode(&pkt) - if err != nil { - return - } - - // print NALUs - for _, nalu := range nalus { - fmt.Printf("received H264 NALU of size %d\n", len(nalu)) - } - }, - } + c := gortsplib.Client{} // parse URL u, err := base.ParseURL("rtsp://localhost:8554/mystream") @@ -70,7 +42,7 @@ func main() { } // find the H264 track - h264Track = func() int { + h264Track := func() int { for i, track := range tracks { if track.IsH264() { return i @@ -82,6 +54,34 @@ func main() { panic("H264 track not found") } + // setup decoder + dec := rtph264.NewDecoder() + + // called when a RTP packet arrives + c.OnPacketRTP = func(trackID int, payload []byte) { + if trackID != h264Track { + return + } + + // parse RTP packet + var pkt rtp.Packet + err := pkt.Unmarshal(payload) + if err != nil { + return + } + + // decode H264 NALUs from RTP packets + nalus, _, err := dec.Decode(&pkt) + if err != nil { + return + } + + // print NALUs + for _, nalu := range nalus { + fmt.Printf("received H264 NALU of size %d\n", len(nalu)) + } + } + // setup all tracks for _, t := range tracks { _, err := c.Setup(true, baseURL, t, 0, 0)