2024-06-03 21:07:16 +02:00

65 lines
898 B
Go

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