#include <stdio.h>//printf とかで必要
#include<windows.h>//MessageBox とかで必要
#include <wmsdk.h>
#pragma comment(lib, "wmvcore.lib")
#include "wmp.h"
void main(void)
{
IWMMetadataEditor * pEditor = NULL;
IWMHeaderInfo3 * pHeaderInfo = NULL;
IWMPMedia3 * spCurrMedia3 = NULL;
//IWMPMedia3* Media;
//IWMHeaderInfo3
HRESULT hr = S_FALSE;
hr = WMCreateEditor(&pEditor);
hr = pEditor->Open(L"G:\\sampleMovie\\sample.mp3");
pEditor->QueryInterface(IID_IWMHeaderInfo, (void**) &pHeaderInfo);
WM_PICTURE* pPicture = NULL;;
WORD wStreamNum = 0;
WORD wLength = 0;
WMT_ATTR_DATATYPE wmtDataType = WMT_TYPE_BINARY;
hr = pHeaderInfo->GetAttributeByName(&wStreamNum, g_wszWMPicture, &wmtDataType, NULL, &wLength);
if(SUCCEEDED(hr))
{
printf("成功\n");
}
pPicture = (WM_PICTURE*)new BYTE[wLength];
hr = pHeaderInfo->GetAttributeByName(&wStreamNum, g_wszWMPicture, &wmtDataType, (BYTE*)pPicture, &wLength);
if(SUCCEEDED(hr))
{
printf("成功\n");
}
MessageBox(0,0,TEXT("OK"),0);
}
WM_PICTURE structure で調べたら
pwszMIMETypeは image/jpeg
bPictureType が3なので 、前面の写真のようです。
バイナリエディッタでファイルを開いてみた。
jpeg 形式で保存してみる。
// WMPConsoleApplication1.cpp : メイン プロジェクト ファイルです。
#include "stdafx.h"
#include <stdio.h>
#include <wmsdk.h>
#include "wmp.h"
//#pragma comment(lib, "user32.lib")
#pragma comment(lib, "wmvcore.lib")
using namespace System;
using namespace System::IO;
//using namespace System::IO::MemoryStream;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"プログラムスタート");
IWMMetadataEditor * pEditor = NULL;
IWMHeaderInfo3 * pHeaderInfo = NULL;
IWMPMedia3 * spCurrMedia3 = NULL;
HRESULT hr = S_FALSE;
hr = WMCreateEditor(&pEditor);
hr = pEditor->Open(L"G:\\sampleMovie\\Amanda.wma");
hr = pEditor->QueryInterface(IID_IWMHeaderInfo, (void**) &pHeaderInfo);
WM_PICTURE* pPicture = NULL;;
WORD wStreamNum = 0;
WORD wLength = 0;
WMT_ATTR_DATATYPE wmtDataType = WMT_TYPE_BINARY;
hr = pHeaderInfo->GetAttributeByName(&wStreamNum, g_wszWMPicture, &wmtDataType, NULL, &wLength);
if(SUCCEEDED(hr))
{
printf("成功\n");
}
pPicture = (WM_PICTURE*)new BYTE[wLength];
hr = pHeaderInfo->GetAttributeByName(&wStreamNum, g_wszWMPicture, &wmtDataType, (BYTE*)pPicture, &wLength);
if(SUCCEEDED(hr))
{
printf("成功\n");
}
//画像の大きさ
printf("画像の大きさ:%d \n",pPicture->dwDataLen);
FILE *fp; /* ファイル操作で使用する変数 */
fp = fopen( "D:\\sample.jpg" , "wb" );
fwrite( pPicture->pbData , pPicture->dwDataLen , 1 , fp );
fclose( fp );
Console::WriteLine(L"プログラム終了");
Console::ReadLine();
return 0;
}
保存に成功しました。mp3 wma の形式で確認しました。
画像データがないmp3,wmaでは当然画像は取得できません。
ファイルエクスプローラの詳細で画像データが在るか確認できます。




0 件のコメント:
コメントを投稿