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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1103
cooleanMCIの再生時間の取得について7解決


coolean

リンク

2008/11/3(Mon) 16:36:19|NO.20593

はじめまして。
MCI関連ということで、HSPには関係ないかもしれませんが、
そもそもプログラムが間違っているかもしれないので質問させて頂きます。


sdim name,300 dialog "mp3",16,"音楽ファイル" name=refstr if stat=0 : end title ""+name mci "open \""+name+"\" alias bgm" mci "set bgm time format milliseconds" onexit *syuryo mci "play bgm" ztime=gettime(7) : alltime=0 *main ;経過時間計算処理 time=gettime(7) deltatime=(time+1000-ztime)\1000 ;1フレームあたりの時間 alltime+=deltatime ;deltatimeの合計時間 ztime=time ;再生時間取得 mci "status bgm position" : alltime2=stat ;上2つの差から誤差を求める deltaalltime=alltime-alltime2 deltaalltime2+=deltaalltime count++ ;結果描画 redraw 0 color 255,255,255 : boxf color 0,0,0 : pos 0,0 mes "現在時間(理論値):"+alltime mes "現在時間(測定値):"+alltime2 mes "      誤差:"+deltaalltime mes "    平均誤差:"+(deltaalltime2/count) redraw 1 wait 1 goto *main *syuryo mci "close bgm" end

このようなソースがあるのですが、平均誤差が少しおかしい数値になってしまいます。
それは曲によってまちまちで、平均誤差が安定することもあれば、
絶対値がだんだん大きくなってしまったりすることがあります。
具体的には、1分半の曲で0.3秒ほどのズレが出てしまいます。
この原因は何なのでしょうか。
しばらく考えているのですが、これといった結論が出てきません。

最初にも書きましたが、もしかしたらMCI関連の問題かもしれません。
もしそうでしたら申し訳ございません。

ぜひよろしくお願いいたします。



この記事に返信する


h20e02

リンク

2008/11/8(Sat) 12:26:52|NO.20698

mciを使ってメディアプレーヤーを作ったばっかりなので分かりますが。
あなたのためにサンプルを作成しますのでもうしばらくお待ちください。
ちなみに、mciでメディアの長さを取得してみましたか?
その方法はサンプルに記載します。



coolean

リンク

2008/11/8(Sat) 20:53:46|NO.20703

サンプル、わざわざありがとうございます。
再生時間を取得してみましたが、status bgm positionで求めた時間は
再生時間と同じ時間にストップしました。

それから、最初に挙げたサンプルを友人に実行してもらい、
同じMP3ファイルを再生してもらった時には、平均誤差は安定したそうです。
環境依存のような気もしますが…どうなんでしょう。



h20e02

リンク

2008/11/10(Mon) 19:01:40|NO.20726

まだサンプルを渡していないのですが・・・
NO.20698の2行目に
>あなたのためにサンプルを作成しますのでもうしばらくお待ちください
と記述しましたが、少し忙しくて、作成できませんでした。
しかしNo.20698の一行目に
>mciを使ってメディアプレーヤーを作ったばっかりなので分かりますが
と記述しました。
そのプログラムを渡したいと思います
以下のURLからダウンロードしてください。
http://l0wqeg.bay.livefilestore.com/y1pbVBGnFv9a_Io9pLoQ-D_hFkvij9jPelvTsIuMjxYmSLX_TXv9Og9MPXBoFsdFsQPj7qdC3MiXfw/HML_Pac.zip?download
うまくいかなければ
http://cid-a39c0a1ffdbe0ec0.skydrive.live.com/self.aspx/%e5%85%ac%e9%96%8b/HSP/HML|_Pac.zip
を開きダウンロードしてください
ちなみにソースファイルをコピーして編集したりしているうちに
どれが最新のソースファイルかがわからなくなりました。
わかり次第このページに返信を追加してダウンロードできるようにしますので
ソースファイルはもうしばらくお待ちください。

ちなみにHSP Ver3.0 API module & macro Libraryとhspext.asを使用しています。
作成環境のOSはWindows Vistaです。
動作環境のOSはWindows 2000/XP/Vistaです。



inovia

リンク

2008/11/10(Mon) 19:14:03|NO.20727

横レス失礼しまーす。
サンプルのバージョン情報のところで個人情報らしき情報が丸見え。(汗^_^;
大丈夫なのかなとツッコんでみました。



tsuka

リンク

2008/11/10(Mon) 20:15:12|NO.20729

これ試してみましたが
一度ウィンドウやらデバッグウィンドウを移動させるとものすごい勢いでずれていきますね
マイナスの方向に
関係ないか…



tsuka

リンク

2008/11/10(Mon) 20:21:38|NO.20731

あーこれって言うのはcooleanさんのソースの方です



coolean

リンク

2008/11/11(Tue) 21:38:25|NO.20747

>h20e02さん
ありがとうございます。
失礼ですが、本題とあまり関係ない気がするのですが…^^;
単にメディアプレイヤーを作るだけであれば、毎フレームMCIに現在の時刻を聞けば済む話ですので…

>tsukaさん
ミリ秒単位でしか判定していないので1秒以上ドラッグするとひどいことになりますね。
これは秒単位でも判定するようにすれば解決しますが…

ずれる現象についてですが、しばらく調べましたところ、やはり環境のせいのようです。
SigmaTel Audioを使用していると、この現象が起こりやすいようです。
何人かの友人に実験してもらったところ、SigmaTel Audioを使用しているパソコンにずれがよく表れました。
どうやらサンプリングレートの変換に問題があるようです…。
わざわざサンプルまで出して頂けるというのに申し訳ありませんが、
原因が環境であるということが分かってしまったので、解決とさせて頂きます。
回答してくださった皆様、ありがとうございました。



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