golang ffmpeg-go 提取视频中音频

依赖库

github.com/u2takey/ffmpeg-go

实现代码

package main
 
import (
    "fmt"
    "github.com/gofrs/uuid"
    "github.com/google/logger"
    ffmpeg "github.com/u2takey/ffmpeg-go"
    "path/filepath"
    "strings"
)
 
func InFormat1(target string, str_array []string) bool {
    for _, element := range str_array {
        if target == element {
            return true
        }
    }
    return false
}
 
//提取MP3
func ExtractMp3(inputVideoPath, outputDir string) string {
    _formatArr := []string{"mp4", "flv"}
    _, _file := filepath.Split(inputVideoPath)
    _tmps := strings.Split(_file, ".")
    _ext := _tmps[len(_tmps)-1]
    if !InFormat1(_ext, _formatArr) {
        logger.Fatal("格式不支持")
    }
    _name, err := uuid.NewV4()
    if err != nil {
        logger.Fatal(err)
    }
    _resultVideoPath := filepath.Join(outputDir, fmt.Sprintf("%s.%s", _name.String(), "mp3"))
    err = ffmpeg.Input(inputVideoPath).
        Output(_resultVideoPath, ffmpeg.KwArgs{"acodec": "libmp3lame"}).
        OverWriteOutput().ErrorToStdOut().Run()
    if err != nil {
        logger.Fatal(err)
    }
    return _resultVideoPath
}
 
 
func main() {
    _extractMp3 := ExtractMp3("./3333333.mp4", "./Desktop")
    fmt.Println(_extractMp3)
}

日志工具类代码

package logutil
 
import (
    "github.com/google/logger"
    "os"
)
 
var pLogger *logger.Logger
 
// Init init logger
func Init(verbose, systemLog bool, logPath string) {
    file, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
    if err != nil {
        logger.Fatalf("logger Init: open log file(%v) error(%v)", logPath, err)
    }
    pLogger = logger.Init("FFmpegDemoLogger", verbose, systemLog, file)
}
 
// Close close logger
func Close() {
    pLogger.Close()
}

代码说明

1、ExtractMp3方法参数分别为,输入视频地址、输出mp3目录地址值。

2、做了简单的视频格式校验,如需添加,可以自己看着来。

3、最终视频名使用uuid避免重复。