Files
gb-cms/common/stream_id.go
2025-09-14 19:35:58 +08:00

52 lines
1.3 KiB
Go

package common
import (
"github.com/lkmio/avformat/utils"
"strconv"
"strings"
"time"
)
type StreamID string // 目前目涉及转码,多路流, 与SourceID相同
func (s StreamID) DeviceID() string {
return strings.Split(string(s), "/")[0]
}
func (s StreamID) ChannelID() string {
return strings.Split(strings.Split(string(s), "/")[1], ".")[0]
}
func GenerateStreamID(inviteType InviteType, deviceId, channelId string, startTime, endTime string) StreamID {
utils.Assert(channelId != "")
var streamId []string
if deviceId != "" {
streamId = append(streamId, deviceId)
}
streamId = append(streamId, channelId)
// 转换时间戳
if startTime != "" {
if t, err := time.Parse("2006-01-02T15:04:05", startTime); err == nil {
startTime = strconv.FormatInt(t.Unix(), 10)
}
}
if endTime != "" {
if t, err := time.Parse("2006-01-02T15:04:05", endTime); err == nil {
endTime = strconv.FormatInt(t.Unix(), 10)
}
}
if InviteTypePlayback == inviteType {
return StreamID(strings.Join(streamId, "/") + ".playback" + "." + startTime + "." + endTime)
} else if InviteTypeDownload == inviteType {
return StreamID(strings.Join(streamId, "/") + ".download" + "." + startTime + "." + endTime)
} else if InviteTypeBroadcast == inviteType {
return StreamID(strings.Join(streamId, "/") + ".broadcast")
}
return StreamID(strings.Join(streamId, "/"))
}