DelphiでMP3/wavオーディオファイルの長さ(分と秒)を取得するにはどうすればよいですか?MP3/wavオーディオファイルの長さ
答えて
の数をカウントする必要があります。フレームヘッダーの1つからビットレートを取得できます。もちろん、これは、フレームごとに異なるレートを持つことができる可変レートのMP3の場合は機能しません。
使用Header Layout(それだけで4バイトです):
開きます同期ヘッダを見つける まで読み取ることでストリーム
最初のフレームヘッダの先頭を検索でMP3、これは11の連続ビットが1に設定されています。この は12でしたが、MPEGバージョン2.5が可能になるように修正されました。
MPEGバージョンIDを決定します。ビットレートを見つける目的のために、V2.5は、V2と同じである
層説明
ビットレートインデックス
MPEGバージョンを使用して、層の説明及びビットを読むを決定レートインデックス、リンクされたヘッダー参照のビットレートインデックステーブルからの実際のビットレートを決定する
ファイルサイズをビットレートでキロビット((8 *サイズ/バイト)/ 1000)で分けて秒
デルファイのサンプルは見つかりませんでしたが、参照用にこの手法を使用しているC# implementationがあります。 getLengthInSecondsメソッドを参照してください。
+1、長さを秒単位で計算するコードは、私が見つけたものと同じです。 –
Downvoted:リンクされた記事が書かれてから消えてしまった、リンクのみの回答。 – Jules
@Jules:私はダウン投票の理由を認めており、これは有効でした。私はリンクを修正し、必要なステップの要約とヘッダー参照へのリンクを追加しました。 –
私はDephiとプレイして以来、長い時間が経ちました。
は、
FileSize(var aFile)
これは、分と秒ではなく、バイト単位のサイズを与えます。 –
@Charlie Salts - これは、OPが数分/秒を望んでいた前に投稿されました。私はSeckoに休憩を与えるだろう。また、Bruceと私が公表した公式にFileSize()が役に立つかもしれません。 –
質問は「どのようにDelphiでMP3/wavオーディオファイルの長さを取得するのですか?」でした。 – Secko
Mp3 are divided into frames like this
を試してみてください、あなたはビットレートによってファイルのサイズを分割することにより、期間を計算することができ、フレーム
+1フレームに関する情報。 –
は言うほど簡単ではありません。 mp3ファイルは、フレームが始まる前に多くの情報を持っています... –
これはうまくいきますが、これはforum postです。 winampのようなものと結果を比較して、動作することを確認します。
CBR(固定ビットレート)の正確さ.VBR(可変ビットレート)で不正確な可能性があります。おおよその時間が必要な場合には、これは良い考えです。 –
この方法では、ビットレートを知っていることを前提にしていますが、 –
@Charlie Salts - あなたの正しい、式はVBRのケースでは機能しません。フォーラムの投稿にはビットレートの決定方法が示されていません。ブルース・マギーの答えはより完全で、私はそれを私の上に勧めています。 –
www.un4seen.comにアクセスし、低音ライブラリをダウンロードすると、フォーラムのセクションから多くの情報が得られます。 ;)
Windowsでは、MP3ファイルの長さを判断するのに合理的に効果的な方法があります。
これは大きなハックですが、うまくいくようです。 Ryan。
//add MPlayer to the uses clause;
//
//add the MP3PlayLength function to an existing form and
//place a button on the form, linking the button click method to see how it works.
uses MPlayer;
function TForm1.MP3PlayLength(aMP3FileName:string):string;
var
wMP : TMediaPlayer;
wLen : Cardinal;
begin
Try
wMP := TMediaPlayer.Create(self);
try
wMP.Visible := false;
wMP.parent := self;
wMP.FileName := aMP3FileName;
wMP.TimeFormat := tfMilliseconds;
wMP.DeviceType := dtAutoSelect;
wMP.Open;
try
wLen := trunc(wMP.Length/1000);
result := inttostr(wLen div 60)+':'+inttostr(wLen mod 60);
finally
wMP.Close;
end;
finally
wMP.free;
end;
except
result := '(err)';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
showmessage(MP3PlayLength(OpenDialog1.FileName));
end;
私は強力なを開発者に提供するために、..あなたはBASSオーディオライブラリであるBASS
http://www.un4seen.com/bass.html
を使用することをお勧めしますストリーム(MP3 .. OGG ..)機能。小さなDLLの中で、100KB未満のサイズ。
それはRubyプロジェクト内の背景の回避策のためのffmpegを使用して、このブログ
uses BASS;
var
playingChannel: HSTREAM;
playingLength: Double;
mp3filename: String;
begin
BASS_Init(-1,44100,0,Application.Handle,nil);
playingChannel:=BASS_StreamCreateFile(FALSE,pchar(mp3filename),0,0,0);
playingLength:=BASS_ChannelBytes2Seconds(playingChannel,
BASS_ChannelGetLength(playingChannel,BASS_POS_BYTE));
end;
無料ですが、そうですか? – Vassilis
それは非商業的使用のためである。 www.un4seen.comの「ライセンス」を参照してください。 –
チェックアウトを使用することは非常に簡単です。
- 1. オーディオファイルの長さ
- 2. オーディオファイルの長さを取得
- 3. Cordova Media Capture - オーディオファイルの長さを確認
- 4. SliderをJavaのMP3オーディオファイルの長さに使用するには?
- 5. オーディオファイルの長さからサンプル数を計算するには?
- 6. オーディオファイルの長さを求める方法(秒単位)
- 7. ajaxでwmvオーディオファイルのみをアップロードし、そのオーディオファイルの長さをcodeigniterに表示するには
- 8. WAV形式のオーディオファイルの長さ(秒)はファイルサイズに関連していますか?
- 9. repmat()を使用して2つのオーディオファイルの長さを等しくするMatlab
- 10. AVAudioPlayerに関連付けられたオーディオファイルの長さを決定する方法
- 11. JavaScriptの長さの長さ
- 12. bing speehからtext apiに送信される最大オーディオファイルの長さはどれくらいですか?
- 13. 複数のチャンネルの場合は、オーディオファイルからサンプルの長さを取り、それをs3に保存します。
- 14. Redisの長さに成長
- 15. インクリメント記録されたオーディオファイル名
- 16. Android:削除されたオーディオファイルを聴く
- 17. ブラックベリーで再生されないオーディオファイル
- 18. JavaFxオーディオファイルが再生されない
- 19. javaオーディオファイルの場所
- 20. AndroidビューのオーディオファイルNumberFormatException
- 21. オーディオファイルのヒルベルト変換
- 22. Javaダウンサンプリングのwavオーディオファイル
- 23. オーディオファイルとWWW
- 24. 難易度オーディオファイル
- 25. MediaPlayer.setDataSourceは... AMRオーディオファイル
- 26. TTSからオーディオファイル
- 27. ビデオとオーディオファイル
- 28. PHPは - オーディオファイルが
- 29. オーディオファイルを再生
- 30. ワトソンディスカバリーパッセージの長さ
MP3ファイルの再生に使用しているAPIはありますか? TMediaPlayer? –
いいえ、私はファイルを再生していない、私はちょうどファイルからの情報が必要です。 – Attilah