2013-02-25 65 views
9

如何在不下載整個文件的情況下獲得ogg文件的播放長度?我知道這是可行的,因爲HTML5標籤和VLC都可以在加載URL後立即顯示整個播放長度,而無需下載整個文件。從s3獲取ogg軌道的長度而無需下載整個文件

是否有標題或我能讀的東西。也許即使是比特率,我可以通過文件大小來劃分它以獲得大致的播放長度?

+0

你打算如何閱讀所述ogg文件?此外,你將如何處理文件 - 簡單地提取信息並顯示? – Jesse 2013-02-27 05:55:21

回答

9

不幸的是,似乎沒有辦法做到這一點。

Mozilla的Configuring servers for Ogg media非常具有啓發性。基本上是:

  1. 壁虎採用X-Content-Duration頭 - 由送到Web服務器如果它有它。這解釋了您提出的HTML5音頻流示例。如果缺少,則
  2. 壁虎估計基於所述採樣速率(在報頭中)的長度和該文件的從Content-length HTTP頭

採樣率被存儲在識別頭的尺寸 - 第一個標頭數據包。見the specification轉到「4.2頭解碼和解碼設置」部分

0

這是不可能沒有下載數據本身。您可以將相關信息指定爲相關密鑰的S3元數據的一部分。因此,在實際下載數據之前,可以寫入以反思元數據。

+2

它必須是可行的。 HTML5'

1

這個可能的。這樣做的方法是使用HTTP range requests來獲取文件的末尾,找到最後一個Ogg頁面,並從中提取時間戳。這是假定文件由連續的流組成(即沒有鏈接),它們都具有相同的長度,並且流時間從0開始(否則,應該解碼流的開始並從最終時間戳中減去該時間戳) 。解碼來自Ogg Page granulepos字段的時間戳是編解碼器專用的(例如,對於Vorbis,它表示爲多個採樣)。

或者,如果您的Ogg文件具有Ogg Skeleton元數據,則可以直接讀取該文件以確定文件的持續時間。

相關問題