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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0804
ぱおGIFの再生速度をmciで変更する方法2解決


ぱお

リンク

2020/8/4(Tue) 14:27:52|NO.91122

データの読み込み時などに表示するプログレスバーのようなものをGIFアニメーションで
行おうと思い、Kpanさんのmciを使用する方法を試したのですが、GIFのアニメーション速度が
本来の速度よりとても遅くなっていました。
そこで、mciの再生速度を変更する方法を試したのですが、うまくいきませんでした。

過去スレをあさってみて、GDI?というものを使えばできると聞いたのですが、サンプルソースを
見た感じとてもややこしかったので、mciを使った方法でGIFの再生速度が変更できればと思い質問します。

mciではGIFの再生速度の変更は無理なのでしょうか...それともmciの再生速度の変更方法が間違っているのでしょうか...



この記事に返信する


あらや

リンク

2020/8/10(Mon) 23:11:04|NO.91151

>それともmciの再生速度の変更方法が間違っているのでしょうか
ソースを見ていないので間違っているかどうかが分かりませんが
mciでGIFの再生速度の変更というのは基本的には無理だと思った方が良いです。

少々強引な方法ですが、
Kpanさんのソースを改変して
経過時間を取得して再生位置がズレていたら
時間に合わせて再生位置を設定するという手法でやってみました。

; MCIによるGIFファイル表示サンプルソース (by Kpan) [HSP2/3] ///////////////////////////////////追加///////////////////////////////////////////////////////////// #uselib "kernel32.dll" #func GetTickCount "GetTickCount" //////////////////////////////////////////////////////////////////////////////////////////////////// onexit *exit dialog "gif;*.jpg", 16, "画像ファイル" if stat = 0 : stop mci "open \""+refstr+"\" alias A wait type mpegvideo style child parent "+hwnd+"" mci "put A window at 50 100 0 0" ///////////////////////////////////追加///////////////////////////////////////////////////////////// mci "set A time format ms"; // 時間フォーマットをミリ秒単位にする mci "status A length"; // 全体の長さを取得 all_ms = stat; //////////////////////////////////////////////////////////////////////////////////////////////////// mci "play A repeat" ///////////////////////////////////追加///////////////////////////////////////////////////////////// time_s = GetTickCount(); // 再生開始時間を取得 *playing mci "status A position"; // 現在のシーク位置を取得 seek_pos = stat; time_n = GetTickCount() - time_s; // 再生してからの経過時間を取得 if( seek_pos != time_n ) { // 経過時間とシーク位置が合わない場合 if( time_n >= all_ms ) { // ループ時は再生開始時間を再取得 time_s = GetTickCount(); } else { // シーク位置を経過時間に合わせる seek_pos = time_n; mci "seek A to "+seek_pos; } } await 10; goto *playing; //////////////////////////////////////////////////////////////////////////////////////////////////// *exit mci "close A" end
Kpanさんのコメントはほぼ削除して
追加した箇所だけコメントを入れておきました。

欠点としては時間を取得するときの精度が低い事と、
アニメーションをスキップする可能性があるので
場合によってはカクカクして見えることがあるかもしれません。



ぱお

リンク

2020/8/12(Wed) 12:52:05|NO.91155

>mciでGIFの再生速度の変更というのは基本的には無理だと思った方が良いです。
なるほど...あきらめるしかないですね(´;ω;`)

サンプルソースありがとうございます!!
試しにgifを再生してみたのですが、やっぱり本来よりかは遅くなってしまいますね...

mciでのGIFファイル再生についてはあきらめることにします。
今回はありがとうございました!



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