mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-05 16:26:50 +08:00
47 lines
794 B
Go
47 lines
794 B
Go
package ffmpeg
|
|
|
|
import (
|
|
"errors"
|
|
"os/exec"
|
|
"sync"
|
|
|
|
"github.com/AlexxIT/go2rtc/pkg/ffmpeg"
|
|
)
|
|
|
|
var verMu sync.Mutex
|
|
var verErr error
|
|
var verFF string
|
|
var verAV string
|
|
|
|
func Version() (string, error) {
|
|
verMu.Lock()
|
|
defer verMu.Unlock()
|
|
|
|
if verFF != "" {
|
|
return verFF, verErr
|
|
}
|
|
|
|
cmd := exec.Command(defaults["bin"], "-version")
|
|
b, err := cmd.Output()
|
|
if err != nil {
|
|
verFF = "-"
|
|
verErr = err
|
|
return verFF, verErr
|
|
}
|
|
|
|
verFF, verAV = ffmpeg.ParseVersion(b)
|
|
|
|
if verFF == "" {
|
|
verFF = "?"
|
|
}
|
|
|
|
// better to compare libavformat, because nightly/master builds
|
|
if verAV != "" && verAV < ffmpeg.Version50 {
|
|
verErr = errors.New("ffmpeg: unsupported version: " + verFF)
|
|
}
|
|
|
|
log.Debug().Str("version", verFF).Str("libavformat", verAV).Msgf("[ffmpeg] bin")
|
|
|
|
return verFF, verErr
|
|
}
|