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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0830
pandaHSP Let で mp3情報取得2未解決


panda

リンク

2008/8/30(Sat) 23:29:30|NO.18787


mci "open music.mp3 alias bgm" mci "play bgm" mci "status bgm length" dialog stat

通常このように取得できる曲の長さですが、HSPLet では、position しかサポートされてないみたいです…。
HSPLet で mp3(or wav,wmaでも) 曲の長さを調べる方法はあるのでしょうか。

上記のスクリプトを let 上で実行させると、ゼロが帰ってきます。

よろしくお願いします。



この記事に返信する


inovia

リンク

2008/8/31(Sun) 13:07:08|NO.18804

HSPLet上で試していませんが、以下のはどうですか?
まだ完全に解析ができていないので、暫定的で制限が多いですが。


//再生時間=データサイズ×8/ビットレート(MP3の場合) //以下のサンプルはMPEG1 Layer3 CBR でかつID3 v2.?タグがない場合に正常に作動します。 //MPEG2 Layer3だったり、VBRだったり、ID3 v2.?タグだったりすると読めません。 //ただし、ID3 v1タグは入っていても読み込めます。 //http://java-house.jp/ml/archive/j-h-b/032040.html(MP3の長さ取得) //http://pub.ne.jp/matsuk/?entry_id=1019865(ID3の仕様) //http://eternalwindows.jp/sound/mp3/mp309.html(MP3の仕様) //↑ただフレームヘッダの内容が一部間違っている気もしますので以下のサイトも見てください。 //http://azskyetc.client.jp/program/shout2.html dialog "mp3",16 if stat=0:end sdim buf,64 bload refstr,buf,10,0 temp=(peek(buf,2) and 0xf0)>>4//上位4ビットをシフト bitr1=0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0//MPEG1 Layer3 CBR bitr2=0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0//MPEG2 Layer3 CBR mes ""+bitr1.temp+" bit/s"//ビットレート表示 exist refstr mes "約"+strsize*8/bitr1.temp/1000+" 秒"//長さ取得



panda

リンク

2008/8/31(Sun) 17:23:58|NO.18812

返信ありがとうございます。

なるほど、直接 MP3 を解折する方法がありましたね。
正直、それは思いつきませんでした。

ヘッダーに曲の長さが書かれているものもあるみたいなので、それを利用するのもいいかもしれないですね…。



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