Pour tenter de capturer une page Web à l'aide de PhantomJS et de diriger de manière transparente les images résultantes vers ffmpeg pour création vidéo, vous avez rencontré un défi. L'exécution de la commande directement dans le terminal donne les résultats souhaités, mais la pierre d'achoppement réside lors de son exécution via le package os/exec de Go.
Pour surmonter cet obstacle et éviter la tâche laborieuse d'écriture d'images dans des fichiers, vous' J'ai exploré la possibilité d'exécuter l'intégralité de la commande en tant qu'entité unique. Voici une solution qui pourrait aider :
import ( "fmt" "os/exec" ) func main() { cmd := "phantomjs runner.js | ffmpeg -y -c:v png -f image2pipe -r 25 -t 10 -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart dragon.mp4" output, err := exec.Command("bash", "-c", cmd).Output() if err != nil { fmt.Printf("Failed to execute command: %s", cmd) } fmt.Println(string(output)) }
Dans cette approche, au lieu de nous appuyer directement sur le package os/exec, nous utilisons une commande « bash » pour exécuter la chaîne entière en tant qu'entité unique. Cela nous permet de maintenir la fonctionnalité du tube et d'exécuter la commande de manière transparente.
Une fois l'exécution réussie, la sortie de ffmpeg sera capturée dans la variable 'output' et vous pourrez continuer à gérer les résultats selon vos besoins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!