如何使用Jquery / Php流式传输音频

时间:2015-01-20 04:05:59

标签: php jquery audio http-headers

我目前有一个用jquery构建的mp3播放器。我想知道是否有更快的方式我可以获取mp3文件并将其播放给用户,或“流”它,就像潘多拉一样。这就是我获取歌曲数据的方式:

    song = document.createElement('audio');
    source = document.createElement("source");
    song.appendChild(source);
    source.setAttribute("type", "audio/mpeg");
    source.src = "getMp3.php";

getMp3.php文件如下所示:

    $fileName = "Song.mp3";
    $file = "/Music/".$fileName;
    $mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3";
    $shortlen = filesize($file)-1;

    $fp = fopen($file, 'r');
    $etag = md5(serialize(fstat($fp)));
    fclose($fp);

    header("Pragma: public");
    header("Expires: 0");
    header('Cache-Control: no-cache, no-store');
    header("Content-Transfer-Encoding: binary"); 
    header('Content-type: '.$mime_type);
    header('Accept-Ranges: bytes');
    header('Connection: Keep-Alive');
    header('Content-length: ' . filesize($file));
    header('Content-Disposition: inline; filename="' . $fileName);
    header('X-Pad: avoid browser bug');
    header('Content-Range: bytes 0-'.$shortlen.'/'.filesize($file));
    header('Etag: '.$etag);
    readfile($file);

大多数情况下,加载文件大约需要10秒钟。这可能会更长,具体取决于文件的大小,但10通常是平均值。我也试过只发送部分mp3文件,但即使mp3是10秒或3分钟,它仍然需要大约10秒。有没有办法加快/播放这首歌?

1 个答案:

答案 0 :(得分:0)

PHP脚本将在加载整个音乐文件后显示页面,因此费用很高。

要在网络上播放音乐,有两种方法可以做到:

  1. Flash播放器:Google提供数千种JavaScript / jQuery音乐播放器。

  2. HTML 5 <audio>代码:<audio src="song.mp3" controls="controls"/>

相关问题