github.com/0chain/gosdk@v1.17.11/zboxcore/sdk/live_upload_reader_ffmpeg.go (about) 1 //go:build !js && !wasm 2 // +build !js,!wasm 3 4 package sdk 5 6 import ( 7 "fmt" 8 "os" 9 "os/exec" 10 "strings" 11 ) 12 13 // FfmpegRecorder wrap ffmpeg command to capture video and audio from local camera and microphone 14 type FfmpegRecorder struct { 15 liveUploadReaderBase 16 } 17 18 // CreateFfmpegRecorder create a ffmpeg commander to capture video and audio local camera and microphone 19 // - file: output file path 20 // - delay: delay in seconds 21 func CreateFfmpegRecorder(file string, delay int) (*FfmpegRecorder, error) { 22 23 builder := createFileNameBuilder(file) 24 25 args := buildFfmpegArgs(builder.OutFile(), delay) 26 27 fmt.Println("ffmpeg", strings.Join(args, " ")) 28 29 cmd := exec.Command("ffmpeg", args...) 30 cmd.Stderr = os.Stderr 31 cmd.Stdout = os.Stdout 32 33 err := cmd.Start() 34 35 if err != nil { 36 return nil, err 37 } 38 39 fr := &FfmpegRecorder{ 40 liveUploadReaderBase: liveUploadReaderBase{ 41 builder: builder, 42 delay: delay, 43 cmd: cmd, 44 clipsIndex: 0, 45 }, 46 } 47 48 go fr.wait() 49 50 return fr, nil 51 }