mirror of
https://github.com/Monibuca/plugin-rtmp.git
synced 2026-04-22 22:57:04 +08:00
修正时间戳
This commit is contained in:
@@ -3,8 +3,7 @@ module github.com/Monibuca/plugin-rtmp/v3
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha7
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha11
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha5
|
||||
github.com/logrusorgru/aurora v2.0.3+incompatible
|
||||
github.com/pion/rtp v1.6.2 // indirect
|
||||
)
|
||||
|
||||
@@ -1,21 +1,7 @@
|
||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha2 h1:11rWc6Qnp3kuVwGh8XDXqRivUSWMyv+Au6wZDgNHPSc=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha2/go.mod h1:K5FB3wk+iS/nPc+NS4XwObYQV4gtF6klEwDxaVM0BsQ=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha3 h1:NtFBMsu1nvEA09q64sW9xNzLdQ9RCKQXJlESM3GmGxU=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha3/go.mod h1:K5FB3wk+iS/nPc+NS4XwObYQV4gtF6klEwDxaVM0BsQ=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha4 h1:kAStDd1p9tlSQeNyAAmb7vrPL2UCz7LFTzw5LdbGxBI=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha4/go.mod h1:V0/kfen6K5O/RLXHPsZj4DF/LboDZ0OqfeCfn35bWMo=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha5 h1:sXLg39SBkeiVkGcbcinXuRrYyClJvMVirxA5axiUD7s=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha5/go.mod h1:V0/kfen6K5O/RLXHPsZj4DF/LboDZ0OqfeCfn35bWMo=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha6 h1:USZa+JDVJd13rb9wmX06ZxjRCrqYTAPe5wVD+0IODEE=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha6/go.mod h1:V0/kfen6K5O/RLXHPsZj4DF/LboDZ0OqfeCfn35bWMo=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha7 h1:ohlsdFQCUS8i6eux+etFxLKo/IyQUgqlsNAgTIR9mDQ=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha7/go.mod h1:eonu3UFn3W7NpHzSrACipxdAyOBCUwzlFUe1R7JjttE=
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha3 h1:n4Sq7mS1Iz8oBj2BcV4sXgKbZgix0fFLvjAfXYoiXl0=
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha3/go.mod h1:3xYmhQbgAZBHLyIMteUCd1va+1z/xnd72B585mCaT3c=
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha4 h1:pecYA89kWmtGOeY6R99d4T1epPJ1wc+jFrrJY13VD04=
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha4/go.mod h1:3xYmhQbgAZBHLyIMteUCd1va+1z/xnd72B585mCaT3c=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha11 h1:Z/ViugwmK+ECBK5MS9bUltrUU1UlcDjFTuJh4nxouK0=
|
||||
github.com/Monibuca/engine/v3 v3.0.0-alpha11/go.mod h1:eonu3UFn3W7NpHzSrACipxdAyOBCUwzlFUe1R7JjttE=
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha5 h1:IOyW/KJSRdRg+TPcgwkHLBynqfNQOV6p3iP7LgXEMFc=
|
||||
github.com/Monibuca/utils/v3 v3.0.0-alpha5/go.mod h1:3xYmhQbgAZBHLyIMteUCd1va+1z/xnd72B585mCaT3c=
|
||||
github.com/funny/slab v0.0.0-20180511031532-b1fad5e5d478 h1:Db9StoJ6RZN3YttC0Pm0I4Y5izITRYch3RMbT59BYN0=
|
||||
|
||||
+21
-16
@@ -141,7 +141,6 @@ func processRtmp(conn net.Conn) {
|
||||
vt.CodecID = codecId
|
||||
vt.RtmpTag = msg.Body
|
||||
var info codec.AVCDecoderConfigurationRecord
|
||||
|
||||
//0:codec,1:IsAVCSequence,2~4:compositionTime
|
||||
if _, err := info.Unmarshal(msg.Body[5:]); err == nil {
|
||||
var pack engine.VideoPack
|
||||
@@ -220,32 +219,38 @@ func processRtmp(conn net.Conn) {
|
||||
err = nc.SendMessage(SEND_PLAY_RESPONSE_MESSAGE, newPlayResponseMessageData(nc.streamID, NetStream_Play_Start, Level_Status))
|
||||
vt, at := subscriber.OriginVideoTrack, subscriber.OriginAudioTrack
|
||||
var lastTimeStamp uint32
|
||||
getDeltaTime := func(ts uint32) (t uint32) {
|
||||
t = ts - lastTimeStamp
|
||||
lastTimeStamp = ts
|
||||
return
|
||||
}
|
||||
if vt != nil {
|
||||
err = nc.SendMessage(SEND_FULL_VDIEO_MESSAGE, &AVPack{Payload: vt.RtmpTag})
|
||||
subscriber.OnVideo = func(pack engine.VideoPack) {
|
||||
if lastTimeStamp == 0 {
|
||||
lastTimeStamp = pack.Timestamp
|
||||
}
|
||||
t := pack.Timestamp - lastTimeStamp
|
||||
lastTimeStamp = pack.Timestamp
|
||||
payload := pack.ToRTMPTag()
|
||||
defer utils.RecycleSlice(payload)
|
||||
err = nc.SendMessage(SEND_VIDEO_MESSAGE, &AVPack{Timestamp: t, Payload: payload})
|
||||
lastTimeStamp = pack.Timestamp
|
||||
err = nc.SendMessage(SEND_FULL_VDIEO_MESSAGE, &AVPack{Timestamp: 0, Payload: payload})
|
||||
subscriber.OnVideo = func(pack engine.VideoPack) {
|
||||
payload := pack.ToRTMPTag()
|
||||
defer utils.RecycleSlice(payload)
|
||||
err = nc.SendMessage(SEND_VIDEO_MESSAGE, &AVPack{Timestamp: getDeltaTime(pack.Timestamp), Payload: payload})
|
||||
}
|
||||
}
|
||||
}
|
||||
if at != nil {
|
||||
if at.SoundFormat == 10 {
|
||||
err = nc.SendMessage(SEND_FULL_AUDIO_MESSAGE, &AVPack{Payload: at.RtmpTag})
|
||||
}
|
||||
subscriber.OnAudio = func(pack engine.AudioPack) {
|
||||
if lastTimeStamp == 0 {
|
||||
lastTimeStamp = pack.Timestamp
|
||||
}
|
||||
t := pack.Timestamp - lastTimeStamp
|
||||
lastTimeStamp = pack.Timestamp
|
||||
payload := pack.ToRTMPTag(at.RtmpTag[0])
|
||||
defer utils.RecycleSlice(payload)
|
||||
err = nc.SendMessage(SEND_AUDIO_MESSAGE, &AVPack{Timestamp: t, Payload: payload})
|
||||
if at.SoundFormat == 10 {
|
||||
err = nc.SendMessage(SEND_FULL_AUDIO_MESSAGE, &AVPack{Payload: at.RtmpTag})
|
||||
}
|
||||
subscriber.OnAudio = func(pack engine.AudioPack) {
|
||||
payload := pack.ToRTMPTag(at.RtmpTag[0])
|
||||
defer utils.RecycleSlice(payload)
|
||||
err = nc.SendMessage(SEND_AUDIO_MESSAGE, &AVPack{Timestamp: getDeltaTime(pack.Timestamp), Payload: payload})
|
||||
}
|
||||
subscriber.OnAudio(pack)
|
||||
}
|
||||
}
|
||||
go subscriber.Play(at, vt)
|
||||
|
||||
Reference in New Issue
Block a user