影片與字幕·直接媒體下載器
容器和編解碼器:MP4、WebM 或 MP3 檔案實際包含的內容
· 背景
媒體 視頻 音頻
下載檔案只是工作的一半;玩它取決於裡面有什麼。這篇文章解釋了容器、編解碼器以及為什麼正確下載的 MP4 仍然無法在給定的播放器或編輯器中播放。
下載正常,但仍然無法開啟 - 為什麼成功下載的檔案不是可播放的檔案
完成的傳輸證明回應位元組已到達瀏覽器並已儲存。它並不能證明編輯器理解這些位元組內所需的結構或解碼器。
直接媒體下載器不會開啟媒體內部結構。它將區塊保留在伺服器的 MIME 標籤下的 Blob 中並選擇檔案名,將播放診斷留給媒體工具。不完整的回應也可能建立無法播放的檔案,因此在得出編解碼器支援是唯一問題的結論之前,請先比較交付的大小和傳輸錯誤。中斷的回應也可能產生不可用的結果,因此在假設解碼器不相容之前檢查傳輸完成情況。
容器:盒子 — MP4、WebM、MKV 和 MP3 作為保存曲目、計時和元資料的包裝器
容器組織軌道、計時、索引和元資料。 MP4、WebM 和 MKV 是熟悉的視聽容器; MP3 一詞通常用於 MPEG 音訊檔案格式,而不是一般的視訊包裝。
包裝器告訴軟體如何定位組件。它並不要求每個識別外部結構的應用程式都支援每個可能的編解碼器。容器可以容納多個音軌、字幕、章節和元資料,這進一步解釋了為什麼僅靠後綴無法概括播放需求。多個音軌、字幕流、章節和元資料可以共享一個包裝器,從而使後綴成為特別不完整的描述。
編解碼器:內容 — H.264、VP9、AV1、AAC 和 Opus,以及為什麼同一容器可以容納不同的編解碼器
編解碼器定義影像或聲音的編碼和解碼方式。 H.264、VP9 和 AV1 描述視訊編碼系列; AAC 和 Opus 描述了音訊編碼選擇。
一個 MP4 可以攜帶舊編輯器處理的組合,而另一個 MP4 使用那裡不可用的較新編解碼器。因此,匹配後綴並不意味著相同的解碼要求。設定檔和等級細化了編解碼器要求,即使同一台電腦上的應用程式之間的硬體加速可用性也可能有所不同。編解碼器設定檔和等級進一步完善了要求,而一台機器上的應用程式之間的硬體解碼支援可能有所不同。
為什麼擴展名告訴您盒子,而不是內容 - 大多數“錯誤格式”令人驚訝的根源
擴充功能通常命名容器約定,而不是每個軌道編解碼器。 Content-Type 同樣廣泛地標記了表示形式,並無法列舉每個內部功能。
將 `.webm` 重新命名為 `.mp4` 僅變更標籤。它不會重寫容器或轉碼編解碼器,因此軟體混亂可能會增加而不是消失。 MIME 值(例如 `video/mp4`)類似地命名了廣泛的表示形式,而不是承諾特定的 H.264 或 AAC 組合。諸如 `video/mp4` 之類的廣泛 MIME 值同樣不能保證一種特定的視訊和音訊編碼組合。它是初始路由提示,而不是解碼器清單。
工作範例:兩個 .mp4 檔案,一個到處播放,一個不播放 - 閱讀編解碼器資訊以了解原因
對於兩個授權的 MP4 下載,請在受信任的檢查器中開啟每個檔案並比較視訊編解碼器、音訊編解碼器、設定檔、尺寸和軌道佈局。一個可能適合編輯器支援的解碼器集,而另一個則不適合。
此範例需要真實的檔案證據;沒有聲稱通用的「到處播放」編解碼器組合。應用程式版本、作業系統和安裝的元件可能會更改相容性。了解標準的檢查員可以在不更改檔案的情況下報告這些事實,從而保持診斷和轉換之間的清晰差異。具有標準意識的檢查員會在不修改位元組的情況下報告這些屬性,從而在任何建議的轉換之前保留診斷。
這不包括什麼——轉碼,這是一項單獨的工作,而不是下載者應該默默做的事情
轉碼對曲目進行解碼和重新編碼,或將它們重新混合到另一個容器中。這是一個單獨的處理作業,具有品質、相容性和資源決策。
下載器絕對不會默默地轉換或組裝輸出。標記為 WebM 的回應保留主機提供的字節,即使 URL 或標頭暗示了另一種期望。即使無損重新復用也會改變結構,並應該經過深思熟慮;重新編碼可以改變品質、大小、顏色、時間和元資料。即使重新混合也會改變結構,而重新編碼也會改變品質、大小、時間、顏色和元資料;兩者都值得明確批准。在進行任何操作之前請保留原件。
重點:了解您要保存的內容 — 直接媒體下載器如何完全按照所提供的方式保存檔案,而無需重新編碼
在指責傳輸之前了解收到的內容。比較預期的來源、位元組大小、MIME 標籤、檔案名稱和檢查器輸出,然後選擇允許的相容播放器或有意的轉換工作流程。
ToolAcre 的窄保真度很有用:它不會透過重新編碼引入新的編解碼器問題。它也不能僅僅因為 GET 成功而修復不受支援或損壞的來源。將這些階段分開可以使故障排除變得可審核:首先傳輸,其次檢查,並僅在明確的交付要求下進行轉換。將傳輸、檢查和轉換分開會導致失敗,並防止下載者默默地更改可交付成果。