Files
streamctl/pkg/recoder/libav/saferecoder/process/init_libav.go
2024-10-15 03:02:44 +01:00

50 lines
823 B
Go

//go:build with_libav
// +build with_libav
package process
import (
"context"
"encoding/json"
"fmt"
"net"
"os"
"github.com/facebookincubator/go-belt"
"github.com/xaionaro-go/streamctl/pkg/recoder/libav/saferecoder/process/server"
)
const (
EnvKeyIsRecoder = "IS_STREAMPANEL_RECODER"
)
func init() {
if os.Getenv(EnvKeyIsRecoder) != "" {
runRecoder()
belt.Flush(context.TODO())
os.Exit(0)
}
}
func runRecoder() {
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
panic(fmt.Errorf("failed to listen: %w", err))
}
defer listener.Close()
d := ReturnedData{
ListenAddr: listener.Addr().String(),
}
b, err := json.Marshal(d)
if err != nil {
panic(err)
}
fmt.Fprintf(os.Stdout, "%s\n", b)
srv := server.NewServer()
err = srv.Serve(context.TODO(), listener)
panic(err)
}