在 golang 中使用 ffmpeg 将 .mp4 转换为 gif
Convert .mp4 to gif using ffmpeg in golang
我想将我的 mp4 文件转换为 gif 格式。我使用了在命令提示符下运行的命令。即,将我的 .mp4 转换为 gif,但在 go lang 中它什么也没做。这是我的命令:
ffmpeg -i Untitled.mp4 -vf "fps=5,scale=320:-1:flags=lanczos" -c:v pam -f image2pipe - | convert -delay 5 - -loop 0 -layers optimize test.gif
我在 go lang 中使用过这样的,但它不起作用。请任何人帮助我解决我的问题。
cmd3 := exec.Command("ffmpeg", "-i", "Untitled.mp4", "-vf", "`fps=5,scale=320:-1:flags=lanczos`", "-c:v", "pam", "-f", "image2pipe", "- |", "convert", "-delay", "5", "-", "-loop", "0", "-layers", "optimize", "test.gif")
stdout2, err2 := cmd3.StdoutPipe()
log.Println("gif", stdout2)
if err2 != nil {
log.Fatal(err2, "............")
}
if err2 := cmd3.Start(); err2 != nil {
log.Fatal(err2)
}
如果有任何变化,请提前通知我。
这不是您要查找的内容,但可以这样做:
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := "ffmpeg -i Untitled.mp4 -vf \"fps=5,scale=320:-1:flags=lanczos\" -c:v pam -f image2pipe - | convert -delay 5 - -loop 0 -layers optimize test.gif"
_, err := exec.Command("bash","-c",cmd).Output()
if err != nil {
fmt.Println(fmt.Sprintf("Failed to execute command: %s", cmd))
}
}
我想将我的 mp4 文件转换为 gif 格式。我使用了在命令提示符下运行的命令。即,将我的 .mp4 转换为 gif,但在 go lang 中它什么也没做。这是我的命令:
ffmpeg -i Untitled.mp4 -vf "fps=5,scale=320:-1:flags=lanczos" -c:v pam -f image2pipe - | convert -delay 5 - -loop 0 -layers optimize test.gif
我在 go lang 中使用过这样的,但它不起作用。请任何人帮助我解决我的问题。
cmd3 := exec.Command("ffmpeg", "-i", "Untitled.mp4", "-vf", "`fps=5,scale=320:-1:flags=lanczos`", "-c:v", "pam", "-f", "image2pipe", "- |", "convert", "-delay", "5", "-", "-loop", "0", "-layers", "optimize", "test.gif")
stdout2, err2 := cmd3.StdoutPipe()
log.Println("gif", stdout2)
if err2 != nil {
log.Fatal(err2, "............")
}
if err2 := cmd3.Start(); err2 != nil {
log.Fatal(err2)
}
如果有任何变化,请提前通知我。
这不是您要查找的内容,但可以这样做:
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := "ffmpeg -i Untitled.mp4 -vf \"fps=5,scale=320:-1:flags=lanczos\" -c:v pam -f image2pipe - | convert -delay 5 - -loop 0 -layers optimize test.gif"
_, err := exec.Command("bash","-c",cmd).Output()
if err != nil {
fmt.Println(fmt.Sprintf("Failed to execute command: %s", cmd))
}
}