すっごい簡単。Win7以降で動作。
1.3倍速再生するけどピッチが変わらない高速再生になるみたい。
動画のサイズとウインドウのサイズが合っていなくてもアスペクト比は自動調整され、なおかつ拡大処理もきれい。
バグがいくつかあったので作り直しました。
すっごい簡単。Win7以降で動作。
1.3倍速再生するけどピッチが変わらない高速再生になるみたい。
動画のサイズとウインドウのサイズが合っていなくてもアスペクト比は自動調整され、なおかつ拡大処理もきれい。
バグがいくつかあったので作り直しました。
#define IID_IMFPMediaPlayer "{A714590A-58AF-430a-85BF-44F5EC838D85}"#usecom IMFPMediaPlayer IID_IMFPMediaPlayer "{}"#comfunc IMFPMediaPlayer_Play 3#comfunc IMFPMediaPlayer_Pause 4#comfunc IMFPMediaPlayer_Stop 5#comfunc IMFPMediaPlayer_FrameStep 6#comfunc IMFPMediaPlayer_SetRate 10 float#comfunc IMFPMediaPlayer_Shutdown 38newcom iMFPlayer,IMFPMediaPlayer#uselib "Mfplay"#func MFPCreateMediaPlayer "MFPCreateMediaPlayer" wstr,int,int,int,int,var#uselib "Mfplat"#func MFStartup "MFStartup" int,int#func MFShutdown "MFShutdown"#define MFSTARTUP_NOSOCKET 0x1#define MFSTARTUP_LITE (MFSTARTUP_NOSOCKET)#define MFSTARTUP_FULL 0screen 0,800,800title "Media Foundation (1.3倍速再生サンプル)"LOADED=0onexit *lEndobjsize 100,24pos ginfo_winx-500,0button gosub "Load",*lFileLoadpos ginfo_winx-400,0button gosub "Play",*lPlaypos ginfo_winx-300,0button gosub "Pause",*lPausepos ginfo_winx-200,0button gosub "Stop",*lStoppos ginfo_winx-100,0button gosub "Step",*lStepgosub *lFileLoadstop*lFileLoaddialog "mp4;*.avi;*.mpg;*.mpeg",16if stat=0{if LOADED{return}else{stop}}file=refstrgosub *lLoadIMFPMediaPlayer_SetRate iMFPlayer,1.3 ;1.3倍速再生return*lLoadif LOADED{gosub *lRelease}MFStartupMFPCreateMediaPlayer file, 1,0,0,hwnd,iMFPlayer; ↑0にすると自動再生しないLOADED=1return*lReleasegosub *lStopIMFPMediaPlayer_Shutdown iMFPlayerMFShutdownreturn*lPlayif LOADED : IMFPMediaPlayer_Play iMFPlayerreturn*lPauseif LOADED : IMFPMediaPlayer_Pause iMFPlayerreturn*lStopif LOADED : IMFPMediaPlayer_Stop iMFPlayerreturn*lStepif LOADED : IMFPMediaPlayer_FrameStep iMFPlayerreturn*lEndif LOADED{gosub *lRelease}mes "MFShutdown:"+statend