Safari 9.0无法播放存储服务器上的mp4视频

2024-03-09

以下视频链接无法用safari 9.0(最新版本)播放。但老版本的 safari、chrome 和 firefox 都可以玩。

http://assets00.grou.ps/0F2E3C/wysiwyg_files/Videos/saksuka/20150928104628-lhmkkfbhnkiisbhht.mp4 http://assets00.grou.ps/0F2E3C/wysiwyg_files/Videos/saksuka/20150928104628-lhmkkfbhnkiisbhht.mp4

当我将视频从服务器下载到我的电脑时,我可以使用 safari 9.0 进行播放。

这就是为什么我认为这个问题不是由视频编码引起的。

我已经完成了这些设置;

mime.types
video/mp4   mp4 m4v
video/ogg   ogv
video/webm  webm

httpd.conf
AddType video/mp4 mp4 m4v
AddType video/ogg ogv
AddType video/webm webm

.htaccess
AddType video/mp4 mp4 m4v
AddType video/ogg ogv
AddType video/webm webm

更新 2 - 2020 年 6 月

此问题最常见的根本原因似乎是服务器未配置为正确处理范围请求。

Safari 在发送带有字节范围的请求时预计会看到“206”响应。如果服务器响应“200”请求,则 Safari 似乎无法处理此问题。其他一些浏览器似乎可以接受这一点 - 例如 Chrome。

下面的检查网络选项卡屏幕截图显示了成功的视频播放,包含范围请求和 206“部分内容”响应:

虽然下面的示例显示了一个无法在 Safari 中播放但在 Chrome 中播放的视频 - 可以看出服务器只是响应 200 请求:

您可以使用 CURL 命令测试服务器是否正确接受范围请求 - 请参阅此处来自苹果的信息:

如果您不确定您的媒体服务器是否支持字节范围请求,您可以在 OS X 中打开终端应用程序并使用curl 命令行工具从服务器上的文件下载一小段:

卷曲——范围0-99http://example.com/test.mov http://example.com/test.mov-o /dev/空

如果该工具报告已下载 100 字节,则媒体服务器正确处理了字节范围请求。如果它下载整个文件,您可能需要更新媒体服务器。有关curl 的更多信息,请参阅OS X 手册页。

(from: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html#//apple_ref/doc/uid/TP40006514-SW6 https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/CreatingVideoforSafarioniPhone/CreatingVideoforSafarioniPhone.html#//apple_ref/doc/uid/TP40006514-SW6)

对于正确播放的第一个视频,使用上述参考中的 CURL 命令,我们可以看到响应是仅按预期返回请求的范围:

在上面的示例中使用相同的 CURL 命令,该命令不能在 Safari 中播放(但可以在 Chrome 中播放),表明服务器正在响应完整文件,而不仅仅是请求的范围:

此 CURL 测试可能是检查服务器是否正确尝试处理请求的最快方法。

原答案

这似乎是 Safari 上某些 mp4 文件反复出现的问题。

我在本地主机 Node.js 静态服务器上测试了您的视频,它在 Safari 中播放得很好,这意味着视频本身应该没问题。

如果您查看 Safari 中的 Web 检查器,您会发现 Web 请求不包含某些标头。这会导致一些服务器出现问题,并且它们不会按照 Safari 预期的方式响应,或者根本不响应。

您可以看到正在讨论的类似问题(我认为第二个问题不是您的情况,但说明发送到服务器的请求中包含的信息可能会导致服务器“决定”不按您想要的方式响应):

  • 无法加载资源,插件在 iOS 上处理加载 https://stackoverflow.com/q/18103103/334402
  • 在 UIWebView 内的网页中播放视频时出现“插件处理加载”对话框 https://stackoverflow.com/questions/9422507/plugin-handled-load-dialog-appears-when-playing-a-video-within-a-web-page-with

Update 1:

使用wireshark捕获来自Chrome的请求,可以看到服务器有响应并播放视频,而来自Safari(在同一台机器上)的请求则导致服务器没有响应。

这些请求通常相似,并且都包含引用标头。 Safari 浏览器最初只要求从服务器返回前 2 个字节 - 它通过使用“range”标头来实现这一点,该标头用于指定文件返回的字节范围:

  • 范围:字节=0-1\r\n

另一方面,Chrome 在其范围请求中请求整个视频:

  • 范围:字节=0-\r\n

然而,在 Chrome 上使用 HTTP 工具(例如 Postman)并将范围更改为 0-1 似乎并没有阻止服务器在 Chrome 情况下响应。事实上,使用该工具尽可能设置与 Safari 设置相同的标题似乎仍然可以正常返回视频。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Safari 9.0无法播放存储服务器上的mp4视频 的相关文章

  • PHP 在数组内循环

    我怎样才能在一个内部循环array在我的代码中 这是我的脚本的静态版本 val array array value gt Male label gt Male array value gt Female label gt Femal my
  • 如何减少 jQuery 函数中使用的子级数量?

    我觉得我必须使用太多 children 在我的一些 jQuery 函数中 这是我的 HTML div class goal small container div class goal content div class goal row
  • 通过 css 或 javascript 查找当前工作浏览器是否为 safari

    我研究了如何识别浏览器是否是 Safari 在javascript window devicePixelRatio对于 chrome 和 safari 对象都给出 1 在CSS media screen and webkit min dev
  • 带填充的 Tailwind CSS 导航悬停下拉菜单

    我正在尝试展示子 ul 当项目悬停时 在第一个导航项目上列出 一切正常 除了有时 时好时坏 当您位于第一行的填充之间时 ul 项目和子项目 ul 项目 次要项目 ul 会消失 当我从下拉菜单导航到项目列表时 如何保持辅助导航列表打开 JSF
  • 调整下拉框中列表的高度[重复]

    这个问题在这里已经有答案了 可能的重复 下拉框显示的高度 https stackoverflow com questions 5600982 height of the dropdown box display hi 如何调整下拉列表中列表
  • 如何使用div绘制曲线?

    我需要使用 CSS 绘制两条曲线 我尝试过组装一些divs 使用CSSborder radius绘制弧形面板 但结果很糟糕 还有更好的算术吗 正如我之前在评论中提到的 请不要使用CSS用于实现复杂的曲线和形状 虽然仍然可以使用 CSS 来实
  • 选中复选框时展开 Div

    我有一个复选框
  • JSP - 如何从数据库呈现 html(或 jsp)代码

    我有一个由多个用户组使用的jsp 要求是每个用户组在访问页面时都希望有自定义的外观和感觉 带有区分参数 我们建议允许用户将他们需要的html转储到数据库表中 jsp将确定用户组并显示相应的html 有关如何做到这一点的任何指示 示例 如果用
  • 在 swift 3 的 textview 中显示属性文本?

    我想以斜体 粗体显示从服务器收到的文本 你好世界所以 responseObj text p b i hello i b i world gt i p if let postText String responseObj text as St
  • JavaScript 跨浏览器单击 HTML DOM 元素

    是否有可用的普通 JavaScript 跨浏览器函数能够触发 HTML DOM 元素 包括 div 等非表单元素 上的单击事件 大多数走这条路的人要么最终开发自己的事件管理系统 这并不难 但很烦人 要么在可用的功能范围内工作 如果所有浏览器
  • 当 MediaElementAudioSource 输出为零但 CORS 不再是问题时,如何才能播放音频?

    我正在尝试实施
  • 没有嵌套容器的桌面和移动 Flexbox 布局

    我有 3 个 div 它们必须按移动布局的特定顺序排列 但我必须将第 2 个 div 作为桌面布局的侧边栏 所以对于移动设备 分区1 分区2 分区3 对于桌面 分区1 div2 分区3 在桌面布局中 div 2 有阴影背景 因此必须是父级的
  • 如何在 FFMPEG 中的多个视频之间创建交叉淡入淡出过渡?

    我目前正在通过 FFMPEG 循环播放带有音频的 MP4 视频 这是代码 del intermediate1 ts del f txt echo file intermediate1 ts gt f txt echo file interm
  • 更改时触发跨度文本/html

    jQuery 或 JavaScript 中是否有任何事件在以下情况下触发span标签 text html 已更改 Code span class user location span user location change functio
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小
  • 响应式导航栏隐藏其下方的元素

    我创建了一个响应式导航栏 但它使下面的元素 Flexslider 插件 消失 在我制作导航栏之前 下面的 Flexslider 可以正常显示 但现在不行 导航栏的 z index 为 2 所以我不知道问题是什么 我应该如何 更改什么才能允许
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏
  • CSS:缩放字体大小以适应父块元素的高度

    我发现的几乎每个问题和答案都谈到了视口大小 这确实不是我的问题 拿着这支笔 https codepen io njt1982 pen pZjZNM https codepen io njt1982 pen pZjZNM 我有一个非常基本的
  • 使用 JQuery 预填充选择字段的下拉选项验证

    我有这个 JQuery 片段来防止选择已在另一个字段中选择的下拉选项 var coll select name service on change function coll each function var val this value

随机推荐

  • IntelliJ IDEA 中的“变量从未分配”警告只能“部分”抑制

    Java EE IntelliJ Idea 2016 3 我编写了一个类并声明了一个私有字段 Inject注解 我已经通过添加成功地从 检查结果 窗口中删除了 未使用的声明 通知javax inject Inject to 设置 gt 编辑
  • grunt-contrib-connect 中间件 CORS 解决方案,具有 keepalive true

    对于我的本地开发系统 我尝试使用 grunt contrib connect 为前端资产提供服务 我需要一个在 Firefox 中使用字体的跨域解决方案 服务器运行得很好 但我似乎无法设置标头 我正在使用 grunt contrib con
  • 单个元素中的多个文本节点?

    有人可以帮我看一下下面的屏幕截图并解释以下内容 到底是怎么回事 我如何以编程方式检测它 我如何以编程方式修复 摆脱它 我相信发生的事情是我在一个单一的文本节点中有多个文本节点preelement 我感觉很多年前我在MDN上读到这样的事情是可
  • android:dither="true" 不抖动,出了什么问题?

    我一直在尝试让 android 抖动活动的背景图像 到目前为止没有成功 我不知道出了什么问题 这就是我所做的 我的活动布局的根元素是 LinearLayout
  • 为什么自定义类型接受 Python 中的临时属性(而内置类型不接受)?

    我想知道为什么人们能够为自定义类型的实例创建一个新属性 新 意味着 先前未在类主体中定义 但无法为内置类型执行相同的操作在类型上 比如object本身 代码示例 gt gt gt class SomeClass object pass gt
  • Python导入模块错误

    我在项目中导入模块时遇到问题 我正在创建测试 但无法从测试文件导入我的 main 来测试应用程序的一个端点teste ex py 这是我的项目结构 backend api api init py main py testes init py
  • 如何在django模板中使用生成器方法?

    我想在 django 模板中使用 python 生成器 可以吗 例如 我有模型 它包含生成器对象 如下所示 class TestMe models Model property def gen self yield 1 yield 2 上下
  • Pycharm不显示数据库表

    更新PyCharm 版本2017 1 后 PyCharm不显示sqlite3数据库表不再存在 我已经测试了连接并且可以正常工作 In sqlite客户端我可以列出所有表并进行查询 其他人也遇到这个问题吗 在这种情况下无论如何都能解决吗 我使
  • 为 Clojure 协议提供多种实现

    我有一个公开常见数据相关函数的命名空间 get images insert user 然后 我有两个具有相同功能并以不同方式实现它们的数据库后端 他们按原样实现接口 每个后端都包含在一个命名空间中 我似乎无法找到如何完成此任务的良好解决方案
  • Java 项目中服务器和客户端包的共享资源

    我有一个 Java 项目 其中包含服务器包和客户端包 另外我还有一个图书馆包 我使用 eclipse 并将所有内容放入一个 Java 项目中 每个部分服务器 客户端和库都位于单独的包中 问题是当我导出时 所有内容都会添加到 Jar 文件中
  • 如何在 Azure Key Vault 中序列化和反序列化 PFX 证书?

    我有一堆字符串和 pfx 证书 我想将它们存储在 Azure Key Vault 中 只有允许的用户 应用程序才能获取它们 将字符串存储为 Secret 并不难 但是如何以可以检索它并反序列化为证书的方式序列化证书 X509证书2 http
  • Pandas:连接数据帧并保留重复索引

    我有两个数据框 我想将它们按列 axis 1 与内部联接连接起来 其中一个数据帧有一些重复的索引 但行不重复 我不想丢失其中的数据 df1 pd DataFrame a 1 b 2 a 1 b 3 a 2 b 4 columns a b s
  • Laravel - 计算目录的总大小?

    我试图获取 Laravel 中 directory 的总大小 到目前为止我只能使用 size 函数获取单个文件的大小 好像没有这方面的例子或者文档 任何对此的意见将不胜感激 谢谢 我认为你不能 Laravel 5 用途飞行系统 http f
  • 如何将负数转换为正数?

    如何在Python中将负数转换为正数 并保持积极的态度 gt gt gt n 42 gt gt gt n if you know n is negative 42 gt gt gt abs n for any n 42 不要忘记检查docs
  • 如何将枚举类型变量转换为字符串?

    如何使 printf 显示枚举类型变量的值 例如 typedef enum Linux Apple Windows OS type OS type myOS Linux 我需要的是类似的东西 printenum OS type My OS
  • CSS 弹跳线加载动画

    我正在尝试创建一个简单的加载动画 来回绘制一条线 但目前仅朝一个方向移动 一旦到达动画的中间 它就不会以相反的方向动画 这是我的CSS keyframes loader animation 0 width 0 49 width 100 50
  • 在TabLayout设计支持库中无法看到Tab Indicator

    我正在使用材料设计库并使用创建布局CoordinatorLayout 应用栏布局 RecyclerView and TabLayout 我的问题是我无法看到选项卡指示器Tablayout 下面是我正在使用的 xml 文件AppCompact
  • 错误的snakemake glob_wilcards 和 wildcard_constraints

    在我的 Snakemake 管道中 我试图检索正确的通配符 我研究过 wildcard constraints 和这个帖子 https stackoverflow com questions 66882849 snakemake how t
  • 使用 jersey 和 grizzly 启用 JSON

    我正在玩 Grizzly 托管的 Jersey 并且希望能够使用和生成 JSON 但是我在 get 请求中从服务器收到 500 并且 POST 中不支持媒体类型 我的服务器代码是 org glassfish jersey server Re
  • Safari 9.0无法播放存储服务器上的mp4视频

    以下视频链接无法用safari 9 0 最新版本 播放 但老版本的 safari chrome 和 firefox 都可以玩 http assets00 grou ps 0F2E3C wysiwyg files Videos saksuka