es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir .mp4 a gif utilizando ffmpeg en golang.

Quiero convertir mi archivo mp4 a formato gif. Usé el comando que funciona en el símbolo del sistema, es decir, convertí mi .mp4 a gif, pero en Go lang no hace nada. Aquí está mi comando:

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

Lo intenté en Go lang de esta manera, pero no funciona. Por favor, alguien ayúdeme a resolver mi problema.

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)
}

Por favor, si hay algún cambio avíseme, gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es difícil determinar el problema exacto sin ver el mensaje de error o el comportamiento. Sin embargo, un posible problema podría estar en el formato de cadena del comando en Go. Intenta quitar las comillas invertidas del argumento -vf y utiliza comillas dobles en su lugar. Esta es una versión actualizada del código:

    cmd := 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")
    
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatal(err)
    }
    
    if err := cmd.Start(); err != nil {
        log.Fatal(err)
    }
    
    if err := cmd.Wait(); err != nil {
        log.Fatal(err)
    }
    

    Ten en cuenta que también eliminé la declaración adicional de registro y agregué manejo de errores para cmd.Wait().

Comments are closed.