gpt4 book ai didi

audio - HTML5

转载 作者:行者123 更新时间:2023-12-03 08:40:03 24 4
gpt4 key购买 nike

我正在尝试嵌入指向 PHP 文件提供的 MP3 或 OGG 数据的 HTML5 音频元素。当我在 Safari 中查看页面时,会出现控件,但 UI 显示“直播”。当我单击播放时,音频按预期开始。但是,一旦结束,我就无法通过单击播放再次开始播放。即使在音频元素上使用 JS API 并将 currentTime 设置为 0 也会失败,并出现索引错误异常。

我怀疑 PHP 脚本的标题是问题所在,尤其是缺少内容长度。但事实并非如此。响应 header 包含适当的 Content-Length 以指示音频具有有限大小。此外,在 Firefox 3.5+ 中一切正常。我可以多次单击音频元素上的播放来收听声音重播。

如果我从等式中删除 PHP 脚本并提供 MP3 文件的静态副本,那么在 Safari 中一切正常。

这是否意味着 Safari 对待带有查询参数的音频 src URL 与没有它们的 URL 不同?任何人都有运气让它工作吗?

我的简单示例页面是:

<!DOCTYPE html>
<html>
<head></head>
<body>
<audio controls autobuffer>
<source src="say.php?text=this%20is%20a%20test&format=.ogg" />
<source src="say.php?text=this%20is%20a%20test&format=.mp3" />
</audio>
</body>
</html>

来自 PHP 脚本的 HTTP header :
HTTP/1.x 200 OK
Date: Sun, 03 Jan 2010 15:39:34 GMT
Server: Apache
X-Powered-By: PHP/5.2.10
Content-Length: 8993
Keep-Alive: timeout=2, max=98
Connection: Keep-Alive
Content-Type: audio/mpeg

来自直接文件访问的 HTTP header :
HTTP/1.x 200 OK
Date: Sun, 03 Jan 2010 20:06:59 GMT
Server: Apache
Last-Modified: Sun, 03 Jan 2010 03:20:02 GMT
Etag: "a404b-c3f-47c3a14937c80"
Accept-Ranges: bytes
Content-Length: 8993
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: audio/mpeg

我也尝试将 Accept-Ranges header 硬编码到脚本中,但没有运气。

最佳答案

而在 2020 年,这仍然是一个实际问题。
只需添加 Content-Range标题不起作用。
贝娄是我的实现(基于这里的一些答案)。

        $content_length = strlen($media_total);
$total_bytes = $content_length;
$content_length_1 = $content_length - 1;

if (isset($_SERVER['HTTP_RANGE'])) {

$byte_range = explode('-',trim(str_ireplace('bytes=','',$_SERVER['HTTP_RANGE'])));

$byte_from = $byte_range[0];
$byte_to = intval($byte_range[1]);
$byte_to = $byte_to == 0 ? $content_length_1 : $byte_to;

$media_total = substr($media_total,$byte_from,$byte_to);

$content_length = strlen($media_total);

header('HTTP/1.1 206 Partial Content');
}
else {
$byte_from = 0;
$byte_to = $content_length_1;
}

$content_range = 'bytes '.$byte_from.'-' . $byte_to . '/' . $total_bytes;

header('Accept-Ranges: bytes');
header("Content-Range: ".$content_range);
header("Content-type: ".$type);
header("Content-length: ".$content_length);
header('Content-Transfer-Encoding: binary');

echo $media_total;

exit;
原始问题: Timing problem for generated audio in some browsers

关于audio - HTML5 <audio> Safari 直播 vs 不直播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com