mirror of
https://github.com/Monibuca/plugin-rtmp.git
synced 2025-10-04 23:23:34 +08:00
调整格式
This commit is contained in:
3
main.go
3
main.go
@@ -8,8 +8,7 @@ import (
|
||||
)
|
||||
|
||||
var config = new(struct {
|
||||
ListenAddr string
|
||||
FirstScreen bool
|
||||
ListenAddr string
|
||||
})
|
||||
|
||||
func init() {
|
||||
|
@@ -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)
|
||||
|
||||
}
|
||||
|
||||
|
17
netStream.go
17
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
|
||||
}}
|
||||
|
Reference in New Issue
Block a user