2014-01-19 56 views
1

我想從視頻中提取單幀(如拇指),而無需下載完整的視頻文件。我只想讀取mp4頭文件(信息應該在moov原子中),然後下載所需的字節範圍。 Afaik多數民衆贊成什麼,當你跳到一個無緩衝的部分什麼瀏覽器(HTML5視頻)使用縮略圖的MP4文件塊

我已經看過:How can HTML5 video's byte-range requests (pseudo-streaming) work?,但我不知道如何使用它與ffmpeg例如。

非常感謝!

回答

8

下面是一般的算法可能會運行,如果你是絕對決心把這種方法工作:

  • 下載MP4文件的第一個千字節
  • 確保moov原子是鋒線;確定moov原子的長度,並提出另一個請求來獲取原子的其餘部分
  • 挖通過moov原子找到視頻trak原子;挖成原子找到以下原子:stsdstssstco/co64stsz
  • stsd會給你送入H.264視頻解碼器
  • stss原子給你一個列表中選擇所需的初始化信息所有同步樣本(關鍵幀);這些可以獨立解碼和將是理想的爲你的縮略前景
  • 當你知道哪些幀的關鍵幀,則 stss原子的禮貌,可以跨與 stcoco64原子參考(一個 trak將具有一個或另一個)
  • 爲了找到絕對文件位置和stsz原子,它會告訴你到底有多少字節的幀

有了所有這些信息結合起來,你應該能夠下載和解碼(因而調整大小並重新壓縮縮略圖)只是MP4視頻的關鍵幀。