1

我需要帮助,我正在开发流式音频系统,但我遇到了分块传输编码的问题,实际上我不知道如何让它在 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);
?>

感谢帮助

4

1 回答 1

0

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

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

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

于 2013-04-18T14:54:19.967 回答