DVDタイトルのチャプター数を取得する
ここでは、DVDタイトルに含まれるチャプター数を取得する方法を説明したいと思います。 (注意)ここの例では、サンプルを簡潔にするためにエラー処理を書いていません。
DVDタイトルのチャプター数取得サンプル
このコードは、DVDがドライブに入っていない場合には動作しません。 私の環境では何故かVisual Studioから起動すると動作しませんでした。 もし、動かない場合にはコマンドプロンプトから実行してみてください。
#include <stdio.h>
#include <dshow.h>
int
main()
{
IDvdGraphBuilder *pDvdGraphBuilder;
IDvdInfo2 *pDvdInfo2;
CoInitialize(NULL);
CoCreateInstance(CLSID_DvdGraphBuilder,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDvdGraphBuilder,
(LPVOID *)&pDvdGraphBuilder);
AM_DVD_RENDERSTATUS stat;
pDvdGraphBuilder->RenderDvdVideoVolume(NULL,
AM_DVD_HWDEC_PREFER, &stat);
pDvdGraphBuilder->GetDvdInterface(IID_IDvdInfo2,
(LPVOID *)&pDvdInfo2);
/*
この例では、0番目(一番最初)のTitleに含まれる
Chapterの数を取得しています。
1番目(もしくはそれ以降)のTitleに含まれるChapterの数を
取得するには、一つ目の引数を変更してご利用ください。
*/
ULONG numChapters;
pDvdInfo2->GetNumberOfChapters(0, &numChapters);
printf("number of chapters in title 0 : %u\n", numChapters);
pDvdInfo2->Release();
pDvdGraphBuilder->Release();
CoUninitialize();
return 0;
}
GetNumberOfChaptersの一つ目の引数は、全体のChapter数を表します。 GetNumberOfChaptersを利用するためにはTitle番号が必要ですが、DVDに含まれる総Title数はGetDVDVolumeInfoを利用すると取得できます。