2013-06-26 71 views
3

我有兩個mp4源文件,一個編碼用於桌面,另一個用於移動。 Video.js向iPhone和iPad提供了錯誤的內容,無法播放。我如何告訴Video.js哪個服務於這些設備?如何告訴video.js哪個mp4的資源用於移動?

- 編輯添加更多的信息和澄清: -

我使用的Video.js 3.2.0版本,但在4.0出現相同的問題。

我遇到的可重現問題是一些視頻不能在較老的iOS設備上播放 - 第一代iPad和iPhone 3GS。我相信這是因爲Video.js正在播放源列表中的第一個mp4,而不是爲移動設備編碼的第一個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應該自動爲設備提供最好的源文件。這是不正確的?

處理這個問題的最佳方法是什麼?

回答

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> 
+1

我有一個類似的服務器端方法去,但我真的很期待在那裏有某種方式讓的Video.js處理這不需要進入服務器上的特定http用戶代理。 Anyhoo - 謝謝! – heyrolled

2

這是一個重大錯誤video.js。它會檢查每個源上的canPlayType(),並僅選擇第一個使用的源,而不是保留瀏覽器可以從中選擇的多個源。

基本上,現在不可能有​​相同類型的備用視頻。

我已經提交了與此相關的Github上的問題:

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

相關問題