ページ 11

動画再生時の総再生時間取得について

Posted: 2010年11月12日(金) 22:11
by パンダ太郎
使用ソフト:Microsoft Visual C++ 2010 Express
使用ライブラリ:DXライブラリ

DXライブラリを用いて動画再生を行うプログラムを作っています。
TellMovieToGraphを使用し、再生位置を表示することは出来ましたが、
動画ファイルの長さ(総再生時間)の取得する方法はありますでしょうか?
ご教授のほど、よろしくお願いします。

Re:動画再生時の総再生時間取得について

Posted: 2010年11月12日(金) 23:58
by Dixq (管理人)
> パンダ太郎さん

こんにちは。
DXライブラリの公開関数には無いようなのでヘッダを見てみました。

extern int GetMovieTotalFrameToGraph( int GraphHandle ) ; // ムービーの総フレーム数を得る( Ogg Theora でのみ有効 )
extern LONGLONG GetOneFrameTimeMovieToGraph( int GraphHandle ); // ムービーの1フレームあたりの時間を得る

この2つで計算出来ないでしょうか。
ただ、動画時間に関する情報は大抵の動画のヘッダについていますから、自分で取得する手もあるかと思います。

例えばaviファイルであれば
http://www.elf.info.gifu-u.ac.jp/terada ... 3/avi.html

AVIメインヘッダーの
DWORD dwMicroSecPerFrame; //フレーム間の間隔をマイクロ秒単位で指定する。
・・・
DWORD dwTotalFrames; //ファイル内のデータのフレームの総数を指定する。

で上記と同じ事が解るのではないかと思います。

Re:動画再生時の総再生時間取得について

Posted: 2010年11月13日(土) 01:00
by パンダ太郎
>Dixq (管理人)さん
こんばんは、早速のご回答ありがとうございます。

>extern LONGLONG GetOneFrameTimeMovieToGraph( int GraphHandle ); // ムービーの1フレームあたりの時間を得る
これを利用しまして動作を行うことが出来ました。
ありがとうございます。

>ただ、動画時間に関する情報は大抵の動画のヘッダについていますから、自分で取得する手もあるかと思います。
ヘッダー情報については、まだまだ知らないことが多いので、がんばりたいと思います。
ありがとうございました!

また壁にぶつかったときはよろしくお願いします。