動画を複数再生するソフトを作っているのですが
mciを使ったりhspdspを使ったりして試したもののmp4形式が再生できないため
下のコードにて再生できたためこちらをメインに使っています
躓いた点が2点ほど質問よろしいでしょうか?
1、下のソースを改造して動画の一部分を切り取った状態で
再生するということは出来ないでしょうか?
例えば、1280x720の動画の左半分だけを再生的な感じです
2、
複数の動画再生は出来たのですが同時に再生した時に
微妙にずれたりして音がでるので
片方をミュートにしたりしたいのですが(出来れば再生同期して出来ればいいのですが)
ミュートを追加しようと思っても記述方法がよく分からず出来ません。
下のリンクを参考にしてみましたがよく分かりませんでした。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd374329%28v=vs.85%29.aspx
こちらのサイトのコードです http://codetter.com/?p=1096
サイトから直接コピーすると半角スペースがついてエラーになるため
直したものをこちらに貼り付けています
#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 38 newcom 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 0 screen 0,800,800 title "Media Foundation (1.3倍速再生サンプル)" LOADED=0 onexit *lEnd objsize 100,24 pos ginfo_winx-500,0 button gosub "Load",*lFileLoad pos ginfo_winx-400,0 button gosub "Play",*lPlay pos ginfo_winx-300,0 button gosub "Pause",*lPause pos ginfo_winx-200,0 button gosub "Stop",*lStop pos ginfo_winx-100,0 button gosub "Step",*lStep gosub *lFileLoad stop *lFileLoad dialog "mp4;*.avi;*.mpg;*.mpeg",16 if stat=0{ if LOADED{ return }else{ stop } } file=refstr gosub *lLoad IMFPMediaPlayer_SetRate iMFPlayer,1.3 ;1.3倍速再生 return *lLoad if LOADED{ gosub *lRelease } MFStartup MFPCreateMediaPlayer file, 1,0,0,hwnd,iMFPlayer ; ↑0にすると自動再生しない LOADED=1 return *lRelease gosub *lStop IMFPMediaPlayer_Shutdown iMFPlayer MFShutdown return *lPlay if LOADED : IMFPMediaPlayer_Play iMFPlayer return *lPause if LOADED : IMFPMediaPlayer_Pause iMFPlayer return *lStop if LOADED : IMFPMediaPlayer_Stop iMFPlayer return *lStep if LOADED : IMFPMediaPlayer_FrameStep iMFPlayer return *lEnd if LOADED{ gosub *lRelease } mes "MFShutdown:"+stat end