使用分块编码的PHP音频传输

时间:2013-04-17 10:06:45

标签: php audio audio-streaming chunked-encoding

我需要一个帮助,我正在研究流媒体音频系统,我遇到了分块传输编码的问题,实际上我不知道如何让它在IOS,Android等上运行。有没有替代方案分块编码?这是我的代码:

<?php
header('Transfer-Encoding: chunked');
header('Content-Type:audio/mpeg');
header('Connection: keep-alive');
ob_clean();
flush();

$buffer = '';
    $handle = fopen($filepath, 'rb');
    if($handle === false){
        return false;
    }

    while(!feof($handle)){
        $buffer = fread($handle, 8192);

        echo sprintf("%x\r\n", strlen($buffer));
        echo $buffer;
        echo "\r\n";

        ob_flush();
        flush();
    }

    echo sprintf("%x\r\n", 0);
    echo "\r\n";



    fclose($handle);
?>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

2.3之前的Android不支持自己的播放器的分块编码。其他实施自己客户的玩家也可能遇到问题。我还没有测试iOS。对于许多桌面流式客户端来说,分块编码也存在问题。最好不要使用它来最大化兼容性。

有两种方法可以做到这一点。第一个是返回HTTP/1.0响应。这意味着您不必指定内容长度,并且当服务器停止发送时响应将停止。

第二种方式与第一种方式类似,但允许您使用HTTP/1.1。只需设置标题Connection: close即可。然后,您不必指定内容长度,也不必以分块编码方式发送数据。