2014-12-30 62 views
6

我們在我們的網站上有MP4視頻;它在Mac上的IE9 +,Firefox,Chrome和Chrome中運行良好。但是,在Safari上,視頻根本無法播放 - 它確實觸發了「停頓」事件,然後什麼也沒有加載。我會發布我們的HTML,但我通過發現Safari甚至在導航到原始MP4的URL時不會播放它來進一步追蹤問題。在本地下載和播放時,視頻在Quicktime中運行良好。<video>在其他瀏覽器中播放,但不在Safari中播放

這是我們所有開發人員中最奇怪的部分,可以讓我的開發計算機運行相關的服務器上的視頻工作在Safari。而且,同一目錄中的其他MP4文件也有類似的問題。這一直是我的關鍵,我一直在尋找從服務器的視頻傳輸方式 - 請求/響應標題,確切的文件大小等方面的任何細微差別。

從Chrome複製的標題(僅限於Safari更難/漿糊)

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
DNT:1 
Host:*************:8443 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 

Response Headers 
Accept-Ranges:bytes 
Content-Length:44875102 
Content-Type:video/mp4;charset=UTF-8 
Date:Tue, 30 Dec 2014 21:11:51 GMT 
ETag:W/"44875102-1419959755000" 
Last-Modified:Tue, 30 Dec 2014 17:15:55 GMT 
Server:Apache-Coyote/1.1 

(同樣複製,以防萬一這讓你想起一個老問題,我在Windows上的Safari知道已經死了年齡這個問題是發生在OS X)。

編輯:可能有所幫助的新信息。我從我自己的網絡服務器上收集了一個個人視頻,該服務器能夠從那裏出現問題性的Safari瀏覽器,並將其下載到我們服務器的本地視頻目錄中。 從那裏,它遇到了與我們其他視頻相同的問題。這表明MP4本身可能並不重要 - 這可能是Tomcat 7網絡服務器的某種服務器問題。我們確實已經正確註冊了內容類型,至少涵蓋了基本內容,但是我很好奇是否還有其他必要的部分。

更多信息:我最初並沒有想到這一點,但我們正在通過HTTPS連接加載我們的網頁和視頻。我們的大多數測試服務器都沒有有效的證書,所以我們需要點擊標準瀏覽器警告「這個服務器可能不是它說的那個人」。我們正在研究如何在我們的所有服務器上擁有正確的證書。

+0

您是否可以提供發生此問題的視頻的鏈接? –

+0

@ AlexanderO'Mara對不起,但沒有;這是正在開發的產品的一部分。我把一個小例子小提琴放在一起,但它似乎很有可能是相關的,當然,默認配置Apache服務器上正確編碼視頻的基本示例正常工作。 – Katana314

+0

我嘗試配置我的本地服務器來提供具有類似標題的視頻,但仍無法複製它。除非我們可以看到一個示例視頻,否則我不確定我們能做什麼,但猜測還有很多。 –

回答

0

...

在附註中,charset對視頻/ mp4類型有什麼意義?嘗試去除它上面的字符集。

編輯:是的,字符集可能是問題,請參閱:Specify content-type for documents uploaded in Magnolia

EDIT2:沒有字符集,woops,閱讀理解失敗。可能是字節範圍? 引用:「[...]我們發現Safari/iOS」使用HTTP字節範圍來請求音頻和視頻文件。「現在我們猜測Magnolia DMS文件服務不支持此功能,因此流式傳輸失敗。「

+0

真正煩人的是我想要一個簡單的方法來確認這一點,但在Safari的開發人員工具中,當我點擊MP4文件的網絡請求時,它錯誤地聲稱沒有請求或響應標頭。也許我會找到另一種驗證方式。 – Katana314

+0

沒有機會測試鏈接?如果需要的話,悄悄話給我(twitter = @nexii) –

2

請確保controls ='true'type ='video/mp4'在您的html代碼中給出。

<video loop controls='true' width='100%' height='100%' src='//some_video.mp4' type='video/mp4'></video> 
+0

嗯......據我所知,'controls'是一個布爾屬性,這意味着它不需要'='true'',我知道的資源中沒有提到一個'type = etc'屬性在視頻標籤上。 我從來沒有給我的HTML本身,但基本上我已經非常類似於你的,除了在視頻內的'source'元素內定義的src/type。 – Katana314

+0

@ Katana314我同意你在大多數情況下,但不是這一個。 –

+0

@ huazihihao同意什麼? – Katana314

0

如果將這些添加到您的.htaccess會發生什麼?

AddType video/ogg .ogv 
AddType video/mp4 .mp4 
AddType video/webm .webm 
+0

這不是一個Apache服務器,所以不是htaccess。不過,它通過其他配置文件具有MIME類型。 – Katana314

+0

如果您將生成的HTML保存爲html文件,並將其加載到Safari中(在修復任何損壞的URL後),它是否工作? – neokio

+0

否;如果視頻網址直接在瀏覽器中加載,它甚至不會工作。 – Katana314

0

這可能確實是缺少字節範圍支持的問題,具體取決於您使用的版本。它被添加到MAGNOLIA-3855(Magnolia fix version 4.4.6)的DMSDownloadServlet中。

4

Safari要求網絡服務器支持「Range」請求標頭才能播放媒體內容。

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

對於一個合法的 「範圍」 請求響應,你webserve需要返回狀態代碼 「206」。

+0

這是真的。這也意味着您必須在應用程序代碼中爲動態生成或轉換的內容添加額外的圖層(例如Varnish或Nginx)或完全重新實現範圍處理。 –

0

最近,我的團隊遇到了一個導致相同行爲的特定問題。我們使用的是Apache 2.4,並注意到如果我們啓用了諸如.htpasswd之類的身份驗證層,即使進行身份驗證後,Safari也不會顯示視頻。就好像它不會繼續遵守某些類型的後續HTTP請求的初始認證許可。

對不起,我沒有更多的技術可以提供,但它是檢查任何人遇到視頻問題只在Safari。

0

我遇到了同樣的問題並解決了這個問題,但這裏沒有其他答案不涉及我的問題,所以我將繼續爲有人跟蹤的解決方案。

我一直在製作我自己的視頻流媒體服務器,在被質疑的情況下,它只是返回一個「Ranged」mp4文件,並且我發現Safari不播放HTTP響應中缺少「連接」響應頭文件因爲某些原因。

相關問題