私は、ビデオファイルからフレームを変換して抽出するビデオに関連するいくつかのタスクがあるプロジェクト(ASP.NET Core、Linux上)を持っています。私は2つの可能なオプションについて考えLinux上で、ASP.NETコアでffmpegを使用する方がよいでしょうか?
:ffmpeg
2番目のオプションはマイル困難です
を使用していますlibavcodec
ライブラリなど、とのP/Invoke
を使用してffmpeg
コンソールユーティリティ
- と準備が整った製品を使用する代わりに、新しいラッパー/ライブラリの開発を思い出させるので、非常に実用的ではありません。
私はグーグルをしましたが、Linuxプラットフォーム上のC#/ ASP.NET Coreのプロジェクトはうまくいきません。 C++とPythonにはいくつかの利点がありますが、Linux/.NET CoreのC#の場合はNOTです。
私はもっと簡単で実用的であると思う最初のオプションを見ることに決めました。しかし、多くの問題を生成することができ、いくつかの弱いところがあります。私たちは、第一のオプションを使用して、エンド開発者は、プロセスのフォークを使用しなければならないこと、(私は仮定)を理解します。そのため、プロセスのアイドルや他の可能性の問題で問題が発生する可能性が...
それはビデオがC#を使用してサンプリング/変換とLinuxプラットフォーム上で私の最初の経験ですので、私は、あなたの練習について求めている可能性があります。 WindowsプラットフォームでExpression Encoder .NETライブラリを使用しましたが、これは別の話ですが、今は意味がありません。
その他のオプションがありますが、現時点ではわかりません。このような役割を持つ
ffmpeg
がASP.NET Coreバックエンドのブラックボックスになるため、未処理例外の可能性があるため1番目のオプションが嫌いです。
であるC#でC関数を呼び出す - このように素晴らしいところは、あなたが自分で決めるが、覚えておく必要がありますシンプル
です。 stdout strerrをリダイレクトしてffmpegの出力をキャプチャしてエラーを傍受し、プロセスの終了コードを調べる必要があります。あなたは、この場合に見られる「可能性のある多くの問題」を目立たせる必要があります。それは私がasp.netアプリケーションから直接実行しないと言った、私はビデオ処理を行うために別のアプリケーションを持っていただろう。 – Evk
@エイブク私は、それはオプションです、ありがとう、参照してください。起こり得る問題について...抽象的なオプションについて話すのはむしろ愚かなことです。なぜなら、そのようなことは実際の練習からしか正常ではないからです。しかし、例えば、映像や音声がエラーでエンコードされた、とffmpegのは、クラッシュすることがあります...このような状況は、それはまた、標準入力/標準出力で扱うことができ、プレビューを生成すると、長いビデオのアップロードプロセスを破る...しかし、があります。私はこの方法については考えていませんでした。このような方法で、すべての可能な例外を処理することができます。 – Neverlands
さて、私は本当にクラッシュするffmpegを見たことはありませんでしたが、もしそれがあったとしても、それに気付くでしょう。そのような場合、pinvoke - _your_プロセスで直接ffmpegを呼び出したのではなく、代わりにクラッシュすることに注意してください。私は通常、ビデオ処理タスクの別々のアプリケーション処理キュー(複数のスレッドまたは複数のアプリケーションを使用している可能性があります)、結果について関心のあるパーティ(Webアプリケーションなど)に通知します。私はasp.net Webアプリケーションのプロセスでそのようなことを決してしないだろう。 – Evk