3 Commits

Author SHA1 Message Date
Andrey Semochkin
4b060bc442 fix dig 2024-02-08 01:00:12 +07:00
Andrey Semochkin
9f075c6682 fix hostShort / hostLong bug 2024-02-07 20:44:30 +07:00
Andrey Semochkin
0e06666006 fix listTag bug 2024-02-07 20:33:12 +07:00

View File

@@ -20,7 +20,13 @@ import (
) )
var MIME = []byte{11, 22, 111, 222, 11, 22, 111, 222} var MIME = []byte{11, 22, 111, 222, 11, 22, 111, 222}
var listTag = []string{"{server_id}", "{host_name}", "{host_name_short}", "{host_name_long}", "{stream_name}", "{channel_name}", "{stream_id}", "{channel_id}", "{start_year}", "{start_month}", "{start_day}", "{start_hour}", "{start_minute}", "{start_second}", "{start_millisecond}", "{start_unix_second}", "{start_unix_millisecond}", "{start_time}", "{start_pts}", "{end_year}", "{end_month}", "{end_day}", "{end_hour}", "{end_minute}", "{end_second}", "{end_millisecond}", "{start_unix_second}", "{start_unix_millisecond}", "{end_time}", "{end_pts}", "{duration_second}", "{duration_millisecond}"}
var listTag = []string{"{server_id}", "{host_name}", "{host_name_short}", "{host_name_long}",
"{stream_name}", "{channel_name}", "{stream_id}", "{channel_id}",
"{start_year}", "{start_month}", "{start_day}", "{start_hour}", "{start_minute}", "{start_second}",
"{start_millisecond}", "{start_unix_second}", "{start_unix_millisecond}", "{start_time}", "{start_pts}",
"{end_year}", "{end_month}", "{end_day}", "{end_hour}", "{end_minute}", "{end_second}",
"{end_millisecond}", "{end_unix_millisecond}", "{end_unix_second}", "{end_time}", "{end_pts}", "{duration_second}", "{duration_millisecond}"}
const ( const (
MP4 = "mp4" MP4 = "mp4"
@@ -28,20 +34,20 @@ const (
) )
type Muxer struct { type Muxer struct {
muxer *mp4.Muxer muxer *mp4.Muxer
format string format string
limit int limit int
d *os.File d *os.File
m *os.File m *os.File
dur time.Duration dur time.Duration
h int h int
gof *Gof gof *Gof
patch string patch string
mpoint []string mpoint []string
start, end time.Time start, end time.Time
pstart, pend time.Duration pstart, pend time.Duration
started bool started bool
serverID, streamName, channelName, streamID, channelID, hostname string serverID, streamName, channelName, streamID, channelID, hostLong, hostShort string
} }
type Gof struct { type Gof struct {
@@ -70,7 +76,11 @@ func init() {
} }
func NewMuxer(serverID, streamName, channelName, streamID, channelID string, mpoint []string, patch, format string, limit int) (m *Muxer, err error) { func NewMuxer(serverID, streamName, channelName, streamID, channelID string, mpoint []string, patch, format string, limit int) (m *Muxer, err error) {
hostname, _ := os.Hostname() hostLong, _ := os.Hostname()
var hostShort string
if p, _, ok := strings.Cut(hostLong, "."); ok {
hostShort = p
}
m = &Muxer{ m = &Muxer{
mpoint: mpoint, mpoint: mpoint,
patch: patch, patch: patch,
@@ -83,7 +93,8 @@ func NewMuxer(serverID, streamName, channelName, streamID, channelID string, mpo
channelName: channelName, channelName: channelName,
streamID: streamID, streamID: streamID,
channelID: channelID, channelID: channelID,
hostname: hostname, hostLong: hostLong,
hostShort: hostShort,
} }
return return
} }
@@ -247,11 +258,11 @@ func (m *Muxer) filePatch() (string, error) {
case "{server_id}": case "{server_id}":
ts = strings.Replace(ts, "{server_id}", m.serverID, -1) ts = strings.Replace(ts, "{server_id}", m.serverID, -1)
case "{host_name}": case "{host_name}":
ts = strings.Replace(ts, "{host_name}", m.hostname, -1) ts = strings.Replace(ts, "{host_name}", m.hostLong, -1)
case "{host_name_short}": case "{host_name_short}":
ts = strings.Replace(ts, "{host_name_short}", m.hostname, -1) ts = strings.Replace(ts, "{host_name_short}", m.hostShort, -1)
case "{host_name_long}": case "{host_name_long}":
ts = strings.Replace(ts, "{host_name_long}", m.hostname, -1) ts = strings.Replace(ts, "{host_name_long}", m.hostLong, -1)
case "{stream_name}": case "{stream_name}":
ts = strings.Replace(ts, "{stream_name}", m.streamName, -1) ts = strings.Replace(ts, "{stream_name}", m.streamName, -1)
case "{channel_name}": case "{channel_name}":
@@ -263,21 +274,21 @@ func (m *Muxer) filePatch() (string, error) {
case "{start_year}": case "{start_year}":
ts = strings.Replace(ts, "{start_year}", fmt.Sprintf("%d", m.start.Year()), -1) ts = strings.Replace(ts, "{start_year}", fmt.Sprintf("%d", m.start.Year()), -1)
case "{start_month}": case "{start_month}":
ts = strings.Replace(ts, "{start_month}", fmt.Sprintf("%d", int(m.start.Month())), -1) ts = strings.Replace(ts, "{start_month}", fmt.Sprintf("%02d", int(m.start.Month())), -1)
case "{start_day}": case "{start_day}":
ts = strings.Replace(ts, "{start_day}", fmt.Sprintf("%d", m.start.Day()), -1) ts = strings.Replace(ts, "{start_day}", fmt.Sprintf("%02d", m.start.Day()), -1)
case "{start_hour}": case "{start_hour}":
ts = strings.Replace(ts, "{start_hour}", fmt.Sprintf("%d", m.start.Hour()), -1) ts = strings.Replace(ts, "{start_hour}", fmt.Sprintf("%02d", m.start.Hour()), -1)
case "{start_minute}": case "{start_minute}":
ts = strings.Replace(ts, "{start_minute}", fmt.Sprintf("%d", m.start.Minute()), -1) ts = strings.Replace(ts, "{start_minute}", fmt.Sprintf("%02d", m.start.Minute()), -1)
case "{start_second}": case "{start_second}":
ts = strings.Replace(ts, "{start_second}", fmt.Sprintf("%d", m.start.Second()), -1) ts = strings.Replace(ts, "{start_second}", fmt.Sprintf("%02d", m.start.Second()), -1)
case "{start_millisecond}": case "{start_millisecond}":
ts = strings.Replace(ts, "{start_millisecond}", fmt.Sprintf("%d", m.start.Nanosecond()/1000/1000), -1) ts = strings.Replace(ts, "{start_millisecond}", fmt.Sprintf("%d", m.start.Nanosecond()/1000/1000), -1)
case "{start_unix_millisecond}": case "{start_unix_millisecond}":
ts = strings.Replace(ts, "{start_unix_millisecond}", fmt.Sprintf("%d", m.end.UnixMilli()), -1) ts = strings.Replace(ts, "{start_unix_millisecond}", fmt.Sprintf("%d", m.start.UnixMilli()), -1)
case "{start_unix_second}": case "{start_unix_second}":
ts = strings.Replace(ts, "{start_unix_second}", fmt.Sprintf("%d", m.end.Unix()), -1) ts = strings.Replace(ts, "{start_unix_second}", fmt.Sprintf("%d", m.start.Unix()), -1)
case "{start_time}": case "{start_time}":
ts = strings.Replace(ts, "{start_time}", fmt.Sprintf("%s", m.start.Format("2006-01-02T15:04:05-0700")), -1) ts = strings.Replace(ts, "{start_time}", fmt.Sprintf("%s", m.start.Format("2006-01-02T15:04:05-0700")), -1)
case "{start_pts}": case "{start_pts}":
@@ -285,17 +296,17 @@ func (m *Muxer) filePatch() (string, error) {
case "{end_year}": case "{end_year}":
ts = strings.Replace(ts, "{end_year}", fmt.Sprintf("%d", m.end.Year()), -1) ts = strings.Replace(ts, "{end_year}", fmt.Sprintf("%d", m.end.Year()), -1)
case "{end_month}": case "{end_month}":
ts = strings.Replace(ts, "{end_month}", fmt.Sprintf("%d", int(m.end.Month())), -1) ts = strings.Replace(ts, "{end_month}", fmt.Sprintf("%02d", int(m.end.Month())), -1)
case "{end_day}": case "{end_day}":
ts = strings.Replace(ts, "{end_day}", fmt.Sprintf("%d", m.end.Day()), -1) ts = strings.Replace(ts, "{end_day}", fmt.Sprintf("%02d", m.end.Day()), -1)
case "{end_hour}": case "{end_hour}":
ts = strings.Replace(ts, "{end_hour}", fmt.Sprintf("%d", m.end.Hour()), -1) ts = strings.Replace(ts, "{end_hour}", fmt.Sprintf("%02d", m.end.Hour()), -1)
case "{end_minute}": case "{end_minute}":
ts = strings.Replace(ts, "{end_minute}", fmt.Sprintf("%d", m.end.Minute()), -1) ts = strings.Replace(ts, "{end_minute}", fmt.Sprintf("%02d", m.end.Minute()), -1)
case "{end_second}": case "{end_second}":
ts = strings.Replace(ts, "{end_second}", fmt.Sprintf("%d", m.end.Second()), -1) ts = strings.Replace(ts, "{end_second}", fmt.Sprintf("%02d", m.end.Second()), -1)
case "{end_millisecond}": case "{end_millisecond}":
ts = strings.Replace(ts, "{end_millisecond}", fmt.Sprintf("%d", m.start.Nanosecond()/1000/1000), -1) ts = strings.Replace(ts, "{end_millisecond}", fmt.Sprintf("%d", m.end.Nanosecond()/1000/1000), -1)
case "{end_unix_millisecond}": case "{end_unix_millisecond}":
ts = strings.Replace(ts, "{end_unix_millisecond}", fmt.Sprintf("%d", m.end.UnixMilli()), -1) ts = strings.Replace(ts, "{end_unix_millisecond}", fmt.Sprintf("%d", m.end.UnixMilli()), -1)
case "{end_unix_second}": case "{end_unix_second}":