h.264視頻文件封裝

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

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

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以外的地方見到它的存在。

?

為什么有這么多的格式以及規范呢?


其實不然,試想一下,有的菜,例如排骨,比較大,碗放不下,得換鍋。有的飯比較燙,也不能放在塑料的容器里,當然個人喜好也有一定關系。所以容器的選擇,基本在于,其對視頻/音頻兼容性,以及適合范圍。這下大家應該明白了,很多人一直把封裝格式當成前面介紹的視頻編碼,而這兩者之間沒有必然的直接聯系。
+++
編碼方式:目前有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集中了以往標準的優點,高效壓縮,與H.263+
???????????????????? 和MPEG4 SP相比,減小50%比特率,高質量應用等
?????????????? rm/rmvb:real 公司推出的應用于網絡的高壓縮編碼,rm是固定
?????????????????? 碼率,rmvb是動態碼率(就是靜態畫面采用低碼率,動態
???????????????????? 采用高碼率)
???????? h.263? 和mpeg是不同的國際標準
封裝格式(也叫容器):所謂封裝格式就是將已經編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個文件中,也就是說僅僅是一個外殼,或者大家把它當成一個放視頻軌和音頻軌的文件夾也可以。說得通俗點,視頻軌相當于飯,而音頻軌相當于菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。

?????????????? AVI:微軟在90年代初創立的封裝標準,是當時為對抗
??????????????????? quicktime格式(mov)而推出的,只能支持固定CBR恒定
??????????????????? 比特率編碼的聲音文件。
?????????????? ts和ps:PS封裝只能在HDDVD原版,
??????????????? mov:??? MOV是Quicktime封裝
??????????????? WMV:微軟推出的,作為市場競爭

??????????????? mkv:萬能封裝器,有良好的兼容和跨平臺性、糾錯性,可帶
???????????????????? 外掛字幕。
?????????????? flv:h針對于h.263家族的格式
?????????????? rmvb/rm:Real Video,由RealNetworks開發的應用于rmvb和rm
?????????????? MP4:主要應用于mpeg4的封裝
h.264的壓縮比是最高的,主要應用于低碼率下的實時在線播放,rmvb壓縮比相對低一些,但質量要好很多
+++++一個完整的多媒體文件是由音頻和視頻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。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python cookbook 筆記三

分組: rows [{address: 5412 N CLARK, date: 07/01/2012},{address: 5148 N CLARK, date: 07/04/2012},{address: 5800 E 58TH, date: 07/02/2012},{address: 2122 N CLARK, date: 07/03/2012},{address: 5645 N RAVENSWOOD, date: 07/02/2012},{address: 1060 W A…

關于Vue2.0,Express實現的簡單跨域

npm install express -g 通過npm全局安裝express,之后可以通過 express --version 來查看express版本 express server 通過express server生成server項目文件 npm install 安裝server的項目依賴 可以通過執行server下的bin\www文件可以開啟服務 在www文件我們可以默…

mysql datetime類型按天查詢_mysql 時間相關sql , 按天、月、季度、年等條件進行查詢...

-- mysql查詢本季度-- 今天select * from ticket_order_detail where to_days(use_time) to_days(now());-- 7天SELECT *FROM ticket_order_detail where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date( use_time)-- 近30天SELECT *FROM ticket_order_detail where DATE_SUB…

ffmpeg分析系列

hello&#xff0c;各位好&#xff0c;本人是一名嵌入式軟件工程師&#xff0c;目前正使用ffmpeg開發一款嵌入式多媒體播放器&#xff0c;《ffmpeg分析》系列博文是本人在閱讀ffmpeg源代碼時所做的筆記&#xff0c;希望對各位有點幫助。分析過程結合下面的例程&#xff1a;http:…

Linux kernel的中斷子系統之(二):IRQ Domain介紹

返回目錄&#xff1a;《ARM-Linux中斷系統》。 總結&#xff1a;一、二概述了軟硬件不同角度的IRQ Number和HW Interrupt ID&#xff0c;這就需要他們之間架個橋梁。 三介紹了架設這種橋梁的幾種方式&#xff1a;Linear、Radix Tree和no map。 四介紹了兩種基礎數據結構描述中斷…

mysql返回yyyy mm dd_怎么把取出mysql數據庫中的yyyy-MM-dd日期轉成yyyy年MM月dd日格式...

您好&#xff0c;通過兩個個步驟可以完成轉換&#xff1a;第一步&#xff1a;日期處理可以在模板數據集中通過sql語句轉換&#xff0c;轉換方式方式如下&#xff1a;SELECT DATE_FORMAT(NOW(),%Y) YEAR輸出結果&#xff1a;2018SELECT DATE_F…

關于JS的時間控制

關于JS的時間控制實現動態效果及實例操作 <script>BOM //Bowers Object Model 瀏覽器對象模型setTimeout() // 延遲執行一次setInterval() // 間隔執行var a 300;window.setTimeout(abc(a),3000); // 自定義函數賦值function abc(i){alert(i);}//setInterv…

感動一生的幾句話

為什么80%的碼農都做不了架構師&#xff1f;>>> 很多東西就掌握在我們手中&#xff1a; 比如快樂&#xff0c;你不快樂&#xff0c;誰會同情你的悲傷&#xff1b; 比如堅強&#xff0c;你不堅強&#xff0c;誰會憐憫你的懦弱&#xff1b; 比如努力&#xff0c;你不…

mysql5.6 memcached_MySQL 5.6 安裝配置InnoDB memcached Plugin

準備工作, 安裝libmemached包&#xff0c;提供一些memcat/cp/dump命令&#xff0c;方便測試。# yum install libmemcached.x86_64 -y1. Setup required tables.mysql> source MYSQL_HOME/share/innodb_memcached_config.sqlQuery OK, 1 row affected (0.00 sec)Database cha…

Java 監聽器,國際化

1. 監聽器 1.1 概述 監聽器&#xff1a; 主要是用來監聽特定對象的創建或銷毀、屬性的變化的&#xff01; 是一個實現特定接口的普通java類&#xff01; 對象&#xff1a; 自己創建自己用 (不用監聽) 別人創建自己用 &#xff08;需要監聽&#xff09; Servlet中哪些對象需要監…

patator mysql 字典_利用patator進行子域名爆破

前言:原來朋友寫的一個子域名爆破工具挺好用,這前幾天API接口關了.痛苦萬分.自己也寫了一個類似的但是不咋穩定.特地google找了下 找到一款patator.效果和速度還是不錯的。knock的速度真心受不了啊patator是由Python寫的 不用安裝下載即可.下載地址&#xff1a;http://code.goo…

div 超出高度滾動條,超出寬度點點點

超出高度滾動條style"width:230px; height: 180px; overflow: auto;"超出寬度點點點style"width: 220px; overflow: hidden; white-space:nowrap; text-overflow:ellipsis;"轉載于:https://www.cnblogs.com/thinkingthigh/p/7603703.html

mp4(H264容器)的詳細文件格式分析

十六進制碼流分析&#xff1a; ftyp Box 00 00 00 1C: size ,28,表示此BOX有28個字節&#xff0c;表示長度的四個字節也計算在內。以下同 66 74 79 70: type,表示BOX TYPE,此處為ftyp 6D 70 34 32: 可能是兼容的格式信息&#xff0c;/mp42 00 00 00…

hdu 5925 搜索

題意&#xff1a;一個圖&#xff0c;n個障礙&#xff0c;求聯通塊 思路&#xff1a; 圖很大&#xff0c;障礙物很少。把聯通的障礙物塊摳出來&#xff0c;然后暴力。 代碼&#xff1a; #include<bits/stdc.h> using namespace std; #define MEM(a,b) memset(a,b,sizeof(a…

分析數據庫CitusDB:提供彈性計算能力

本文講的是分析數據庫CitusDB&#xff1a;提供彈性計算能力,企業數據庫市場很龐大&#xff0c;在這個領域既有Oracle這樣行家&#xff0c;也有IBM(DB2)和微軟(SQL Server)這樣的跨界巨頭。它們都與中小企業常用到的開源數據庫MySQL一樣&#xff0c;都屬于傳統關系型數據庫。似乎…

mysql不能創建innodb類型表_MYSQL have_innodb DISABLED無法創建innodb類型的表

今天在一臺MYSQL服務器上發現&#xff0c;明明用了engineinnodb創建的表&#xff0c;結果創建出來卻成了myisam的表。再看show variables like %innodb%;have_innodb 成了DISABLED。經過一番試驗&#xff0c;發現是我關閉數據庫后&#xff0c;直接刪除ibdata1文件造成的。刪除該…

[bzoj1059]矩陣游戲

雖然是一道水難題&#xff0c;但是我這種蒟蒻還是要講一講的。 Description 小Q是一個非常聰明的孩子&#xff0c;除了國際象棋&#xff0c;他還很喜歡玩一個電腦益智游戲——矩陣游戲。矩陣游戲在一個N*N黑白方陣進行&#xff08;如同國際象棋一般&#xff0c;只是顏色是隨意的…

H264 RTP頭分析

h264 RTP頭解析流程 結合NALDecoder.c分析 協議分析 &#xff1a;每一個RTP數據報都由頭部&#xff08;Header&#xff09;和負載&#xff08;Payload&#xff09;兩個部分組成&#xff0c;其中頭部前 12 個字節的含義是固定的&#xff0c;而負載則可以是音頻或者視頻數據。 一…

golang mysql 插入_Mysql學習(一)添加一個新的用戶并用golang操作Mysql

Mysql添加一個新的用戶并賦予權限添加一個自己的用戶到mysql首先我們需要先用root用戶登錄mysql&#xff0c;但是剛安裝完沒有密碼&#xff0c;我們先跳過密碼ailumiyanaailumiyana:~/Git_Project/Go_Test$ sudo mysqld_safe --skip-grant-tables2019-01-07T01:35:51.559420Z m…

云計算構建基石之Hyper-V:虛擬機管理

本文講的是云計算構建基石之Hyper-V:虛擬機管理,作為云計算的重要基石&#xff0c;虛擬化技術的好壞起著關鍵作用。Hyper-V作為微軟重要的虛擬化解決技術&#xff0c;在微軟云計算構建解決方案中&#xff0c;更是關鍵至關鍵&#xff0c;基礎之基礎。在本系列文章中&#xff0c;…