2016-12-25 51 views
0

可以說我有這個視頻的網址:http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4 我只需要從該視頻下載一個小的可播放片段(例如00:24 - 00:30)。Java - 從URL的視頻獲取片段

我應該如何在java中做到這一點?我不想下載整個視頻,然後剪下。

我已經看了鉻的網絡標籤和讀取請求和響應頭,但不能得到它太大意義,除非:

  • :在請求頭「範圍字節= 0-」
  • 「內容長度:5510872」的響應頭

但我不能只選擇任何範圍,因爲它將使不是視頻播放的吧?

那麼,如果我點擊00:24,瀏覽器如何知道它應該得到的範圍?

回答

1

假設你有.MP4集裝箱工作, MP4文件格式中包含的「盒子」(又名「原子)的層次結構。快速尋求神奇在於moov原子是編碼時,爲什麼視頻網站它總是最大限度地優化文件的結構和重定位到前面,這樣瀏覽器訪問元數據,因爲它下載的第一件事。

moov 電影盒子是容器的所有元數據 每個moov都有一個mvhd(Movie header box) 它可以包含N trak框(es)。每個trak框包含特定媒體元數據信息,通常情況下,這將有2個軌道(視頻和音頻) 更重要的是,它包含了樣本信息,如STSD,STTS,STSZ科技小組,STCO等..

stts - 時間對樣品(stts)框。 此框包含每個幀的時間(以緊湊的方式)。從這裏你可以找到包含使用Sample-to-Chunk(stsc)原子的框架的'塊'。最後,塊偏移原子(stco)爲您提供文件中的字節偏移量。

MP4ParserXuggler這樣的項目可以讓你開始自己處理MP4容器(有樣本可以閱讀底層的MP4結構),但這不是一件小事 - 很遺憾,似乎並沒有一個全面的MP4 API工具包對於Java

+0

謝謝你給我一些出發點。沒有什麼是不能用一些汗水和血液來完成的,但是一個工具包雖然不錯,但是我不想把它限制在mp4上,而且Xuggler看起來很有前途 – MrSunshine