0

DirectShowを介してビデオを読むC++プログラムを喜んで改善していました。今、私はまたうまく機能しているビデオを書こうとしました。
次に、適切なコーデックの検索が行われました(vob / oggについて考えました)...
しかし、今日、突然、ビデオの表示が非常に遅くなりました。
以前にインストールした追加のコーデックをアンインストールしたので、ビデオはまったく再生されません。
その理由はエラーのようCComQIPtr< IMediaSeeking, &IID_IMediaSeeking > pSeeking( pGraph );hr = pSeeking->SetPositions( &Startzeit, AM_SEEKING_AbsolutePositioning,NULL, AM_SEEKING_NoPositioning );、その時点ではSetPositionはサポートされていません...実際にはいつでも。
またhr=pSeeking->GetDuration(&duration)、0を返しAM_MEDIA_TYPE mt;、framepersecondを取得するために使用する対応するformat-typeは空です。(pbFormatはNullです)。

重要なものを意図せずにインストール/アンインストールしましたか?
同様の問題について聞いたことがありますか?
私が言ったように、数日前、同じビデオとソースコードが正常に機能していました(私は今までに変更によってコメントしました)。
もっとソースコードをあげたいのですが、ちょっと長いですが、参考になればもちろん追加します。

よろしく、
ジュリアン

ここにソースコードがあります:http://pastebin.com/jMdWejH9
もちろん、それはコード全体の一部にすぎませんが、ここにすべてのフィルターが挿入されているので、これが主要な部分だと思います。
これは実際には数日前まで機能したことを覚えておいてください!^^
最初の部分は変数の宣言です(私が知る限り、すべての重要な変数はfasであり、2番目は呼び出される関数です)

4

1 に答える 1

1

DirectShowでファイルをレンダリングする場合、フレームワークはシステムにインストールされているコーデック/フィルターを使用します。一部のコーデックを削除すると、レンダリングできないため、別のコーデックが必要になるか、破損します。フレームワークが使用するフィルターを知るには、GraphEditまたはGraphStudioNextでファイルをレンダリングしてみてください。(これらのプログラムの1つにファイルをドロップして、フィルターグラフを参照してください)。コーデックパックffdshow-tryoutsプレーヤー用のHaaliMediaSplitterで最高の結果が得られました。

于 2012-11-13T12:09:02.787 に答える