From bd2982e917248f9033c2e09248ffd80ed1580db9 Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Mon, 3 Jun 2024 21:07:16 +0200 Subject: [PATCH] Add stale RTMP connection creator --- examples/rtmp_stale/.gitignore | 1 + examples/rtmp_stale/main.go | 64 ++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 examples/rtmp_stale/.gitignore create mode 100644 examples/rtmp_stale/main.go diff --git a/examples/rtmp_stale/.gitignore b/examples/rtmp_stale/.gitignore new file mode 100644 index 0000000..37a3b9f --- /dev/null +++ b/examples/rtmp_stale/.gitignore @@ -0,0 +1 @@ +rtmp_stale \ No newline at end of file diff --git a/examples/rtmp_stale/main.go b/examples/rtmp_stale/main.go new file mode 100644 index 0000000..c93dbf2 --- /dev/null +++ b/examples/rtmp_stale/main.go @@ -0,0 +1,64 @@ +package main + +import ( + "fmt" + "io" + + "github.com/datarhei/joy4/av" + "github.com/datarhei/joy4/format/rtmp" +) + +func main() { + server := &rtmp.Server{ + Addr: ":3035", + } + + server.HandlePublish = func(src *rtmp.Conn) { + defer src.Close() + + url := fmt.Sprintf("rtmp://127.0.0.1:2035%s", src.URL.Path) + dst, err := rtmp.Dial(url, rtmp.DialOptions{}) + if err != nil { + return + } + + defer dst.Close() + + streams, err := src.Streams() + if err != nil { + return + } + + err = dst.WriteHeader(streams) + if err != nil { + return + } + + npackets := uint64(0) + for { + var pkt av.Packet + + if pkt, err = src.ReadPacket(); err != nil { + if err == io.EOF { + break + } + return + } + + npackets++ + + if npackets < 100 { + if err = dst.WritePacket(pkt); err != nil { + return + } + } + } + + err = dst.WriteTrailer() + if err != nil { + return + } + } + + server.ListenAndServe() +}