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