【问题标题】:MEDIA_ERR_DECODE on HTML5 video in iOS UIWebView after many plays多次播放后 iOS UIWebView 中 HTML5 视频的 MEDIA_ERR_DECODE
【发布时间】:2015-05-08 10:33:18
【问题描述】:

在 iOS 的 UIWebView 中的 HTML5 视频控件中播放大约 20 个短视频剪辑 (mp4) 后,后续剪辑失败并显示 MEDIA_ERR_DECODE。问题是,我知道这些视频很好,因为它们以前播放过,有时甚至在同一会话期间播放。

此外,如果您等待足够长的时间来请求新的视频剪辑,它通常会重新开始工作。

我也知道这不是服务器,因为我可以在台式计算机上的 chrome 上执行完全相同的操作,并且它始终可以正常工作。

根据我的故障排除,该错误似乎出在 iOS 本身。

  1. 有人有解决此问题的想法吗?
  2. 有什么方法可以获取有关 iOS 中此类媒体解码错误的更多信息?我尝试使用 Safari 的开发工具来监听 http 请求,但我不能让它记录超过几秒钟,然后它就会遇到内存不足错误并杀死应用程序。

更新:在 iOS 模拟器中运行时也可以正常工作。看来问题只出现在 iPad 本身上

【问题讨论】:

  • 我也在 iOS 8.1.3 上看到过这个,但所有视频资源都是应用本地的。
  • 刚刚发布了我原来问题的答案。希望对你有帮助

标签: ios objective-c html video uiwebview


【解决方案1】:

在与 Apple 支持讨论后,该问题已得到解决。问题与硬件 H264 解码器有关。基本上,我从来没有通过释放视频资源(我认为javascript会自己做)来从硬件解码器缓冲区中删除视频。

所以我是这样设置源的:

$(vid).src = "some source file";
$(vid).play();
... some other stuff happens ...
$(vid).remove();

这样做永远不会从解码器缓冲区中删除视频,这意味着它最终无法解码更多视频。

要解决此问题,您必须通过以下方式从 DOM 中删除视频:

$(vid).src = "some source file";
$(vid).play();
... some other stuff happens ...
$(vid).remove();
$(vid).src = "";
$(vid).load();

现在我意识到这没有多大意义,因为在调用 .remove() 之后,我会假设控件已从 DOM 中删除,并且任何垃圾收集都会自动完成其余的工作。但是,它不是那样工作的。我希望这对其他人有所帮助。

【讨论】:

  • 我遇到了同样的问题,这真的很有帮助!谢谢。
  • 非常感谢,我几个月来一直在努力追根究底,一路上放弃了几次......就像苹果有一些不起眼的障碍,没有有用的错误。附言此方法扩展为反应,请查看此线程以供参考:stackoverflow.com/questions/51499951/…
  • 看起来问题甚至延伸到当前的桌面 safaris,但它似乎并不经常发生。有没有机会告诉我们与苹果支持的讨论内容是什么?
【解决方案2】:

它不是 iOS 特定的。我可以在 Chrome 网络浏览器中重现。

注意:如果视频有多个来源,则必须为每个来源重置 src 属性。

var sources = $(vid).getElementsByTagName('source');
for (var index = 0; index < sources.length; index++)
{
    sources[index].src = "";
}
$(vid).load();

【讨论】:

  • 请查看URL,这将有助于提高您的内容质量
【解决方案3】:

jugg1es 上面的回答是正确的,但是如果您尝试使用 HLS 视频,问题仍然存在。当我尝试将他的解决方案与 jquery-3.1.1.js 一起使用时,我在 jquery 的 load() 方法中遇到了一个错误。不使用 jquery 实际上对我有用:

    document.getElementById(id).src = "";
    document.getElementById(id).load();

感谢 jugg1es 你保存了我的项目。

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多