diff --git a/main.go b/main.go index f0b2c2a..52c8dc6 100644 --- a/main.go +++ b/main.go @@ -8,8 +8,7 @@ import ( ) var config = new(struct { - ListenAddr string - FirstScreen bool + ListenAddr string }) func init() { diff --git a/netConnection.go b/netConnection.go index 98f3f4b..9d58ab6 100644 --- a/netConnection.go +++ b/netConnection.go @@ -371,18 +371,18 @@ func (conn *NetConnection) sendAVMessage(av *avformat.SendPacket, isAudio bool, var need []byte var head *ChunkHeader if isAudio { - head = newRtmpHeader(RTMP_CSID_AUDIO, av.Timestamp, uint32(len(av.Packet.Payload)), RTMP_MSG_AUDIO, conn.streamID, 0) + head = newRtmpHeader(RTMP_CSID_AUDIO, av.Timestamp, uint32(len(av.Payload)), RTMP_MSG_AUDIO, conn.streamID, 0) } else { - head = newRtmpHeader(RTMP_CSID_VIDEO, av.Timestamp, uint32(len(av.Packet.Payload)), RTMP_MSG_VIDEO, conn.streamID, 0) + head = newRtmpHeader(RTMP_CSID_VIDEO, av.Timestamp, uint32(len(av.Payload)), RTMP_MSG_VIDEO, conn.streamID, 0) } // 第一次是发送关键帧,需要完整的消息头(Chunk Basic Header(1) + Chunk Message Header(11) + Extended Timestamp(4)(可能会要包括)) // 后面开始,就是直接发送音视频数据,那么直接发送,不需要完整的块(Chunk Basic Header(1) + Chunk Message Header(7)) // 当Chunk Type为0时(即Chunk12), if isFirst { - mark, need, err = encodeChunk12(head, av.Packet.Payload, conn.writeChunkSize) + mark, need, err = encodeChunk12(head, av.Payload, conn.writeChunkSize) } else { - mark, need, err = encodeChunk8(head, av.Packet.Payload, conn.writeChunkSize) + mark, need, err = encodeChunk8(head, av.Payload, conn.writeChunkSize) } diff --git a/netStream.go b/netStream.go index a432d88..8f1fa28 100644 --- a/netStream.go +++ b/netStream.go @@ -107,9 +107,6 @@ func processRtmp(conn net.Conn) { streamPath := nc.appName + "/" + strings.Split(pm.PublishingName, "?")[0] pub := new(RTMP) if pub.Publish(streamPath, pub) { - // if config.FirstScreen { - // pub.FirstScreen = make([]*avformat.AVPacket, 0) - // } room = pub.Room err = nc.SendMessage(SEND_STREAM_BEGIN_MESSAGE, nil) err = nc.SendMessage(SEND_PUBLISH_START_MESSAGE, newPublishResponseMessageData(nc.streamID, NetStream_Publish_Start, Level_Status)) @@ -123,7 +120,7 @@ func processRtmp(conn net.Conn) { var lastAudioTime uint32 = 0 var lastVideoTime uint32 = 0 // followAVCSequence := false - stream := &OutputStream{SendHandler: func(timestamp uint32, packet *avformat.AVPacket) (err error) { + stream := &OutputStream{SendHandler: func(packet *avformat.SendPacket) (err error) { switch true { // case packet.IsADTS: // tagPacket := avformat.NewAVPacket(RTMP_MSG_AUDIO) @@ -140,7 +137,7 @@ func processRtmp(conn net.Conn) { // err = nc.SendMessage(SEND_AUDIO_MESSAGE, contentPacket) // } case packet.IsAVCSequence: - err = nc.SendMessage(SEND_FULL_VDIEO_MESSAGE, avformat.NewSendPacket(packet, timestamp)) + err = nc.SendMessage(SEND_FULL_VDIEO_MESSAGE, packet) // followAVCSequence = true case packet.Type == RTMP_MSG_VIDEO: // if followAVCSequence { @@ -150,15 +147,15 @@ func processRtmp(conn net.Conn) { // } t := packet.Timestamp - lastVideoTime lastVideoTime = packet.Timestamp - //packet.Timestamp = t - err = nc.SendMessage(SEND_VIDEO_MESSAGE, avformat.NewSendPacket(packet, t)) + packet.Timestamp = t + err = nc.SendMessage(SEND_VIDEO_MESSAGE, packet) case packet.IsAACSequence: - err = nc.SendMessage(SEND_FULL_AUDIO_MESSAGE, avformat.NewSendPacket(packet, timestamp)) + err = nc.SendMessage(SEND_FULL_AUDIO_MESSAGE, packet) case packet.Type == RTMP_MSG_AUDIO: t := packet.Timestamp - lastAudioTime lastAudioTime = packet.Timestamp - //packet.Timestamp = t - err = nc.SendMessage(SEND_AUDIO_MESSAGE, avformat.NewSendPacket(packet, t)) + packet.Timestamp = t + err = nc.SendMessage(SEND_AUDIO_MESSAGE, packet) } return }}