package stream import ( "io" "git.kingecg.top/kingecg/goffmpeg/pkg/ffmpeg" ) // TranscodeOptions defines options for stream transcode/transform type TranscodeOptions struct { // Input options InputURL string // rtsp://, http://, https://, ws://, or file path InputIO io.Reader // If set, InputURL is ignored (data piped to FFmpeg) // Output options OutputFormat string // Output container format: "mp4", "flv", "mkv", "raw" VideoCodec string // Video codec: "libx264", "libvpx", "copy", empty = no video AudioCodec string // Audio codec: "aac", "mp3", "copy", empty = no audio // Video options VideoWidth int VideoHeight int VideoBitRate int64 FrameRate ffmpeg.Rational PixelFormat string VideoFilter string // FFmpeg video filter string // Audio options AudioBitRate int64 AudioSampleRate int AudioChannels int AudioFilter string // FFmpeg audio filter string // General options BufferSize int // Internal buffer size (default 4096) } // Validate validates the options func (o *TranscodeOptions) Validate() error { // At least one input required if o.InputURL == "" && o.InputIO == nil { return ErrNoInput } // Buffer size default if o.BufferSize <= 0 { o.BufferSize = 4096 } return nil }