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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
1117
Rmdデスクトップの高速キャプチャー9解決


Rmd

リンク

2016/11/17(Thu) 15:39:05|NO.77335

現在デスクトップをキャプチャーして、gifアニメーションを作成するソフトを作りました。
ですが、やばり、デスクトップキャプチャーなるもの、処理速度がとてつもなく遅く
どうにもならず使い物になりません
どうにか、高速でデスクトップキャプチャーできないものか。
HSPで、高速デスクトップキャプチャーは不可能なんでしょうか。
Gif 形式で難しいなら、動画形式でも構いません。

分かる方教えてくださいお願いします



この記事に返信する


Rmd

リンク

2016/11/17(Thu) 15:47:38|NO.77336

追記


最悪画質が悪くなっても白黒でも大丈夫です。
処理速度を優先したいです。



KA

リンク

2016/11/17(Thu) 18:50:37|NO.77337

どういうスクリプトなのか分からないと何とも言えません。
(まさかキャプチャーして都度書き出しはしてないよね)

画面の画素数でも影響されるし、具体的に基準としたい画素数と
1秒で何枚以上、何秒撮りたいのか曖昧です。



Rmd

リンク

2016/11/17(Thu) 18:55:53|NO.77338

デスクトップの状態をhspスクリーンに描画
その描画したものをメモリに保存っていう形です。
キャプチャー都度書き出しではなく、最後に一気に結合してます。

2秒に1枚程度10〜20秒くらいを撮りたいと思ってます。
よろしくお願いいたします



スペース

リンク

2016/11/17(Thu) 21:02:14|NO.77339

実は以前、自分も録画ソフトを作ろうとしたことがあります。
そのときにスレを建てたので貼っておきます。何かの参考になれば幸いです。
http://hsptv.sakura.ne.jp/play/pforum.php?mode=pastwch&num=71183
(このソフトは結局、普通の録画ソフトと同等の重さ、ui関連でバグでまくってほったらかしです)



MillkeySoftware

リンク

2016/11/18(Fri) 00:25:46|NO.77340

[基本の処理]
デスクトップHDCを取得 : GetDC(NULL)
デスクトップと同じ操作用HDC を作成 : CreateCompatibleDC(NULL)
データセクション用HBITMAP 作成 : CreateDIBSection
上記データセクションを操作用HDC に連結する : SelectObject

[データ処理用]
デスクトップHDCの内容を操作用HDC にコピー : BitBlt
データセクションで作成したVRAM領域から自由にデータを頂く

[終了処理]
すべてのオブジェクトおよび作成した HDC の解放処理
:------------------------------------------------------
以上。が基本的な処理の仕方です。
なぜHSPだと重いのかいうと、それは画像形式の違いでその処理に時間がかかる為です。
デスクトップHDC は基本、色深度 32Bit で作成されています。
HSPウィンドウは基本、色深度 24Bit で作成されています。
32Bit → 24Bit に原色処理をするので処理が著しく遅くなるのが重い原因です。


#uselib "user32.dll" #cfunc GetDC "GetDC" int #func ReleaseDC "ReleaseDC" int,int #uselib "gdi32.dll" #func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int ///開始処理 *CreateInit onexit *p_end DesktopHDC = GetDC(0) ///↑デスクトップが破棄されない限りハンドルは同一の為 ///メインループ外で取得しておくこと。 ///メインループ *main ///↓コメントアウト部分は、ダメな方法 ///メインループ内で取得と解放を行うとその分重くなるので ///連続で画面取得する場合は、メインループ外で取得しとくこと。 //DesktopHDC = GetDC(0) await 100 BitBlt hdc,0,0,ginfo(20),ginfo(21),DesktopHDC,0,0,0x00CC0020 ///↑BitBlt はデスクトップ 32Bit から 24Bit に変換しているので ///重くなっていると思われる。 redraw 1 ///↑redraw 1 まぁHSP ではいつも通りの重たい命令w //ReleaseDC 0,DesktopHDC goto *main ///終了処理 *p_end ///↓いらなくなったら必ず解放すること。 ReleaseDC 0,DesktopHDC end



Rmd

リンク

2016/11/18(Fri) 13:06:42|NO.77341

すみません
書き忘れがありました。
出先なので、詳しくは書けないんですが、
hdc に保存したものを、gifアニメーションにする際に時間がかなりかかるのです。
キャプチャの速度に関しては、限界があるようなので諦めます。
gifアニメーションの作成はimgctl.dllを使用しております。

標準命令で、gif が作れて、かつ高速なんてそんな夢のような話は無いんですかね



MillkeySoftware

リンク

2016/11/19(Sat) 16:15:22|NO.77346

んー。圧縮はどーしても大量のデータを処理しないといけないから、HSPだけでは無理だと思うよ。
ただ、LZW にOSが対応していれば別だけど、そのような機能があるかどうか。



Rmd

リンク

2016/11/20(Sun) 12:02:24|NO.77349

そうですかーやはり難しいみたいですね。
現状の速度で我慢します
ありがとうございました



Rmd

リンク

2016/11/20(Sun) 12:02:37|NO.77350

解決



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