testing
This commit is contained in:
parent
a743575ac9
commit
7a563b07e3
@ -3,23 +3,22 @@ package mp4
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/deepch/vdk/codec/h265parser"
|
|
||||||
|
|
||||||
"github.com/deepch/vdk/av"
|
"github.com/deepch/vdk/av"
|
||||||
"github.com/deepch/vdk/codec/aacparser"
|
"github.com/deepch/vdk/codec/aacparser"
|
||||||
"github.com/deepch/vdk/codec/h264parser"
|
"github.com/deepch/vdk/codec/h264parser"
|
||||||
|
"github.com/deepch/vdk/codec/h265parser"
|
||||||
"github.com/deepch/vdk/format/mp4/mp4io"
|
"github.com/deepch/vdk/format/mp4/mp4io"
|
||||||
"github.com/deepch/vdk/utils/bits/pio"
|
"github.com/deepch/vdk/utils/bits/pio"
|
||||||
|
"io"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Muxer struct {
|
type Muxer struct {
|
||||||
w io.WriteSeeker
|
w io.WriteSeeker
|
||||||
bufw *bufio.Writer
|
bufw *bufio.Writer
|
||||||
wpos int64
|
wpos int64
|
||||||
streams []*Stream
|
streams []*Stream
|
||||||
|
NegativeTsMakeZero bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMuxer(w io.WriteSeeker) *Muxer {
|
func NewMuxer(w io.WriteSeeker) *Muxer {
|
||||||
@ -206,8 +205,12 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
|||||||
|
|
||||||
func (self *Stream) writePacket(pkt av.Packet, rawdur time.Duration) (err error) {
|
func (self *Stream) writePacket(pkt av.Packet, rawdur time.Duration) (err error) {
|
||||||
if rawdur < 0 {
|
if rawdur < 0 {
|
||||||
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
|
if self.muxer.NegativeTsMakeZero {
|
||||||
return
|
rawdur = 0
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = self.muxer.bufw.Write(pkt.Data); err != nil {
|
if _, err = self.muxer.bufw.Write(pkt.Data); err != nil {
|
||||||
|
@ -14,10 +14,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Muxer struct {
|
type Muxer struct {
|
||||||
w io.WriteSeeker
|
w io.WriteSeeker
|
||||||
bufw *bufio.Writer
|
bufw *bufio.Writer
|
||||||
wpos int64
|
wpos int64
|
||||||
streams []*Stream
|
streams []*Stream
|
||||||
|
NegativeTsMakeZero bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMuxer(w io.WriteSeeker) *Muxer {
|
func NewMuxer(w io.WriteSeeker) *Muxer {
|
||||||
@ -181,8 +182,12 @@ func (self *Muxer) WritePacket(pkt av.Packet) (err error) {
|
|||||||
|
|
||||||
func (self *Stream) writePacket(pkt av.Packet, rawdur time.Duration) (err error) {
|
func (self *Stream) writePacket(pkt av.Packet, rawdur time.Duration) (err error) {
|
||||||
if rawdur < 0 {
|
if rawdur < 0 {
|
||||||
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
|
if self.muxer.NegativeTsMakeZero {
|
||||||
return
|
rawdur = 0
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("mp4: stream#%d time=%v < lasttime=%v", pkt.Idx, pkt.Time, self.lastpkt.Time)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = self.muxer.bufw.Write(pkt.Data); err != nil {
|
if _, err = self.muxer.bufw.Write(pkt.Data); err != nil {
|
||||||
|
@ -210,6 +210,7 @@ func (m *Muxer) OpenMP4() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.muxer = mp4.NewMuxer(m.d)
|
m.muxer = mp4.NewMuxer(m.d)
|
||||||
|
m.muxer.NegativeTsMakeZero = true
|
||||||
if err = m.muxer.WriteHeader(m.gof.Streams); err != nil {
|
if err = m.muxer.WriteHeader(m.gof.Streams); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user