Go Package built around spinning up streaming processes
Stream exposes a struct called Stream
which starts an underlying ffmpeg process to
transcode incoming raw RTSP stream to HLS based on parameters.
It provides a handy interface to handle streams
import "github.com/riltech/streamer"
func main() {
stream, id := streamer.NewStream(
"rtsp://admin:[email protected]:447/Streaming/Channel/2", // URI of raw RTSP stream
"./videos", // Directory where to store video chunks and indexes. Should exist already
true, // Indicates if stream should be keeping files after it is stopped or clean the directory
true, // Indicates if Audio should be enabled or not
streamer.ProcessLoggingOpts{
Enabled: true, // Indicates if process logging is enabled
Compress: true, // Indicates if logs should be compressed
Directory: "/tmp/logs/stream", // Directory to store logs
MaxAge: 0, // Max age for a log. 0 is infinite
MaxBackups: 2, // Maximum backups to keep
MaxSize: 500, // Maximum size of a log in megabytes
},
25*time.Second, // Time to wait before declaring a stream start failed
)
// Returns a waitGroup where the stream checking the underlying process for a successful start
stream.Start().Wait()
}