mirror of
https://github.com/lkmio/gb-cms.git
synced 2025-09-26 19:51:22 +08:00
52 lines
1.3 KiB
Go
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, "/"))
|
|
}
|