1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <stdio.h>//printf とかで必要 #include<windows.h>//MessageBox とかで必要 #include <wmsdk.h> #pragma comment(lib, "wmvcore.lib") void main( void ) { printf ( "コンソール表示開始\n" ); HRESULT GetCodecNames(IWMCodecInfo3* pCodecInfo); IWMCodecInfo3* pCodecInfo = NULL; IWMProfileManager* pProfileManager = NULL; HRESULT hr = S_FALSE; DWORD cCodecs = 0; hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); hr = WMCreateProfileManager(&pProfileManager); hr = pProfileManager->QueryInterface(IID_IWMCodecInfo3, ( void **)(&pCodecInfo));\ //システム上でサポートされているオーディオコーデックの数を取得します。 hr = pCodecInfo->GetCodecInfoCount(WMMEDIATYPE_Audio, &cCodecs); if (SUCCEEDED(hr)) printf ( "オーディオコーデックの数: %d\n\n" , cCodecs); else { printf ( "オーディオコーデックの数を取得できませんでした。\n" ); return ; } MessageBox(0,0,TEXT( "OK" ),0); } |
コーデックの数が正しいか調べてみたがよく分からない。
Windows Media Player のヘルプ-バージョン情報-テクニカルサポート情報
でコーデックを確認してみた。
コーデック名の取得
参考:http://msdn.microsoft.com/ja-jp/library/windows/desktop/dd743771(v=vs.85).aspx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include <stdio.h>//printf とかで必要 #include<windows.h>//MessageBox とかで必要 #include <wmsdk.h> #pragma comment(lib, "wmvcore.lib") void main( void ) { printf ( "コンソール表示開始\n" ); HRESULT GetCodecNames(IWMCodecInfo3* pCodecInfo); IWMCodecInfo3* pCodecInfo = NULL; IWMProfileManager* pProfileManager = NULL; HRESULT hr = S_FALSE; DWORD cCodecs = 0; WCHAR * pwszCodecName = NULL; DWORD cchCodecName = 0; hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); hr = WMCreateProfileManager(&pProfileManager); hr = pProfileManager->QueryInterface(IID_IWMCodecInfo3, ( void **)(&pCodecInfo));\ //システム上でサポートされているオーディオコーデックの数を取得します。 hr = pCodecInfo->GetCodecInfoCount(WMMEDIATYPE_Audio, &cCodecs); if (SUCCEEDED(hr)) printf ( "オーディオコーデックの数: %d\n\n" , cCodecs); else { printf ( "オーディオコーデックの数を取得できませんでした。\n" ); return ; } /* ----------- オーディオコーデックの名前を取得 ----------- */ //すべてのオーディオコーデックをループ。 for ( DWORD dwCodecIndex = 0; dwCodecIndex < cCodecs; dwCodecIndex++) { //まず、名前のサイズを取得する。 hr = pCodecInfo->GetCodecName(WMMEDIATYPE_Audio, dwCodecIndex, NULL, &cchCodecName); if (FAILED(hr)) { printf ( "コーデック名のサイズを取得できませんでした。\n" ); return ; } //適切なサイズの文字列を割り当てます。 pwszCodecName = new WCHAR [cchCodecName]; if (pwszCodecName == NULL) { printf ( "メモリを割り当てられませんでした\n" ); return ; } // コーデック名を取得します。 hr = pCodecInfo->GetCodecName(WMMEDIATYPE_Audio,dwCodecIndex,pwszCodecName,&cchCodecName); if (FAILED(hr)) { delete [] pwszCodecName; printf ( "コーデック名を取得できませんでした。\n" ); return ; } // コーデック名を出力する。 printf ( "%d %S\n" , dwCodecIndex, pwszCodecName); // 次の繰り返しのためにクリーンアップします。 delete [] pwszCodecName; pwszCodecName = NULL; cchCodecName = 0; } MessageBox(0,0,TEXT( "OK" ),0); } |
よくわからないな・・・・・
0 件のコメント:
コメントを投稿