2017-09-05 8 views
0

私はコア機能の一部としてffmpegを使用するPythonプロジェクトに取り組んでいます。基本的に私が使用ffmpegからの機能は以下の2つのコマンドに沸く:Pythonアプリケーション内でFFmpegを使用する:ffmpegツールまたはlibav *ライブラリ?

ffmpeg -i udp://<address:port> -qscale:v 2 -vf "fps=30" sttest%04d.jpg 
ffmpeg -i udp://<address:port> -map data-re -codec copy -f data out.bin 

かなりシンプルなものを。

私は、上記のffmpeg機能を使用する自己完結型プログラムを作成しようとしています。これは、必要な依存関係を持つシステムに頼ることなく、特定のシステムに簡単にインストールできます。プログラムそのもの。

これを念頭に置いて、libav*ライブラリを使用してプログラム内からこの機能を実行するのが最善でしょうか?または、ffmpegコマンドラインツールのラッパー(ffmpy)を使用するとよいでしょうか?それぞれの欠点に関する私の現在の考え方は、ライブラリの使用がベストプラクティスかもしれないが、それらを使用する方法を習得するのは非常に複雑すぎるようである(そして、私が学んだことのないCを、上記の2つの基本的なことをする。図書館は全体的に私にとっては少しブラックボックスであり、非常に多くの文書を持っていません。しかし、ffmpegのラッパーを使用する際の問題は、本質的にサブプロセスを呼び出すことに依存していることにあります。なぜ私はサブプロセスにそれほど意識的に反対しているのか分かりませんが。

+0

Cがわからない場合は、コマンドラインユーティリティに固執してください。 – halfelf

答えて

3

多少の意見はありますが、CLIを使用している場合は、libav *ライブラリのみを使用して、サポートしていることがあればサブプロセスでffmpeg CLIを使用することをおすすめします本当に満足できません。

ライブラリの柔軟性は向上しますが、APIは非常に複雑で、CLIがすでに行っていることを複製するのにほとんどの時間を費やしています(ffmpeg.c、ライブラリをまとめたメインプログラムだけです)。およそ4800行、3700行のオプションパーサーは含まない)。途中でいくつかのバグを追加する可能性があります。特にCの知識が不足している場合は特にそうです。だから、もしあなたが必要なことをするCLIを得ることができる、それは間違いなく最も抵抗のパスです。サブプロセスには残念なことはありません:それはUnixの方法です!

関連する問題