5

要素で再生するには、.wav ファイルのヘッダーを作成する必要があります。

$filename =  basename($_GET['file']);

$pos = strrpos($file, '.');

$extension = ($pos !== false) ? substr($file, $pos) : '';

$mime_type = "";
switch ($extension) {
    case '.mp3':
        $mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3";
        break;
    case '.ulaw':
        $mime_type = "audio/basic";
        break;
    case '.gsm':
        $mime_type = "audio/x-gsm";
        break;
    case '.wav':
        $mime_type = "audio/x-wav, audio/wav";
        break;
}

if(file_exists($filename)){
    $handle = fopen($filename, "rb");

    header('Content-Description: File Transfer');
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Type: '.$mime_type);
    header('Content-length: ' . filesize($filename));
    header('Content-Disposition: attachment;filename="' . $filename.'"');

    while (!feof($handle)) {
        echo fread($handle, 4096);
        flush();
    }
    fclose($handle);
}else{
    header("HTTP/1.0 404 Not Found");
}

これはwww.example.com/listen?file=Test.en.wav

今のところ、そのページに移動すると、ファイルがダウンロードされて機能します(必要な半分)が、試してみると:

<embed src="www.example.com/listen?file=Test.en.wav">

プレーヤーは表示されるが、ファイルが再生されない/再生できない。

編集:それを再生できるかどうか、またどのようにできるか知りたいですか?

4

3 に答える 3

0

試してみてくださいaudio/vnd.wave

RFC 2361 による

また、カンマ区切りのリストではなく、リクエストごとに 1 つの MIME タイプのみを指定してみてください。

case '.mp3':
    $mime_type = "audio/mpeg";

これらをブラウザで直接再生するには、おそらくQuicktimeなどもインストールする必要があります。一部のブラウザーは、コンテンツ [MIME] スニッフィングを試みて、誤った MIME タイプを修正します。

于 2013-04-17T20:14:05.537 に答える