M4A文件无法在Safari中播放,但可以在Chrome中播放

问题描述 投票:0回答:1

我在<audio>标签中有一个MP3和M4A文件。 MP3文件在Safari和Chrome中可以正常播放,而M4A文件在Chrome中可以正常播放,但是M4A在Safari中无法播放。我可以在Safari中看到M4A的音频控件。我单击播放图标,但没有任何反应。

即使对于在Safari中可以正常播放的MP3文件,当我单击“网络”选项卡时,我也会看到“尝试加载资源时发生错误。”预览选项卡中显示消息。我注意到,在Chrome浏览器中,传输编码以块形式返回,但在Safari中是身份标识。

MP3响应-Safari:

HTTP/1.1 200 OK
Content-Type: audio/mpeg
Content-Disposition: inline; filename=Audio.mp3
X-XSS-Protection: 1
Transfer-Encoding: Identity
Date: Sat, 04 Apr 2020 00:10:29 GMT
Connection: keep-alive
X-Content-Type-Options: nosniff
Accept-Ranges: bytes
X-Frame-Options: SAMEORIGIN
X-Powered-By: Express
X-RequestID: undefined
X-Permitted-Cross-Domain-Policies: none
Strict-Transport-Security: max-age=3600

M4A响应-Safari:

Response
HTTP/1.1 200 OK
Content-Type: audio/mp4
Content-Disposition: inline; filename=Audio.m4a
X-XSS-Protection: 1
Transfer-Encoding: Identity
Date: Sat, 04 Apr 2020 00:10:29 GMT
Connection: keep-alive
X-Content-Type-Options: nosniff
Accept-Ranges: bytes
X-Frame-Options: SAMEORIGIN
X-Powered-By: Express
X-RequestID: undefined
X-Permitted-Cross-Domain-Policies: none
Strict-Transport-Security: max-age=3600

M4响应-Chrome

Accept-Ranges: bytes
Connection: keep-alive
Content-disposition: inline; filename=Audio.m4a
Content-Type: audio/mp4
Date: Sat, 04 Apr 2020 00:15:02 GMT
Strict-Transport-Security: max-age=3600
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Powered-By: Express
X-RequestID: undefined
X-XSS-Protection: 1
javascript html safari web-audio-api
1个回答
0
投票

我解决了此问题,将两个来源URL放在音频标签上;相同的URL,但使用不同的方式来读取编码:

<audio controls>
    <source src="{.URL}" type="audio/ogg">
    <source src="{.URL}" type="audio/mp4">
</audio>

提供响应的服务器应具有标头Accept-Ranges,以将文件分成几部分来传输。您可以在此答案中看到更多信息:Does iPhone/iPad Safari require 'Accept-Ranges' header for video?

希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.