.wav 文件下载的 Php header 但无法在嵌入中播放

标签 php wav

我必须为 .wav 文件构建 header ,以便它在元素中播放。

$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">

播放器出现,但文件没有/不能播放。

编辑:我想知道是否可以让它播放以及如何播放?

最佳答案

为什么不使用 PHP 的函数 mime_content_type() 而不是使用 switch/case block ?

例子:

<?php
$file="/path/to/file.wav";
$mime_type=mime_content_type($file);
echo $mime_type;
?>

输出:audio/x-wav

关于.wav 文件下载的 Php header 但无法在嵌入中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068769/

相关文章:

php - 如何在 PHP 中汇总多个区间

vb6 - vb6:寻找activeX音频组件(加载/播放/显示WAV)

Android concat 2 音频(wav 或 mp3)文件

audio - Monogame:WAV 不播放

c# - 在matlab中将音频文件转换为字节数组

php - 使用 HTTPS 让 cURL 在 PHP 中工作

php - Laravel 5 目标不可实例化

php - 删除 JavaScript 链接

php - 如何统计从 MySQL 查询返回的总结果?

matlab无法播放声音