1. 程式人生 > >轉:視訊檔案封裝

轉:視訊檔案封裝

一個完整的多媒體檔案是由音訊和視訊2部分組成的。H264、Xvid等就是視訊編碼格式,MP3、AAC等就是音訊編碼格式。字幕檔案只是其中附帶部分。

把視訊編碼和音訊編碼打包成一個完整的多媒體檔案,可以有不同的方式,這種方式便是所謂的封裝方式,不同的封裝方式有不同的字尾。由於有些封裝方式具有很強的靈活性,它可以把各種不同的音視訊檔案打包成一個檔案,因此會出現這麼一種情況,雖然檔案的字尾是相同的,但有些可以正常播放,而有些不能播放,畢竟任何一種播放軟體都不是萬能的。部分先進的封裝方式還可以同時封裝多個音訊編碼檔案,甚至同時封裝進字幕檔案,如MKV封裝方式。MKV檔案可以做到一個檔案包括多種語種發音,多語字幕以適合不同的人觀看。

----------------------------------------------------------------------------------------------

目前有最常見的編碼方式:

mpeg1:vcd使用的就是這種編碼格式,解析度是352*288,壓縮比低

mpeg2:一般DVD使用,有NTSC(720*480)和PAL (720*576),和mpeg1一樣屬於即將被淘汰的編碼格式。

mpeg4 :目前使用最多的技術,avi檔案始祖,大大提高壓縮比,而質量堪比DVD

divx:基於mpeg4開發的,有一定演算法優化

xvid:divx技術封鎖之後被人破解開發的,也是基於mpeg4的編碼技術, 更先進,採用開放原始碼,畫質更好

h.261:早期的低位元速率編碼,應用於352x288和176x144,現在已不用

h.263:在低位元速率下能夠提供比H.261更好的影象效果,改進一些演算法

h.263+:h.263的改進型

h.264 :H.264集中了以往標準的優點,高效壓縮,

RV.10 RV.13 RV.20 RV.30 RV40: real 公司推出的應用於網路的高壓縮編碼,是不同時期rm和rmvb的編碼

-----------------------------------------------------------------------------------------

封裝格式(也叫容器):所謂封裝格式就是將已經編碼壓縮好的視訊軌和音訊軌按照一定的格式放到一個檔案中,也就是說僅僅是一個外殼,或者大家把它當成一個放視訊軌和音訊軌的資料夾也可以。說得通俗點,視訊軌相當於飯,而音訊軌相當於菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。

AVI:微軟在90年代初創立的封裝標準,是當時為對抗quicktime格式(mov)而推出的,只能支援固定CBR恆定

定位元率編碼的聲音檔案。

ts和ps:PS封裝只能在HDDVD原版,

mov: MOV是Quicktime封裝

WMV:微軟推出的,作為市場競爭

mkv:萬能封裝器,有良好的相容和跨平臺性、糾錯性,可帶外掛字幕。

flv: 這種封裝方式可以很好的保護原始地址,不容易被下載到,目前一些視訊分享網站都採用這種封裝方式

rmvb/rm:Real Video,由RealNetworks開發的應用於rmvb和rm的不同封裝方式。rm是固定位元速率,rmvb是動態

位元速率(就是靜態畫面採用用低位元速率,動態採用高位元速率)

MP4:主要應用於mpeg4的封裝,主要在手機上使用。

3GP:目前主要應用於H.263的封裝,主要在3G手機上使用

----------------------------------------------------------------------------------------------

理論上可以把任意一個視訊檔案和一個音訊檔案打包成一個完整的多媒體檔案,但不同的封裝方式有其不同的計算方式,它所要求的是在高壓縮率的同時又要兼顧高的清晰度效果。所以無論哪種封裝方式都不會把任意的一個視訊檔案和一個音訊檔案打包在一起。例如MKV封裝容器,基本無論什麼樣的組合都可以!但一般MKV用的最多的就是H264+AAC組合,此組合檔案體積最小,清晰度最高。因此網上很多MKV視訊都是高清晰度的。

下面是一些常見的組合方式:

封裝容器 視訊流編碼格式 音訊流編碼格式

AVI Xvid MP3

AVI Divx MP3

Matroska(字尾就是MKV) Xvid MP3

Matroska(字尾就是MKV) Xvid AAC

Matroska(字尾就是MKV) H264 AAC

MP4 Xvid MP3

MP4 H264 AAC

3GP H.263 AAC

--------------------------------------------------------------------------------------------

各種編碼對應的最佳位元速率

 編碼規範和封裝格式多種多樣,是因為它們對應的最佳位元速率不同。640x272低解析度的主要是Real Video,最佳位元速率在350-600Kbps,封裝檔案格式為RM或者RMVB,我們經常在網上下載的300M左右的電影基本都是RealVideo規範的RMVB檔案;解析度提升為1024x438時,一般就開始使用Xvid編碼了,位元速率也在800-1300Kbps不等,封裝檔案經常是AVI,檔案體積在700MB左右;而720P影片,我們經常下載的X264/AVC編碼MKV封裝檔案,位元速率5-6MB,音訊部分可以達到5.1音效,影音效果很不錯,但檔案體積都在4.3GB上下,一張DVD碟的容量,網上下載往往需要數天;1080P影片經常採用的有H.264編碼和VC1編碼,位元速率30Mbps上下,體積達到22-40GB,雖然效果震撼,但是不方便網路共享。對於容量8GB左右的MP4,綜合視訊來源以及體積,最適合的是Xvid編碼、位元速率在1300Kbps左右、檔案體積700MB-1.4GB的AVI,以及同樣位元速率和體積的RV40編碼RMVB,還有位元速率350-600Kbps的RMVB。

比較常用的有以下封裝格式

1 AVI

AVI容器-成熟的老技術

AVI是微軟1992年推出用於對抗蘋果Quicktime的技術,儘管國際學術界公認AVI已經屬於被淘汰的技術,但是由於windows的通用性,和簡單易懂的開發API,還在被廣泛使用。

AVI的檔案結構、分為頭部, 主體和索引三部分. 主體中影象資料和聲音資料是互動存放的。從尾部的索引可以索引跳到自己想放的位置。

AVI本身只是提供了這麼一個框架,內部的影象資料和聲音順據格式可以是任意的編碼形式。因為索引放在了檔案尾部,所以在播internet流媒體時已屬力不從心。很簡單的例子,從網路上下載的片子,如果沒有下載完成,是很難正常播放出來。另外一個問題是AVI對高位元速率VBR音訊檔案支援不好。

VBR全稱是Variable BitRate,就是動態位元率,可以根據當前的需要定義不同的位元率,避免了浪費,並且提高了利用率。隨之問題也就來了,因為容器裡的影象和聲音是分開的,所以播放時需要一個影象和聲音的同步過程,如果CBR音軌的話因為位元速率是定值,同步不成為問題,可是VBR音軌是不斷的在變換,而AVI沒有時間戳去讓VBR音軌和影象同步,這樣就會產生影象聲音不同步的問題。後來VirtualDub提出了一種新的方法擴充了AVI對VBR音訊的相容,但是在高位元速率時會產生丟失資料的問題,從而導致有損音效,這一點問題到現在都沒有比較完美的解決方法。並且更加令人遺憾的是,對TrueHD, DTS-HD等音效更是完全不能支援。

2 ts和ps封裝

因為HDDVD以及BD之爭,儘管兩家在編碼上都統一採用MPEG2/VC-1/H.264,可在封裝格式上又有所分岐。DVD論壇官方所認可的HDDVD使用的是PS封裝,即Program Stream(程式流),這和之前DVD所採用的MPEG2 Program Stream封裝是一樣的,PS流的字尾名是VOB以及EVO等。而BD在沒有DVD論壇官方認證的情況下,自然不是PS封裝,而是使用了MPEG2的另一封裝TS封裝,即Transport Stream(傳輸流),TS流的字尾名為TS。它們都是MPEG2系統部分的兩個不同的語法結構,而在現在僅僅在作為封裝使用。TS流對於PS流來說更易傳輸,不過由於其性質,也更易出錯,所以在以前一般儲存方面都是使用PS流,當然現在隨著容錯/糾錯技術的提高,TS的適用範圍越來越廣。

現在網上大多流傳以TS封裝的HDTV remux版,PS封裝只能在HDDVD原版才看到,所以我們來著重分析一下TS封裝格式。

電視節目是你任何時候開啟電視機都能解碼(收看)的,所以,MPEG2-TS格式的特點就是要求從視訊流的任一片段開始都是可以獨立解碼的。從結構上來說,TS是由標頭檔案和主體所組成的,擴充過的TS流還包括時間戳。這樣不管是什麼格式的VBR音軌,都很容易通過時間戳來同步影象。當然,對新的聲音格式來說,需要新的分離器,解碼器來實現解碼。目前在不斷改進開發中。

TS不像AVI,從誕生那天起,就考慮到了網路播放,所以很快成為了世界標準並廣泛應用於電視臺數字播放,手機等各個領域。

REMUX版本

Remux的意思是無損的提取出HD-DVD 和 BluRay-DVD裡面的視訊資料和音訊資料,封裝到我們熟悉的TS或者AVI檔案中

3 MOV封裝

不少HDRIP使用的封裝格式一般是AVI,MKV和MOV。MOV是Quicktime封裝,這一封裝和AVI幾乎是同一時代的,缺陷也不少,現在很少有人使用。

HDRIP:重新編碼,即有失真壓縮過之後的視訊。

4 MKV封裝

MKV是Matroska的簡稱,它是一種新的多媒體封裝格式,比較常見的搭配是X264+MKV。MKV封裝十分新穎,而且也非常開放,它對比AVI的優勢體現在以下幾點:

1:可變幀率:這需要編碼的配合,試想一下在回放變化比較慢(比如說靜物)時以比較低的FPS來代替,可以節省不少資源。

2:錯誤檢測以及修復:這無疑提供了糾錯和容錯性,在網路傳輸的今天尤為需要。

3:軟字幕:經常看DVDrip以及HDrip的朋友瞭解到,字幕一般都是以其它檔案形式存在,在MKV裡它可以內嵌在封裝裡,但不會和視訊混淆,也可以多字幕隨意選擇。這樣在傳輸儲存時比較方便。

4:流式傳輸:這和TS流的原因基本一致,通過時間戳來管理視訊以及音訊的同步問題,做到即下即看。

5:選單:互動式的操作使得MKV更加人性化。

6:強大的相容性:MKV最大的特點就是能容納多種不同型別編碼的視訊、音訊及字幕流,即使是非常封閉的RealMedia及QuickTime也被它包括進去了,堪稱萬能的媒體容器。

7:開放性和跨平臺性:Matroska使用的是一種開放的架構,擁有眾多的先進特性,並且能跨平臺使用。

不過Matroska相對於以上我們介紹的缺點也是顯而易見的,它沒有深厚的背景可以依託,這決定了它不可能在商業領域裡有所作為。不過從DVDrip裡我們看到並非標準才是唯一,真正先進的技術在標準化商業化的道路上碰到很多非技術壁壘,而在網上而言,根本不存在這樣那樣的顧慮,所以MKV可以網上快速流行起來。

不過MKV的缺點也是顯而易見的,分離器方面比較好的僅有HAALI分離器,再加上民間標準的緣故,我們很難在PC以外的地方見到它的存在。

相關推薦

視訊檔案封裝

一個完整的多媒體檔案是由音訊和視訊2部分組成的。H264、Xvid等就是視訊編碼格式,MP3、AAC等就是音訊編碼格式。字幕檔案只是其中附帶部分。 把視訊編碼和音訊編碼打包成一個完整的多媒體檔案,可以有不同的方式,這種方式便是所謂的封裝方式,不同的封裝方式有不同的字尾。由於有些封裝方式具有很強的靈活

h.264視訊檔案封裝

+++++一個完整的多媒體檔案是由音訊和視訊2部分組成的。H264、Xvid等就是視訊編碼格式,MP3、AAC等就是音訊編碼格式。字幕檔案只是其中附帶部分。    把視訊編碼和音訊編碼打包成一個完整的多媒體檔案,可以有不同的方式,這種方式便是所謂的封裝方式,不同的封裝方式有不同的字尾。由於有些封裝方式具有很

】H264 視訊檔案 幀格式 傳輸封裝等 雜碎

H.264 NAL格式及分析器程式原始碼           email:[email protected] NAL分析器程式原始碼 /*! ******************************************************************************

java提高篇(一)-----理解java的三大特性之封裝

nss 一般來說 隱藏 source 沒有 實例 十個 影響 角度 轉 CSDN https://blog.csdn.net/chenssy/article/details/12757911?utm_source=blogxgwz0 從大二接觸java開始,到現在也差

【成熟方案】新港海岸NCS8803HDMIEDP視訊轉換晶片方案

3.2、NCS8803 3.2.1 功能:是一顆將HDMI訊號轉EDP訊號的轉接晶片。其應用如下: 3.2.2產品特徵 輸入:HDMI 輸出:Embedded-DisplayPort (eDP) EDP介面 1/2/4-lane eDP @ 1.62/2.7Gbps per l

【成熟方案】新港海岸NCS8801SRGB/LVDSEDP視訊轉換晶片方案

3、新港海岸 3.1、NCS8801S 3.1.1 功能:NCS8801S是一顆將LVDS/RGB訊號轉換成EDP訊號的轉接晶片,其應用圖如下: 3.1.2產品特徵: 輸入:Single/Dual link LVDS/RGB 輸出:EDP EDP介面: 1/2/4-lane

】將HTML5封裝成android應用APK 檔案若干方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ssm spring+springmvc+mybatis中的xml配置檔案詳解

這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先   這篇文章暫時只對框架中所要用到的配

/usr/bin/env: "python\r": 沒有那個檔案或目錄

本文為博主原創文章,轉載請註明出處。 https://blog.csdn.net/OOC_ZC/article/details/72857925 在Ubuntu終端中執行python檔案,報錯 /usr/bin/env: "python\r":沒有那個檔案或目錄 這個檔案是從g

iTOP-4412實現NFS網路檔案系統

[學習嵌入式開發板]iTOP-4412實現NFS網路檔案系統 <div class="extra ui horizontal list meta-wrap"> <div class="item">

web.xml檔案報錯:cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'.

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns

【HDFS基礎】HDFS檔案目錄詳解

版權宣告:本文為博主原創文章,若轉載,請註明出處,謝謝!    https://blog.csdn.net/baiye_xing/article/details/76268495 HDFS的檔案目錄圖 分析:從上圖可以看出,HDFS的檔案目錄主要由NameNode

視訊檔案格式--視訊封裝格式--視訊編碼格式區分

前言 什麼是影片?其實就是一組(很多張)圖片,時間間隔很小的連續展示出來,人們就覺得畫面中的人物在動,這就是影片。 那電影的實質就是N多張圖片的集合。那每張圖片和幀又有什麼關係呢? 事實上,如果一部影片裡面的圖片,我們原封不動的全部存起來,空間會很大很大很大,但是如果

】 VMWare虛擬機器提示鎖定檔案失敗,打不開磁碟的解決辦法

如果執行虛擬機器時,物理機突然崩潰,則會導致這種問題。 這是因為虛擬機器在執行的時候,會鎖定檔案,防止被修改,而如果突然系統崩潰了,虛擬機器就來不急把已經鎖定的檔案解鎖,所以你在啟動的時候,就會提示無法鎖定檔案,如下圖:   解決方法如下:   開啟你存放虛擬機器系統硬碟的所在資料夾,注意

tensorflow基礎學習字元數字驗證碼寫入tfrecord檔案封裝成類

今天分享一下我寫的一個小小程式,基本可以滿足數字+字元型別字串寫入tfrecord檔案。還請多多指教! 簡單說明:這個是數字+字元4位驗證碼的tfrecord生成程式碼,5位,6位的可以自行修改一下,也就一點程式碼。我因為有點晚了就先不改了,大家加油啦。 先做些準備工作。

esxi6.7使用命令列克隆vmdk檔案

esxi使用命令列克隆vmdk檔案 2018年5月14日 0條評論 1,338次閱讀 1人點贊 前言 最近VMware釋出了vsphere6.7,找個機會測試下。自己筆記本的workstation記憶體太小,只能搞個esxi先試試,等有機會用家裡的桌上型電腦測試下vCenter Se

SSM配置檔案詳解

這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首

2018年教育部《關於面向中小學生的全國性競賽活動管理辦法(試行)》檔案通知

----全文如下---- 關於面向中小學生的全國性競賽活動管理辦法(試行)   為規範管理面向中小學生(包含在園幼兒,下同)的全國性競賽活動,防止活動專案過多過濫,切實減輕中小學校(包含幼兒園,下同)、中小學生和家長負擔,維護正常教育教學秩序,根據中共中央辦公

FFMPEG音視訊解碼流程&MP4音視訊檔案流讀取(

1.播放多媒體檔案步驟 通常情況下,我們下載的視訊檔案如MP4,MKV、FLV等都屬於封裝格式,就是把音視訊資料按照相應的規範,打包成一個文字檔案。我們可以使用MediaInfo這個工具檢視媒體檔案的相關資訊。 所以當我們播放一個媒體檔案時,通常需要經過以下幾個步驟

c++基礎資料型別轉換及處理(一)stringwstring及檔案拷貝

使用java太長時間,已經習慣了其資料型別轉換及處理的便捷。但是,現在使用c++,不得不去面對其資料型別轉換,以及相關的處理。瞬間感覺奔潰,一天中,很多時間都交給度娘了... 檔案拷貝 本來很方便,提供了CopyFile,但是看到入參,瞬間崩潰,普通字串不行