package transcoder import ( "os/exec" "os" "io" ) func NewTranscoder(stream_key string) (io.WriteCloser, error) { base_dir, _ := os.UserHomeDir() command := "ffmpeg" command_args := []string{ "-probesize", "500", "-i", "pipe:0", "-c:a", "libopus", "-c:v", "vp9", "-quality", "realtime", "-speed", "7", "-tile-columns", "4", "-frame-parallel", "1", "-threads", "8", "-b:v", "1M", "-g", "30", "-hls_time", "6", "-hls_list_size", "4", "-hls_base_url", "/vid/" + stream_key + "/", "-hls_segment_type", "fmp4", "-hls_flags", "delete_segments", "-hls_flags", "+program_date_time", "stream.m3u8", } transcoder := exec.Command(command, command_args...) transcoder.Dir = base_dir + "/live/" + stream_key + "/" data_in, err := transcoder.StdinPipe() if err != nil { return nil, err } transcoder.Start() return data_in, nil }