2

数日間これを探していましたが、まったく答えが見つからなかったり、うまく機能していないようです。

GMP4 ビデオ コーデックを使用してエンコードされた AVI ファイルが現在コンピューターにインストールされているので、たとえば Windows Media Player でファイルを再生できます。私がやろうとしているのは、2 つのビデオ ファイルをつなぎ合わせるために、編集目的でファイルを開く/デコードすることです。同じ形式で出力する必要はありませんが、編集用に開いてフレームを取得するだけで、より標準的な形式に出力できます。

私が得ている問題は、この形式用に作成された DirectShow フィルターがないため、それを使用して開くことができないことです (あまり深く取り組んでいませんが、すべてのサンプルでビデオ ファイルの読み込みに失敗しています)。FFMPEG はファイルを読み取ろうとし、ヘッダーが正しくないことを示しますが、それでも読み取りを試みますが、GMP4 コーデックが必要であると述べて終了します。前に述べたように、特定のコーデックがインストールされていますが、FFMPEG はそれに気付かないか、アクセスできないようです。

システムにインストールされたコーデックを使用してビデオ フレームをデコードできるものはありますか? Windows Media Player で何かを実行できるのに、プログラムでそれを繰り返すことができないというのは、私には奇妙に思えます。私は C++ や C# に限定されているわけではありませんが、C# は確実に優先される言語です。

ありがとう、アレックス

4

2 に答える 2

4

私は同じ問題で一日中過ごしました。解決策は、AVISynth をインストールすることです。そうすれば、システムに VfW コーデックがある AVI ファイルを ffmpeg でロードできます。AVI 入力ファイルを ffmpeg に渡す代わりに、AviSource("your-avi-filename") を含む 1 行で .avs ファイルを作成し、ffmpeg に .avs ファイル名を渡します。

独自のビデオ CODEC の input.avi を h263 形式に変換するとします (input.avi がサポートされている h263 フレーム サイズを持っていると仮定します)。

echo AviSource("input.avi") > input.avs
ffmpeg -i inputs.avs -vcodec h263 output.avi
于 2012-05-14T18:14:35.083 に答える
0

Nuno は優れた回答を提供していますが、コマンド ライン変換を避けたい場合は、AForge.Net c# ライブラリを使用して、AfW コーデック、FFMpeg コーデック、さらには DShow コーデックにアクセスできます (一部の CCTV DVR は DShow でエンコードします)。

Windows Media Player を ac# オブジェクトとして開き、そこからフレームを取得する方法もあります。さらに詳しい情報が必要な場合は、私にメールしてください。同様のプロジェクトに取り組んでいるようです。

于 2012-05-21T16:18:25.657 に答える