2014-01-21 34 views
-2

我試圖播放使用BLOB格式存儲在數據庫中的視頻。我正在使用PHP連接到數據庫。到目前爲止,這是我設法提供的腳本,我該怎麼做播放視頻?播放存儲在數據庫中的視頻

<!DOCTYPE html> 
<html> 
<body> 
<video width="420" height="345" controls> 
<source src="C:\Users\Administrator\Downloads\AustralianOpen.mp4" type="video/mp4"> 
</video> 

<?php 
$username="root"; 
$password="mysql"; 
$database="test"; 
mysql_connect('localhost', $username, $password) or die("Not able to connect to localhost"); 
mysql_select_db($database) or die("Unable to select DB"); 

if(($result=mysql_query('Select data from media'))!=false) 
{ 
    header('Content-Type: video/mp4'); 
    print $result->fetch(PDO::FETCH_COLUMN); 
} else 
{ 
    die("Video no connecting"); 
} 
?> 


</body> 
</html> 

我是PHP新手,因此不知道該怎麼做。儘可能幫助。謝謝。

+1

SO不是在這裏爲你寫代碼。作爲一個擁有與自己一樣多的SO經驗的人,你應該知道這一點。 – Styphon

+0

@Styphon我知道,但這是一種緊急情況。 –

+1

因此,去找工作委員會,付錢給你做。谷歌會爲你提供很多。 – Styphon

回答

3

由於涉及的文件大小,將視頻存儲在數據庫中是一個非常糟糕的主意。在這種情況下,發生了什麼事是fetch()將整個內容從數據庫緩衝區傳輸到PHP的內存中,然後是echo'd。這意味着您需要將整個視頻一次性整合到內存中,並且需要在PHP的時間限制到來之前將其傳輸到Web服務器。這可能適用於非常小的視頻,但不適用於任何值得觀看的長度的視頻。

一些像Postgres這樣的數據庫允許你打開一個文件句柄來處理數據庫中的內容,然後你可以直接將其轉儲到客戶端fpassthru;這是更有效的記憶方式,但仍然需要PHP來運行整個客戶端流式傳輸視頻。我也不確定MySQL是否支持它,從未使用它。

最後但並非最不重要的是,您不能只將視頻數據轉儲到HTML文件的中間。

更不用說,由於某種原因,您正在混合各種不屬於一起的數據庫API語法。

總的來說,這是一個糟糕的做法。您應該回到提供存儲在磁盤上的視頻文件,網絡服務器可以自行處理這些文件。

+0

那麼我如何處理Live Feed?就像,一個活動視頻不斷存儲在數據庫中,然後我需要顯示它。事情是,我將它存儲在數據庫中,因爲我需要倒帶並且沒有任何延遲地顯示它。那就是問題所在。因此,分貝。 –

+1

MySQL不適合處理任何類型的實況視頻流。有專門爲此任務構建的流媒體服務器,它不會使用RDBMS來存儲視頻數據,而是使用其他內存或磁盤緩衝區。回到繪圖板,它不會飛。 – deceze

+0

好的。將再試一次。 :/ –

相關問題