したがって、mp3ファイルをhtml5のオーディオタグに送信するPHPスクリプトがあります。問題は、Safariでは、audio.durationタグが機能せず、無限大を返すことです。オーディオのsrcを直接ファイルに設定すると、すべて正常に動作します。しかし、私はユーザーにファイルへのパスを見せたくありません。audio.durationはmp3がPHPから提供されたときにSafariでInfinityを返します
とにかく、これは私がPHPからヘッダを送信する方法です。
私は既にcontent-rangesを持っています。それは役に立たなかった。
if (file_exists($filename)) {
$fp = fopen($filename, 'r');
$etag = md5(serialize(fstat($fp)));
fclose($fp);
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg");
header('Content-Length: ' . (string)(filesize($filename)));
header('Content-Disposition: inline; filename="' . $filename . '"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
header('Etag: ' . $etag);
//GetContentRange($filelength);
readfile($filename);
exit;
}
else {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
echo "no file";
}
こんにちは私はまた、Rangeヘッダにある「バイト0-1」とのオーディオリンクの最初の呼び出しを参照してください@smurf。しかし、あなたが "それを返す"という意味をより具体的にすることはできますか?この場合、それは何ですか?レスポンスのContent-Rangeヘッダーを使用して1バイトを返すことができます。それはあなたが意味することですか? – Hewins