掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
[DirectShow]IMediaPosition::get_Duration()が失敗してしまいます。 (ID:71778)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
かわせみおはらと言います。 DirectShowにて、ある特定のファイルで動画の長さを取得できないで困っています。 ご教授いただければと思い、書き込みさせていただきました。 環境は以下の通りです。 IDE:Visual Studio 2008 DirectShow: Windows SDK 6.1 言語: C++ 動画:MPEG1 状況は以下の通りです。 1.IMediaPositionを利用した場合。 get_Duration()を呼びだすと、E_NOTIMPLが返ってきてしまいます。 また、IGraphBuilder::Render()呼び出し後に同じようにget_Duration()を呼びだすと、 今度はVFW_E_NO_TIME_FORMAT(0x80040261)が返ってきます。 どちらにしても、長さを取得することができません。 2.IMediaSeekingを利用した場合。 GetCapabilities()を呼び出し、AM_SEEKING_CanGetDurationビットが立っていることを確認し、 その後GetDuration()を呼びだしても、E_NOTIMPLが返ってきてしまいます。 こちらも1.と同様に、Render()呼び出し後VFW_E_NO_TIME_FORMAT(0x80040261)が返ってきます。 同じエンコードをしている他のファイルでは問題なく取得できるのですが、 1秒以下のファイルにて失敗している状況です。 WindowsMediaPlayerも長さの取得に失敗しているらしく、プログレスバーが表示されません。 質問は以下の通りです。 Q1.上記1&2以外の方法で動画の長さを取得することは可能でしょうか? Q2.単純にコーデックなどの違いによる挙動の違いなのでしょうか? Q3.そもそも1秒未満の動画を正常に扱うことができないのでしょうか? 質問ばかりになって申し訳ございませんが、 ご存知の方がいらっしゃいましたら、ご教授よろしくお願い致します。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.