troubleshooting(故障排除)

媒体格式问题

选择视频格式

我希望只有一个来源,并且不关心实时/自适应流式传输:

现在,大多数浏览器都可以播放带有h264视频的MP4。如果您只想使用一个源,而不考虑实时流式传输或自适应流式传输,那么带有h264视频和acc音频的MP4是一个不错的选择。

在Linux上找到了不支持MP4的最常见的浏览器,用户可能需要在其中安装附加的编解码器支持,在某些情况下也不想这样做。您可以提供一系列备用来源。webm和/或ogv可用作回退,但所有支持MP4的浏览器均不支持。

我需要自适应流或实时流

Video.js 7+支持标准的HLS和MPEG-DASH,因为它包括http-streaming,它使用Media Source Extensions在现代浏览器中播放这些格式。如果选择单一格式,则HLS更方便,因为iOS和某些不支持MSE的Android浏览器都具有本地HLS支持。

如果添加flashls源处理程序,则Windows 7的IE 11上的Flash也可以使用HLS,该Flash不支持MSE 。

对于较旧的Video.js版本,http流或其早期版本videojs-contrib-hlsvideojs-contrib-dash添加了类似的支持,但为获得最佳效果,请使用最新的Video.js。

确保您使用的是Video.js可以播放的格式:

  • 您的浏览器/操作系统是否支持您尝试播放的媒体类型?
  • 您是否有一个Video.js插件,它将在Video.js中添加对媒体格式的支持?例如videojs-youtube
  • 验证您为视频使用了正确的mime-type / content-type。这用于确定Video.js是否可以播放某种类型的媒体。

确保支持文件容器中使用的编解码器:

  • MP4格式可以在许多编解码器中包含视频和音频数据,但是在浏览器中播放MP4通常仅支持h264视频和MP3或AAC音频。
  • 文件扩展名并不总是反映文件内容。例如,一些低端电话将视频保存为3GP格式,但给它提供MP4扩展名。这些文件将不会播放。

如果您使用的是Flash视频:

  • 考虑使用其他格式。某些浏览器不支持Flash,某些用户不会安装Flash。在安装了该浏览器的地方,浏览器变得越来越难使用,例如,要求用户选择在每个站点上运行FLash。
  • 确保添加Flash技术。Video.js 5和更早版本默认包含它。
  • Flash媒体格式包括RTMP流和FLV格式媒体。
  • SWF不是媒体格式。


托管媒体时出现问题

  • 您的服务器必须正确支持字节范围请求,因为Chrome和Safari依赖它们:
    • 默认情况下,大多数服务器都支持此功能。
    • 如果要通过服务器端脚本(PHP)代理媒体文件,则此脚本必须实现范围。PHP默认情况下不执行此操作。
    • 不这样做的影响范围从寻求被破坏到根本不播放(在iOS上)。
  • 您的服务器必须为发送的媒体返回正确的mime-type / content-type标头。
  • 在以下情况下,您的服务器必须实现CORS(跨域资源)标头:
    • 您正在使用HLS或MPEG-DASH之类的格式,并且媒体是从与页面不同的域提供的。
    • 您正在使用文本轨道(标题,字幕等),并且它们是从与页面不同的域中提供的。


全屏问题

  • 如果您的播放器在iframe中,则该iframe 和任何父iframe必须具有以下属性才能允许全屏显示:
    • allowfullscreen
    • webkitallowfullscreen
    • mozallowfullscreen


播放问题

  • 确保媒体主机支持字节范围的请求,这可能会中断播放。有关更多信息,请参见托管媒体时出现的问题
  • 如果您的媒体需要很长时间才能开始播放,或者整个媒体在播放之前都已下载:
    • 媒体开始时可能未包含媒体的元数据。在MP4术语中,这称为“ moov原子”。许多编码器默认配置为执行此操作,其他编码器可能需要您选择“快速启动”或“优化流”选项。


Video.js错误

vdata123456错误

从DOM中删除与组件关联的元素但未删除与该元素关联的事件处理程序时,将引发此错误。这几乎总是由于在组件上调用dispose时未放置事件侦听器而引起的。

要解决此问题,请确保清理所有事件侦听器。


上一篇:text-tracks 下一篇:video-tracks( 视频磁轨)