的 更新: 强> 原来问题是 -ss 需要时间而不是帧索引。
-ss
我试图重现这个问题,但它似乎对我有用。也许添加 cmd.Stderr = os.Stderr 看看ffmpeg输出是否给出了线索。你还可以发布一个完全可运行的例子吗?
cmd.Stderr = os.Stderr
package main import ( "bytes" "image" "log" "os" "os/exec" _ "golang.org/x/image/bmp" ) func main() { cmd := exec.Command( "docker", "run", "--rm", "mwader/static-ffmpeg", "-ss", "5", "-f", "lavfi", "-i", "testsrc", "-frames:v", "1", "-f", "image2", "-vcodec", "bmp", "pipe:1", ) var out bytes.Buffer cmd.Stderr = os.Stderr cmd.Stdout = &out err := cmd.Run() if err != nil { log.Fatal(err) } img, imgFormat, imgErr := image.Decode(&out) log.Printf("img.Bounds(): %#+v\n", img.Bounds()) log.Printf("imgFormat: %#+v\n", imgFormat) log.Printf("imgErr: %#+v\n", imgErr) }