2010-05-10 130 views
2

我正在嘗試創建一個PHP腳本,它將根據查找位置(作爲參數傳輸給腳本)傳遞給定的.ogx文件。目的是製作具有服務器端搜索功能的HTML5視頻播放器。如何分割OGX(視頻)文件?

我已經研究了一下容器格式,並且讓.php腳本開始從查找位置(以字節給出)之前出現的「OggS」字符串的第一個實例傳遞數據。

的問題是,即使我的新.ogx文件與「OggS」字符串開始,它是在HTML5,VLC或者只要任何其他球員完全無法播放爲尋求位置比其他0

如果我將搜索位置設置爲0,那麼腳本會給我整個文件並且可以播放。

那麼如何在產生有效比特流的同時修剪.ogx文件的開始?

回答

0

你應該看看FFMpeg,它是一個庫,讓你以不同的方式處理視頻和音頻文件。 http://www.ffmpeg.org/

從他們的網站

FFmpeg的是一個完整的,跨平臺的解決方案 錄製,轉換和流 音頻和視頻。它包括 libavcodec - 領先的音頻/視頻 編解碼器庫。

0

首先我應該指出,Ogg容器中視頻的公共擴展名是.ogv。您正在使用的那個.ogx是爲Ogg容器中的可執行代碼保留的,但目前沒有可以攜帶此類代碼的流(試圖創建Flash的替代品,但它沒有起作用)。其次,theora的第一幀包含關於該流的所有元數據。玩家不能玩的原因是由於這個事實。如果你打算允許這樣一個搜索選項,你需要重新發送第一幀(你可能甚至不需要解碼它,只是重新發送它)。

那麼你正在尋找的是:

  1. 找到的第一個Theora的OggS分組,記錄它。
  2. 尋求你需要的點。
  3. 發送記錄的數據包。
  4. 跳過數據直到下一個「OggS」。
  5. 開始像往常一樣流式傳輸數據。

由於您的文件可能包含Vorbis流以及Theora,因此您可能還需要發送其第一個數據包。