私の質問は簡単です: シーク可能な PHP で mp3 を出力するにはどうすればよいですか? 適切なヘッダーが設定されていると信じており、readfile() と fopen() の両方を試してみました。これは、調査の結果、readfile() はバイト範囲をサポートせず、fopen() はサポートしていると思われるためです。ただし、明らかに必要なだけで、バイト範囲の操作方法や設定方法が本当にわかりません。jPlayer で曲を再生していますが、曲は正常に再生されますが、シークできません。つまり、シーク バーの別の場所をクリックして曲をスキップすることはできません。
mp3 ファイルを出力するコードは次のとおりです。
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false); // required for certain browsers
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header("Content-Disposition: inline; filename=" . $file . ";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($path));
//readfile("$path");
$music = fopen($path, 'r');
fseek($music, 0);
fpassthru($music);
exit();
Range ヘッダーを読み取る必要がある場合、どうすればよいですか?