Add stale RTMP connection creator
This commit is contained in:
parent
9c6cb8a1c9
commit
bd2982e917
1
examples/rtmp_stale/.gitignore
vendored
Normal file
1
examples/rtmp_stale/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
rtmp_stale
|
64
examples/rtmp_stale/main.go
Normal file
64
examples/rtmp_stale/main.go
Normal 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()
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user