HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1030
k.MCIでの動画フルスクリーン再生時の画質について6解決


k.

リンク

2011/10/30(Sun) 01:11:35|NO.42725


dialog "avi",16 bgscr 4,ginfo(20),ginfo(21) mmload refstr,0,2+16 ;フルスクリーン+再生したら終了 mmplay 0 end

上のようにmmplayで動画をフルスクリーン表示にして再生すると、
windows media player(以下WMP)で同じ動画を再生したものと比べて
以下の点で画質・動作が違います
・mmplayは、アンチエイリアスがかかっていないが、WMPはかかっている
・全体の色味が違う(例えば、WMPでは完全な黒の部分が、mmplayだとグレーっぽい)
・mmplayで再生するとコマ落ちする(重い)がWMPだとしない。

どうにかして、WMPのように再生できないでしょうか?
ちなみに、mciを使っても結果は同様でした。
もしかして、WMPの方はGPUレンタリングでもしてるんですかね?

環境はHSP3.2+Win 7+WMP 12です。
よろしくお願いします。



この記事に返信する


k.

リンク

2011/10/30(Sun) 01:43:57|NO.42726

すいません。タイトルはMCIですけど、中身はmmplayです。
まぁ、mciでも同様なんですけどね
お詫び申し上げます。



inovia

リンク

2011/10/30(Sun) 16:49:29|NO.42740

確認はとっていませんがMCIの場合、動画再生には古いビデオレンダラを使用しており、
Windows Aeroが有効だったり別の動画が既に再生中だったりなど、
ビデオオーバーレイが使用中の場合は通常のGDIで描画してしまうため、
激重になったり、拡大縮小時に汚くなったりします。

Aeroを切れば改善されると思いますが、不便ですので拙作の hspdsp.dll を使うことをお勧めします。
レンダラにVMR7、9やEVRを使うと改善されるはずです。

hspdsp.dll Ver 1.09
http://blog.tkooler.net/Entry/183/


#include "hspdsp.as" dsp_Init ; 初期化 dialog "*", 16, "メディアファイル" if stat == 0 : end // VMR7レンダラーで開く dsp_Open refstr, 2/*OPEN_VMR7*/, hwnd, 0, 0 onexit *exit ; 終了時開放するため dsp_Play hwnd, 0, 0, 640, 480 ; 0,0 座標に 640x480 の大きさで表示 if stat != 0 : dialog "VMR7が使えないようです。" // フルスクリーン処理 dsp_FullScreen 1 wait 500 // 5秒待機 dsp_FullScreen 0 stop *exit dsp_Close ; メディアファイルを閉じる dsp_Exit ; 開放 end



k.

リンク

2011/10/30(Sun) 17:18:33|NO.42743

なるほど、やはりCPUによるレンタリングになってしまっていた、ということですね。
ありがたくinoviaさんのプラグインを使わせてもらいます。

…と言いたいところなのですが、ご掲示いただいたサンプルの
dsp_Open refstr, 2/*OPEN_VMR7*/, hwnd, VMR_DEFAULT_MODE, 1
の行でError 1(システムエラーが発生しました)で落ちてしまいます。
aviファイルでは正常に動作しましたが、wmvファイルを選択すると落ちるようです。

付属のsample01.hspの方はwmvを選択しても落ちずに、綺麗に再生されました。
しかし、sample02.hspからは今までと同じような表示でした。

ご返答ありがとうございました。



k.

リンク

2011/11/1(Tue) 00:47:16|NO.42766

う〜ん。
色々と試して見ましたが、どうやらwmvをVMR7で読み込むのはできないっぽいですね。。。
デフォルトのレンダラーだときれいにレンタリングできないですし。

もしかしたら、環境がいけないのかもしれませんが。
とりあえず、MCIで我慢します。
何か解決方法がありましたら、ご教授いただけると嬉しいです。



A

リンク

2011/11/1(Tue) 22:50:46|NO.42783

 

#define CLSID_FilterGraph "{E436EBB3-524F-11CE-9F53-0020AF0BA770}" #define IID_IGraphBuilder "{56A868A9-0AD4-11CE-B03A-0020AF0BA770}" #usecom IGraphBuilder IID_IGraphBuilder CLSID_FilterGraph #comfunc AddFilter 3 comobj,wstr #comfunc EnumFilters 5 var #comfunc AddSourceFilter 14 wstr,wstr,var #define CLSID_CaptureGraphBuilder2 "{BF87B6E1-8C27-11D0-B3F0-00AA003761C5}" #define IID_ICaptureGraphBuilder2 "{93E5A4E0-2D50-11D2-ABFA-00A0C9C6E38D}" #usecom ICaptureGraphBuilder2 IID_ICaptureGraphBuilder2 CLSID_CaptureGraphBuilder2 #comfunc SetFiltergraph 3 comobj #comfunc RenderStream1 7 nullptr,nullptr,comobj,nullptr,comobj #comfunc RenderStream2 7 nullptr,var,comobj,nullptr,comobj #comfunc RenderStream3 7 nullptr,var,comobj,nullptr,nullptr ;------------------------------------------------------------------------------- ;#define CLSID_ "{70E102B0-5556-11CE-97C0-00AA0055595A}";VideoRenderer #define CLSID_ "{B87BEB7B-8D29-423F-AE4D-6582C10175AC}";VideoMixingRenderer7 ;#define CLSID_ "{51B4ABF3-748F-4E3B-A276-C828330E926A}";VideoMixingRenderer9 ;#define CLSID_ "{FA10746C-9B63-4B6C-BC49-FC300EA5F256}";EnhancedVideoRenderer ;------------------------------------------------------------------------------- #usecom IBaseFilter "{56A86895-0AD4-11CE-B03A-0020AF0BA770}" CLSID_ #comfunc GetClassID 3 var #usecom IEnumFilters "{56A86893-0AD4-11CE-B03A-0020AF0BA770}" #comfunc EnumFilters_Next 3 int,var,var #usecom IVideoWindow "{56A868B4-0AD4-11CE-B03A-0020AF0BA770}" #comfunc put_FullScreenMode 36 int #usecom IMediaControl "{56A868B1-0AD4-11CE-B03A-0020AF0BA770}" #comfunc Play 7 #module #defcfunc ClassID var p1 ID=strf("{%08X-%04X-%04X-",lpeek(p1),wpeek(p1,4),wpeek(p1,6)) ID+strf("%02X%02X-%02X%02X",peek(p1,8),peek(p1,9),peek(p1,10),peek(p1,11)) ID+strf("%02X%02X%02X%02X}",peek(p1,12),peek(p1,13),peek(p1,14),peek(p1,15)) return ID #global dialog "wmv",16 if stat=0 : end newcom cFG,IGraphBuilder newcom cSF AddSourceFilter cFG,refstr,getpath(refstr,8),cSF newcom cCGB2,ICaptureGraphBuilder2 SetFiltergraph cCGB2,cFG newcom cVR,IBaseFilter AddFilter cFG,cVR,"Video Renderer" i=$73646976,$00100000,$AA000080,$719B3800 RenderStream1 cCGB2,cSF,cVR if stat : RenderStream2 cCGB2,i,cSF,cVR i=$73647561 RenderStream3 cCGB2,i,cSF newcom cEF EnumFilters cFG,cEF dimtype cBF,6,10 EnumFilters_Next cEF,10,cBF,i repeat i GetClassID cBF(cnt),i mes ClassID(i) loop ;put_FullScreenMode cFG,-1 Play cFG stop



k.

リンク

2011/11/6(Sun) 21:00:13|NO.42846

A様、レスありがとうございます。
VMR7やVMR9でwmvを再生させる事が出来ました。
画質も良いようです。

しかし、定数などの意味を理解することが難しく、
自分のアプリに応用するのが難しそうでしたので、動画形式をaviにして、
inoviaさんのライブラリを使わせてもらうことにしました。

レスが遅くなり申し訳ございませんでした。
一応解決とさせて頂きます。



ONION software Copyright 1997-2021(c) All rights reserved.