PHP音频传输与分块编码


PHP Audio transfer with 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);
?>

Thanks for help

2.3之前的Android不支持自己的播放器的分块编码。其他实现自己客户端的玩家可能也会遇到问题。我没有测试过iOS。对于许多桌面流媒体客户端来说,块编码也是有问题的。为了最大限度地提高兼容性,最好不要使用它。

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

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