PhantomJS を使用して Web ページをキャプチャし、結果の画像を ffmpeg にシームレスにパイプしようとしています。ビデオ作成の課題に直面しました。ターミナルでコマンドを直接実行すると望ましい結果が得られますが、Go の os/exec パッケージを介してコマンドを実行すると障害が発生します。
このハードルを克服し、画像をファイルに書き込むという面倒な作業を回避するには、次のようにします。コマンド全体を単一のエンティティとして実行する可能性を検討しました。役立つ解決策は次のとおりです。
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)) }
このアプローチでは、os/exec パッケージに直接依存する代わりに、「bash」コマンドを使用して文字列全体を単一のエンティティとして実行します。これにより、パイプ機能を維持し、コマンドをシームレスに実行できます。
実行が成功すると、ffmpeg からの出力が「output」変数にキャプチャされ、必要に応じて結果の処理に進むことができます。
以上がGo の `os/exec` パッケージを使用して、ビデオ作成のために PhantomJS 出力を FFmpeg にパイプするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。