3

我有两个 mp4 源文件,一个为桌面编码,一个用于移动。Video.js 为 iPhone 和 iPad 提供了错误的服务,它们无法播放。我如何告诉 Video.js 为这些设备提供哪个服务?

--编辑以添加更多信息并澄清:--

我使用的是 Video.js 版本 3.2.0,但同样的问题出现在 4.0 中。

我遇到的可重现问题是某些视频无法在较旧的 iOS 设备(第一代 iPad 和 iPhone 3GS)上播放。我相信这是因为 Video.js 正在播放源列表中的第一个 mp4,而不是为移动设备编码的。

我的 Video.js 播放器代码如下所示:

<video id="video_1" class="video-js vjs-default-skin" 
     controls preload="auto" width="640" height="390" 
          poster="https://s3.amazonaws.com/sightingsreport/videos/1748/dthumbnail_0000.png"
          data-setup="{}">
          <source src="https://s3.amazonaws.com/sightingsreport/videos/1748/default.mp4" 
                type='video/mp4' />
          <source src="https://s3.amazonaws.com/sightingsreport/videos/1748/movie.webm" 
                type='video/webm' />
          <source src="https://s3.amazonaws.com/sightingsreport/videos/1748/mobile.mp4" 
                type='video/mp4' />
</video>

如果我将 mobile.mp4 源移到列表的第一位,它会在旧的 iOS 设备上播放,但它似乎也在非移动设备上使用那个。

我认为 Video.js 应该自动为设备提供最佳源文件。这不正确吗?

处理这个问题的最佳方法是什么?

4

2 回答 2

2

我会用php来做..

<?PHP
$isiPod = stripos($_SERVER['HTTP_USER_AGENT'],"iPod");
$isiPhone = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$isiPad = stripos($_SERVER['HTTP_USER_AGENT'],"iPad");
$isiDevice = $isiPod || $isiPhone || $isiPad ;
?>

..和..

    <video id="video_player" class="video-js vjs-default-skin">
 <?PHP if($isiDevice ) { ?>
    <source src="mobile.mp4" type='video/mp4' />
 <?PHP } else { ?>
    <source src="desktop.mp4" type='video/mp4' />
 <?PHP } ?>
    </video>
于 2013-06-27T02:54:48.890 回答
2

video.js. _ 它检查canPlayType()每个源并仅选择要使用的第一个源,而不是保留浏览器可以从中选择的多个源。

基本上,现在不可能有​​相同类型的后备视频。

我在 Github 上提交了一个与此相关的问题:

https://github.com/videojs/video.js/issues/662

于 2013-07-30T22:20:18.050 回答