nareix / joy4

Golang audio/video library and streaming server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wsasend: An existing connection was forcibly closed by the remote host.

bodrich opened this issue · comments


import (
	"fmt"
	"github.com/nareix/joy4/av"
	"github.com/nareix/joy4/av/avutil"
	"github.com/nareix/joy4/av/pktque"
	"github.com/nareix/joy4/format"
	"github.com/nareix/joy4/format/rtmp"
	"io"
)

func init() {
	format.RegisterAll()
}

func CopyPackets(dst av.PacketWriter, src av.PacketReader) (err error) {
	for {
		var pkt av.Packet
		if pkt, err = src.ReadPacket(); err != nil {
			if err == io.EOF {
				break
			}
			return
		}

		if err = dst.WritePacket(pkt); err != nil {
			return
		}
	}
	return
}

func CopyFile(dst av.Muxer, src av.Demuxer) (err error) {
	var streams []av.CodecData
	if streams, err = src.Streams(); err != nil {
		return
	}
	if err = dst.WriteHeader(streams); err != nil {
		return
	}
	if err = CopyPackets(dst, src); err != nil {
		if err != io.EOF {
			return
		}
	}
	if err = dst.WriteTrailer(); err != nil {
		return
	}
	return
}

func main() {
	file, err := avutil.Open("csgo.mp4")

	if err != nil {
		fmt.Println(err)
	}

	demuxer := &pktque.FilterDemuxer{Demuxer: file, Filter: &pktque.Walltime{}}

	var streams []av.CodecData
	if streams, err = demuxer.Streams(); err != nil {
		return
	}
	rtmp.Debug = true
	for {
		conn, err := rtmp.Dial("rtmp://a.rtmp.youtube.com/live2/key")

		if err != nil {
			fmt.Println(err)
			continue
		}
		// conn, _ := avutil.Create("rtmp://localhost:1936/app/publish")
		fmt.Println(conn.NetConn())

		if err = conn.WriteHeader(streams); err != nil {
			panic(err)
		}

		for {
			var pkt av.Packet
			if pkt, err = demuxer.ReadPacket(); err != nil {
				if err == io.EOF {
					break
				}
				break
			}

			if err = conn.WritePacket(pkt); err != nil {
				panic(err)
				break
			}
		}

		if err != nil {
			fmt.Println(err)
			continue
		}

		file.Close()
		conn.Close()
	}
}```

I get the error on line 'if err = conn.WritePacket(pkt); err != nil {'