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  }