Add stale RTMP connection creator

This commit is contained in:
Ingo Oppermann 2024-06-03 21:07:16 +02:00
parent 9c6cb8a1c9
commit bd2982e917
2 changed files with 65 additions and 0 deletions

1
examples/rtmp_stale/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
rtmp_stale

View File

@ -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()
}