2017-11-27 15 views
0

私はgetid3を使用して、リモートURLからファイルサイズと期間を取得しています。 getid3はリモートURLでは機能しません。一時的な場所にmp3をダウンロードし、データを読み込んでから削除してください。getid3:リモートサーバーからフルmp3データをダウンロード

コード:

<?php $filename = tempnam('/tmp','getid3'); 
if (file_put_contents($filename,file_get_contents('http://feeds.soundcloud.com/stream/336401044-scott-johnson-27-tms-1314-pm.mp3', false, null, 0, 32768))) { 
if (require_once('id3/getid3.php')) { 
$getID3 = new getID3; 
$ThisFileInfo = $getID3->analyze($filename); 
echo '<pre>'.print_r($ThisFileInfo, true).'</pre>'; 
} 
unlink($filename); 
};?> 

私は私の問題は、それが唯一のmp3ファイルの最初の32768キロバイトをダウンロードし、それが正しいファイルサイズ(最大32768として番組)や正確な継続時間が表示されないということですファイルの最大サイズを大きくすると、コードがクラッシュします。

完全なmp3をダウンロードする方法、または完全なファイルをダウンロードせずに適切なヘッダーサイズを取得する方法がありますか?

+0

取得しようとしているID3のバージョンは何ですか?おそらく32KB以上必要ですが、これ以上は必要ありません。 32Kを超えるコードがクラッシュするのはなぜですか?私は 'file_get_contents'よりもcURLを使いたいですし、よく動作するサーバから範囲リクエストを行うことができます。 – Brad

+0

最新のバージョン(1.9.5)と私は正しいファイルサイズと時間を得るために20 MBを使用しなければなりません。私はcURLに精通していないので、例を挙げることができますか? –

+0

http://php.net/manual/en/curl.examples-basic.php – Brad

答えて

1

ID3v1タグは、ファイルの最後にあります。先頭にはありません。したがって、ファイルの最後のチャンクをダウンロードするか(範囲要求がcURLで完了している)、またはファイル全体をダウンロードするまで、それらを読み取ることはできません。

ID3v2が必要な場合は、ファイルの先頭にあります。

+0

mp3が使用しているID3バージョンを簡単に検出する方法はありませんか? –

+0

@GregorySchultz確かに... ID3v2を検出しようとすると、それがサポートされていない場合は、ID3v1を試してみてください。 – Brad

関連する問題