2011-05-14 52 views
1

我正在爲想要能夠上傳位置偵察和投射視頻的廣告製作公司設計一個網站。我已經想出瞭如何使用適當的頭文件將數據從sql中導入到瀏覽器中。mov或m4v視頻嵌入(通過php從mysql數據庫檢索到的數據)

現在我的問題是 - 目前顯示視頻的最佳方式是什麼?我需要它在iPhones,iPad,Safari和Firefox上工作。我根本不關心IE。

我不介意限制他們只能以一種視頻格式上傳,如果有幫助。僅意味着Quicktime .mov或.m4v - 無論如何工作。由於涉及iPhone和iPad,無法使用Flash。

我也沒有問題容納每個不同的瀏覽器與不同的代碼。我只需要知道哪種方法最適合哪種平臺/瀏覽器。

編輯:

我已經找到了如何來顯示從數據庫在計算機瀏覽器我關心的(不包括MSIE)的視頻。現在我需要弄清楚iPhone。爲了測試,我將這些文件放入服務器的文件系統中,並通過html5視頻標籤從那裏播放。所以iPhone能夠播放剪輯的格式。問題是,數據顯然是傳遞給iPhone從MySQL ......目前,檢索二進制數據,並將其發送到瀏覽器我的PHP文件指定以下標題:

header("Content-length: $audioLength"); 
header('Content-Range: bytes 0-'.$audioLength.'/'.$audioLength); 
header("Content-type: ".$mimeType); 

其中$ audioLength是文件大小以上傳數據捕獲的字節數
$ mimeType是瀏覽器在上傳時報告的MIME類型 - 這兩個值都會與二進制數據一起從數據庫傳遞到retrieve_audio.php腳本。

其他標題可能是必要的?我如何知道從文件系統獲取文件與數據庫之間的區別?

是可能的問題是,iPhone不檢索數據,直到你按播放按鈕?作爲最後的手段,我可​​以有PHP代碼寫入文件(S)到文件系統,但畢竟是數據的重複,我想避免,如果可能的話...

感謝,

中號

回答

2

查看http://diveintohtml5.ep.io/video.html瞭解關於HTML5視頻和不同格式的詳細信息。

簡化簡答:Firefox 4支持Ogg(Theora/Vorbis)和WebM; Safari(桌面和移動設備)支持MP4(H.264/AAC)。嘗試使用HTML5 <video>標籤是這樣的:

<video width="320" height="240" controls> 
    <source src="pr6.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> 
    <source src="pr6.webm" type='video/webm; codecs="vp8, vorbis"'> 
    <source src="pr6.ogv" type='video/ogg; codecs="theora, vorbis"'> 
</video> 

(實例網站上面鏈接嚴重的是,這是一個非常好讀,而且它還會告訴你如何確保您的視頻確實在IE工作, Chrome等)

編輯如果你絕對只需要使用一種視頻格式,你最好的選擇可能是使用H.264視頻和AAC音頻的MP4/M4V。 Safari(桌面和移動設備)可以在<video>標籤中播放,Firefox可以在Flash容器中播放。這不是理想的,因爲我認爲你必須做一些瀏覽器嗅探,以確保iOS不下載Flash和Firefox,但你會想是這樣的:

<!-- Safari and iOS --> 
<video width="320" height="240" poster="poster.jpg" controls> 
    <source src="video.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> 
</video> 

<!-- Firefox/other --> 
<object width="320" height="240" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> 
    <param value="player.swf"> 
    <param value="true" name="allowfullscreen"> 
    <param value="always" name="allowscriptaccess"> 
    <param value="file=video.mp4&amp;image=poster.jpg" name="flashvars"> 
    <embed 
     width="320" 
     height="240" 
     flashvars="file=video.mp4&amp;image=poster.jpg" 
     allowfullscreen="true" 
     allowscriptaccess="always" 
     src="player.swf" 
     type="application/x-shockwave-flash" 
    > 
</object> 

即使你走這儘管如此,我還是會閱讀Dive Into HTML5頁面,以獲得更多關於使用的編解碼器的相關信息,如何對視頻進行編碼,以及各種需要注意的問題。

+0

好的 - 就是用html5視頻標籤。我確信有一些方法可以將相同的剪輯嵌入到我感興趣的瀏覽器中,因爲客戶端向我展示的示例是一個iWeb生成的頁面。我會嘗試對其進行逆向工程。我不在乎處於最前沿 - 我只是希望它能夠在不使用不同視頻格式的情況下工作。 – 2011-05-15 00:52:02

+0

對於一種視頻格式,您可能需要使用MP4/M4V中的H.264,並將其放入Firefox的Flash容器中。缺點是你需要做瀏覽器嗅探。我編輯了我的回答與關於這個的信息。 – newtron 2011-05-15 15:02:50

+0

實際上,Firefox似乎沒有問題通過標記回放.mov和.m4v文件......我只在從數據庫檢索數據時纔在iPhone上播放問題,而不是服務器的文件系統。請參閱我的編輯原始帖子... – 2011-05-15 22:26:36

0

不幸的是,沒有單一的格式在如此多種設備上運行良好。您需要採取上傳的格式並將其轉換爲多種不同的格式。您可能希望查看像http://www.livetranscoding.com/這樣的服務來完成繁重的工作(請注意,我沒有使用過他們的服務,但我不知道是否有辦法讓它與非實時流一起工作)。

+0

不願意那樣做 - (不是我,客戶端)。蘋果的消費級別所見即所得應用程序iWeb能夠做到這一點 - 從第一次看到他們正在生成基於某種瀏覽器檢測的不同代碼 - JavaScript生成可用於我感興趣的三個平臺的標記。 – 2011-05-15 00:54:15