mirror of
				https://github.com/AlexxIT/go2rtc.git
				synced 2025-11-01 04:02:37 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package streams
 | |
| 
 | |
| import (
 | |
| 	"github.com/AlexxIT/go2rtc/cmd/app"
 | |
| 	"github.com/AlexxIT/go2rtc/cmd/app/store"
 | |
| 	"github.com/rs/zerolog"
 | |
| )
 | |
| 
 | |
| func Init() {
 | |
| 	var cfg struct {
 | |
| 		Mod map[string]interface{} `yaml:"streams"`
 | |
| 	}
 | |
| 
 | |
| 	app.LoadConfig(&cfg)
 | |
| 
 | |
| 	log = app.GetLogger("streams")
 | |
| 
 | |
| 	for name, item := range cfg.Mod {
 | |
| 		streams[name] = NewStream(item)
 | |
| 	}
 | |
| 
 | |
| 	for name, item := range store.GetDict("streams") {
 | |
| 		streams[name] = NewStream(item)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func Get(name string) *Stream {
 | |
| 	return streams[name]
 | |
| }
 | |
| 
 | |
| func New(name string, source interface{}) *Stream {
 | |
| 	stream := NewStream(source)
 | |
| 	streams[name] = stream
 | |
| 	return stream
 | |
| }
 | |
| 
 | |
| func GetOrNew(src string) *Stream {
 | |
| 	if stream, ok := streams[src]; ok {
 | |
| 		return stream
 | |
| 	}
 | |
| 
 | |
| 	if !HasProducer(src) {
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	log.Info().Str("url", src).Msg("[streams] create new stream")
 | |
| 
 | |
| 	return New(src, src)
 | |
| }
 | |
| 
 | |
| func Delete(name string) {
 | |
| 	delete(streams, name)
 | |
| }
 | |
| 
 | |
| func All() map[string]interface{} {
 | |
| 	all := map[string]interface{}{}
 | |
| 	for name, stream := range streams {
 | |
| 		all[name] = stream
 | |
| 		//if stream.Active() {
 | |
| 		//	all[name] = stream
 | |
| 		//}
 | |
| 	}
 | |
| 	return all
 | |
| }
 | |
| 
 | |
| var log zerolog.Logger
 | |
| var streams = map[string]*Stream{}
 | 
