mirror of
https://github.com/cnotch/ipchub.git
synced 2025-09-26 19:41:18 +08:00
m3u8 use bufferpool
This commit is contained in:
@@ -254,10 +254,18 @@ func (muxer *Muxer) isSegmentAbsolutelyOverflow() bool {
|
||||
return res
|
||||
}
|
||||
|
||||
var m3u8Pool = sync.Pool{
|
||||
New: func() interface{} {
|
||||
return bytes.NewBuffer(make([]byte, 0, 512))
|
||||
},
|
||||
}
|
||||
|
||||
// M3u8 获取 m3u8 播放列表
|
||||
func (muxer *Muxer) M3u8() ([]byte, error) {
|
||||
muxer.lastAccessTime = time.Now()
|
||||
w := &bytes.Buffer{}
|
||||
w := m3u8Pool.Get().(*bytes.Buffer)
|
||||
w.Reset()
|
||||
defer m3u8Pool.Put(w)
|
||||
|
||||
muxer.l.RLock()
|
||||
defer muxer.l.RUnlock()
|
||||
|
@@ -25,19 +25,19 @@ type segmentFile interface {
|
||||
}
|
||||
|
||||
type memorySegmentFile struct {
|
||||
buff *bytes.Buffer
|
||||
file *bytes.Buffer
|
||||
w mpegts.FrameWriter
|
||||
}
|
||||
|
||||
func newMemorySegmentFile() segmentFile {
|
||||
return &memorySegmentFile{
|
||||
buff: bytes.NewBuffer(nil),
|
||||
file: bytes.NewBuffer(nil),
|
||||
}
|
||||
}
|
||||
|
||||
func (mf *memorySegmentFile) open(path string) (err error) {
|
||||
mf.buff.Reset()
|
||||
mf.w, err = mpegts.NewWriter(mf.buff)
|
||||
mf.file.Reset()
|
||||
mf.w, err = mpegts.NewWriter(mf.file)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ func (mf *memorySegmentFile) close() (err error) {
|
||||
}
|
||||
|
||||
func (mf *memorySegmentFile) get() (io.Reader, int, error) {
|
||||
data := mf.buff.Bytes()
|
||||
data := mf.file.Bytes()
|
||||
return bytes.NewReader(data), len(data), nil
|
||||
}
|
||||
|
||||
@@ -116,5 +116,6 @@ func (pf *persistentSegmentFile) get() (reader io.Reader, size int, err error) {
|
||||
}
|
||||
|
||||
func (pf *persistentSegmentFile) delete() error {
|
||||
pf.close()
|
||||
return os.Remove(pf.path)
|
||||
}
|
||||
|
Reference in New Issue
Block a user