ホームページ >バックエンド開発 >Golang >Go の `os/exec` パッケージを使用して、ビデオ作成のために PhantomJS 出力を FFmpeg にパイプするにはどうすればよいですか?

Go の `os/exec` パッケージを使用して、ビデオ作成のために PhantomJS 出力を FFmpeg にパイプするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 04:09:10228ブラウズ

How Can I Use Go's `os/exec` Package to Pipe PhantomJS Output to FFmpeg for Video Creation?

Golang の Exec パッケージの使用: パイプを使用してコマンドを実行し、PhantomJS を使用して Web ページを記録します

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。