This commit is contained in:
zhangpeihao
2016-11-14 10:49:53 +08:00
parent c6d81e9dcd
commit 63488153f9

View File

@@ -17,9 +17,9 @@ const (
)
var (
url *string = flag.String("URL", "rtmp://192.168.20.111/vid3", "The rtmp url to connect.")
url *string = flag.String("URL", "rtmp://video-center.alivecdn.com/AppName/StreamName?vhost=live.gz-app.com", "The rtmp url to connect.")
streamName *string = flag.String("Stream", "camstream", "Stream name to play.")
flvFileName *string = flag.String("FLV", "", "FLV file to publishs.")
flvFileName *string = flag.String("FLV", "./v_4097.flv", "FLV file to publishs.")
)
type TestOutboundConnHandler struct {
@@ -35,6 +35,9 @@ var status uint
func (handler *TestOutboundConnHandler) OnStatus(conn rtmp.OutboundConn) {
var err error
if obConn == nil {
return
}
status, err = obConn.Status()
fmt.Printf("@@@@@@@@@@@@@status: %d, err: %v\n", status, err)
}
@@ -63,17 +66,19 @@ func (handler *TestOutboundConnHandler) OnPublishStart(stream rtmp.OutboundStrea
}
func publish(stream rtmp.OutboundStream) {
fmt.Println("1")
var err error
flvFile, err = flv.OpenFile(*flvFileName)
if err != nil {
fmt.Println("Open FLV dump file error:", err)
return
}
fmt.Println("2")
defer flvFile.Close()
startTs := uint32(0)
startAt := time.Now().UnixNano()
preTs := uint32(0)
fmt.Println("3")
for status == rtmp.OUTBOUND_CONN_STATUS_CREATE_STREAM_OK {
if flvFile.IsFinished() {
fmt.Println("@@@@@@@@@@@@@@File finished")
@@ -102,12 +107,13 @@ func publish(stream rtmp.OutboundStream) {
if header.Timestamp > startTs {
diff1 = header.Timestamp - startTs
} else {
fmt.Println("@@@@@@@@@@@@@@diff1")
fmt.Printf("@@@@@@@@@@@@@@diff1 header(%+v), startTs: %d\n", header, startTs)
}
if diff1 > preTs {
// deltaTs = diff1 - preTs
preTs = diff1
}
fmt.Printf("@@@@@@@@@@@@@@diff1 header(%+v), startTs: %d\n", header, startTs)
if err = stream.PublishData(header.TagType, data, diff1); err != nil {
fmt.Println("PublishData() error:", err)
break
@@ -134,12 +140,14 @@ func main() {
createStreamChan = make(chan rtmp.OutboundStream)
testHandler := &TestOutboundConnHandler{}
fmt.Println("to dial")
fmt.Println("a")
var err error
obConn, err = rtmp.Dial(*url, testHandler, 100)
if err != nil {
fmt.Println("Dial error", err)
os.Exit(-1)
}
fmt.Println("b")
defer obConn.Close()
fmt.Println("to connect")
err = obConn.Connect()
@@ -147,6 +155,7 @@ func main() {
fmt.Printf("Connect error: %s", err.Error())
os.Exit(-1)
}
fmt.Println("c")
for {
select {
case stream := <-createStreamChan: