mirror of
https://github.com/Monibuca/engine.git
synced 2025-10-06 00:56:58 +08:00
修复h265
This commit is contained in:
16
plugin.go
16
plugin.go
@@ -244,7 +244,13 @@ func (opt *Plugin) Pull(streamPath string, url string, puller IPuller, save bool
|
|||||||
var NoPushConfigErr = errors.New("no push config")
|
var NoPushConfigErr = errors.New("no push config")
|
||||||
|
|
||||||
func (opt *Plugin) Push(streamPath string, url string, pusher IPusher, save bool) (err error) {
|
func (opt *Plugin) Push(streamPath string, url string, pusher IPusher, save bool) (err error) {
|
||||||
opt.Info("push", zap.String("path", streamPath), zap.String("url", url))
|
zp, zu := zap.String("path", streamPath), zap.String("url", url)
|
||||||
|
opt.Info("push", zp, zu)
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
opt.Error("push faild", zap.Error(err))
|
||||||
|
}
|
||||||
|
}()
|
||||||
conf, ok := opt.Config.(config.PushConfig)
|
conf, ok := opt.Config.(config.PushConfig)
|
||||||
if !ok {
|
if !ok {
|
||||||
return NoPushConfigErr
|
return NoPushConfigErr
|
||||||
@@ -262,9 +268,13 @@ func (opt *Plugin) Push(streamPath string, url string, pusher IPusher, save bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
defer opt.Info("stop push", zap.String("remoteURL", url))
|
defer opt.Info("push finished", zp, zu)
|
||||||
for pusher.Reconnect() {
|
for pusher.Reconnect() {
|
||||||
if pusher.Push(); !pusher.IsClosed() {
|
opt.Info("start push", zp, zu)
|
||||||
|
if err = pusher.Push(); !pusher.IsClosed() {
|
||||||
|
if err != nil {
|
||||||
|
opt.Info("stop push", zp, zu, zap.Error(err))
|
||||||
|
}
|
||||||
if err = pusher.Connect(); err != nil {
|
if err = pusher.Connect(); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@@ -329,7 +329,7 @@ func (s *Subscriber) sendAudioDecConf() {
|
|||||||
|
|
||||||
type IPusher interface {
|
type IPusher interface {
|
||||||
ISubscriber
|
ISubscriber
|
||||||
Push()
|
Push() error
|
||||||
Connect() error
|
Connect() error
|
||||||
init(string, string, *config.Push)
|
init(string, string, *config.Push)
|
||||||
Reconnect() bool
|
Reconnect() bool
|
||||||
|
@@ -65,7 +65,7 @@ func (vt *H265) WriteSlice(slice NALUSlice) {
|
|||||||
codec.NAL_UNIT_CODED_SLICE_CRA:
|
codec.NAL_UNIT_CODED_SLICE_CRA:
|
||||||
vt.Video.Media.RingBuffer.Value.IFrame = true
|
vt.Video.Media.RingBuffer.Value.IFrame = true
|
||||||
fallthrough
|
fallthrough
|
||||||
case 0, 1, 2, 3, 4, 5, 6, 7, 9, codec.NAL_UNIT_SEI:
|
case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, codec.NAL_UNIT_SEI:
|
||||||
vt.Video.Media.WriteSlice(slice)
|
vt.Video.Media.WriteSlice(slice)
|
||||||
default:
|
default:
|
||||||
vt.Video.Stream.Warn("h265 slice type not supported", zap.Uint("type", uint(slice.H265Type())))
|
vt.Video.Stream.Warn("h265 slice type not supported", zap.Uint("type", uint(slice.H265Type())))
|
||||||
@@ -177,7 +177,7 @@ func (vt *H265) Flush() {
|
|||||||
}
|
}
|
||||||
out = append(out, buf)
|
out = append(out, buf)
|
||||||
for _, bufs := range buffers[1:] {
|
for _, bufs := range buffers[1:] {
|
||||||
buf := []byte{firstByte, firstBuffer[0][1], byte(naluType) >> 1}
|
buf := []byte{firstByte, firstBuffer[0][1], byte(naluType)}
|
||||||
for _, sp := range bufs {
|
for _, sp := range bufs {
|
||||||
buf = append(buf, sp...)
|
buf = append(buf, sp...)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user