调整格式

This commit is contained in:
langhuihui
2020-04-21 19:49:07 +08:00
parent ef25e47303
commit 6d807c3836
3 changed files with 12 additions and 16 deletions

View File

@@ -8,8 +8,7 @@ import (
)
var config = new(struct {
ListenAddr string
FirstScreen bool
ListenAddr string
})
func init() {

View File

@@ -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)
}

View File

@@ -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
}}