19

一連の画像ファイルからビデオを作成する既知の信頼できる方法を知っている人はいますか? 質問を投稿する前に答えを探さなかったために私をモッドする前に、また「FFMPEG を使用してください」などの簡単なメッセージを発する前に、このメッセージの残りの部分を読んでください。

ビデオを作成しようとしています。一連の画像 (.jpg、.bmp など) から、広くサポートされている限り、どのような形式でも問題ありません。私のプラットフォームは Windows Server 2008、64 ビットです。C# プログラム内からビデオを作成できればそれは素晴らしいことですが、一連の画像ファイルをディレクトリに書き込み、外部プログラムを起動してそれらの画像からビデオを作成することも嫌いではありません。

唯一の制約は、Windows Server 2008 システムで動作し、スクリプト可能でなければならないことです。つまり、オペレーターの介入を必要とする GUI プログラムはありません。

私は StackOverflow で多くの同様の質問を見つけ、いくつかの解決策を試しましたが、すべてさまざまな程度のフラストレーションがあり、成功したものはありませんでした。

FFMPEG は素晴らしいプログラムのように見えます。たぶん、Linuxではそうです。ダウンロードした 2 つの Windows ビルドが壊れています。次のコマンド ラインを指定します。

  ffmpeg -r 1 -f image2 -i jpeg\*.jpg video.avi

ビルドの 1 つがイメージを読み取り、データ実行防止のためにクラッシュします。もう 1 つは最初のファイルを読み取り、「ファイル jpeg/image2.jpg に適したコーデックが見つかりません」というエラー メッセージを吐き出します。助かります、それ。いずれにせよ、FFMPEG は Windows では非スターターのように見えます。

以前の投稿に対する 1 つの回答では、Splicerを推奨しました。それはかなり良いコードのように見えます。サンプルをコンパイルして実行しようとしましたが、ファイルが見つからないという不可解なエラー メッセージが表示されました。COM クラスが登録されていないようです。何かをインストールする必要があると思います (おそらく、DirectShow は既にインストールされていると思いましたが?)。必要なものによっては、サーバーへのインストールを正当化するのに苦労するかもしれません。(「なに?なぜサーバー上でそれが必要なの?」)

別の回答では、Code Project のAviFileライブラリが提案されました。これは非常に単純に見えます: Windows AviFile サブシステムのラッパーです。ただし、パッケージが作成する AVI ファイルにはすべてのフレームが含まれているように見えますが、Windows Media Player で AVI を再生すると最初のフレームしか表示されません。それと、圧縮されたビデオを作成しようとすると、プログラムは例外をスローします。

Windows システムで、一連の画像から .NET API または外部プログラム。何か助けはありますか?

4

5 に答える 5

11

しばらく使って x264 と VideoLan を調べた後、Splicer に戻りました。不可解なエラー メッセージは、コードのエラーが原因であることがわかりました。

Splicer は私がやりたいことをやってくれるように見えます: 一連の画像からプログラムでビデオを作成します。

回答してくれたすべての人に感謝します。

于 2009-02-12T21:21:07.027 に答える
6

あなたは VideoLan を使うことができ、私はそれをお勧めします。

私は、VideoLan を使用して C# アプリケーションで次の 2 つのことを直接経験しました。

  1. VLC ビューアーを C# アプリケーションに埋め込みます (VLC ビューアー用に 3 ~ 4 個の C# "ラッパー" があります)。
  2. コマンドライン引数を送信して、別のプロセスで vlc.exe を使用する。

VideoLan にコマンドライン インターフェイスがあるという事実は素晴らしいことです。また、VLC は、視覚要素を無効にするコマンドライン オプションをサポートしています。そのため、VLC GUI はポップアップせず、コマンドライン ウィンドウもポップアップしません。したがって、C# アプリケーションでは、ビデオ関連の作業を VLC クライアントに委託できます。C# には、vlc.exe インスタンスを管理できる Process クラスがあります。それはかなりきちんとした解決策になります。

于 2009-02-12T04:51:24.130 に答える
1

Windows でのビデオの処理 (エンコードと再生) は本当に泥沼です。また、.NET はまったく役に立ちません。常に、PInvoking/COM 相互運用ネイティブ API を使用するか、他の誰かが同じことを行うために構築した .NET ラッパーを使用することになります。

とにかく、私はそれを使用したとは言えませんが、ビデオラン プロジェクトの一部である x264 ライブラリは良い賭けのようです。これにより、PInvoke が可能な自己完結型の C ライブラリが提供され、サーバーへのインストールや DirectShow ガベージについて心配する必要がなくなります。私が理解しているように、Flashで再生可能なH.264形式のビデオを生成します。

于 2009-02-12T00:54:18.210 に答える
0

mplayerの mencoder を使用して、次のように Linux 上の TGA ファイルから AVI (コーデック msmpeg4/mp3、デフォルトで Windows Media Player で読み取り可能) を作成しました。

mencoder mf://*.tga -mf fps=25:type=tga \
  -audiofile /tmp/test.mp3 -oac copy \
  -of lavf -ovc lavc \          
  -lavcopts vcodec=msmpeg4v2:mbd=2:mv0:trell:cbp:last_pred=3:vbitrate=3000 \
  -o /tmp/test.avi

mplayer には Windows 版があることは知っています。

于 2009-02-12T08:55:13.920 に答える
-2

すべての面倒なことをする代わりに、ビデオに含めたいすべての画像をクリップボードにコピーし、それを Windows Live ムービー メーカーにインポートして (もちろん動的に!)、コンパイルしてもらうことができます!

これらはすべてコードで実行できますが、この方法では自分で作成する必要はありません。あなたが言ったように、プラットフォームは Windows であり、すべての Windows カンプには Windows Live Movie Maker がインストールされているため、アプリケーションを使用する人にとって問題になることはありません。

a) Windows Live ムービー メーカーをアンインストールした

b) 8 年または 9 年以上前の Windows バージョンで実行されているコンピューターを使用している...

于 2010-11-29T23:07:21.043 に答える