1. 程式人生 > >h.264視訊檔案封裝

h.264視訊檔案封裝

+++++一個完整的多媒體檔案是由音訊和視訊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。

相關推薦

h.264視訊檔案封裝

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

使用jrtplib傳輸H.264視訊檔案(3)

介紹如何傳送h264,下面我們介紹下如何接收h264檔案。 其中主要關注的就是被拆分的資料包的重組,下面的程式碼中有詳盡的註釋。 class CRTPReceiver : public RTPSession   {   protected:       vo

基於srs-librtmp釋出H.264視訊檔案到伺服器

開發平臺:Linux說明:srs提供了釋出H.264的例子,在例子程式碼檔案為srs_h264_raw_publish.c,例子呼叫srs-librtmp函式庫即可實現H.264檔案釋出到伺服器。srs-librtmp為VS2010工程,在Linux下可以直接使用原始碼,在s

使用jrtplib(RTP)傳輸H.264視訊檔案(1)

繼續上一篇部落格,在使用x264對視訊進行編碼之後,我們需要將編碼好的視訊進行網路傳輸,傳送給其他的客戶端,之後再進行解碼。那麼,這篇部落格我將介紹下如何使用jrtplib這個庫對編碼後的檔案傳輸。 RTP協議基礎知識: 首先,我們依然要先了解一些關於協議的基礎知

H.264視訊編碼推薦的解析度和位元速率配置表

在各種視訊編碼標準中,行業一直在求追“高壓縮比(資料量越小越好)”,同時又保證“高視訊質量”的演算法。魚和熊掌不可兼得,視訊編碼是一種折中的遊戲。引數“視訊位元速率”的設定,就代表了這種折中的選擇。位元速率越高,資料量越大,視訊質量越好,位元速率越小,資料量越小

Android音視訊-視訊編解碼(H.264視訊硬編硬解)

在前面接觸了音訊的編解碼,學習了通過MediaCodec來進行硬編碼。把AudioRecord 採集的到的PCM音訊資料編碼壓縮為AAC格式的音訊資料,然後解碼為PCM通過AudioTrack來播放。參考Demo連結 前面我們可以很形象的瞭解音訊資料,然後如何

轉:視訊檔案封裝

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

實現RTP協議的H.264視訊傳輸系統

前面分別討論了RTP 協議及H.264基本流的結構,那麼如何使用RTP協議來傳輸H.264視訊了?一個有效的辦法就是從H.264視訊中剝離出每個NALU,在每個NALU前新增相應的RTP包頭,然後將包含RTP 包頭和NALU 的資料包傳送出去。下面就從RTP包頭和NALU兩方面分別闡述。       完整的

H.264視訊碼流解析

原理 H.264原始碼流(又稱為“裸流”)是由一個一個的NALU組成的。他們的結構如下圖所示。 其中每個NALU之間通過startcode(起始碼)進行分隔,起始碼分成兩種:0x00000

【譯】解決HTML5 MP4(H.264)視訊模糊的問題

MP4視訊檔案是所有主要的現代瀏覽器都認可和接受的檔案格式。如果你想知道具體的支援情況,請檢視 Can I Use 但是!當 HTML5視訊標籤Video 嵌入網頁中,如果沒有正確配置好你的MP4視訊會得到一個模糊影象的視訊。發生這種情況的原因是,這種型別的視

ffmpeg實現H.264視訊解碼-1

▶ ffmpeg是一個優秀的開源多媒體編解碼集合 ▶ ffmpeg的libavcodec完成音視訊的編碼或解碼 ▶ H.264視訊解碼主要由H264.c實現 ▶ H264.c能夠流暢解碼x264編碼工程的碼流 ▶ ffmpeg的H.264解碼過程包括初始

如何推送h.264視訊直播流到rtmp server

如果要單純的以h.264的碼流推送攝像頭的視訊到rtmp server(ip:127.0.0.1),可以這樣: ffmpeg -f video4linux2 -vcodec libx264 -vpre default  -s 320x240 -i /dev/video0

關於LED電視機視訊編碼H.264,MPEG4,MPEG2能支援哪些格式的視訊檔案

MPEG4封裝格式能支援.MPG、.3GP、.MP4等視訊檔案格式的視訊。 今天買了一臺很普通的LED電視機,當前電視機基本都提供USB介面,以便播放U盤或者行動硬碟的視訊資源,可是在問賣家電視機支援什麼格式的視訊檔案時,他告訴我支援H.264,MPEG4,M

h.264視訊流封裝成flv格式檔案(二.開始動手)

封裝前要先了解下h.264格式,只需要知道一點點就可以了,我看了h.264官方文件,我靠,3百多頁,還全是中文,什麼,是中文?既然是中文的我就勉強看下吧,我靠,看起來還很複雜的,果斷不看了,不需要,也沒時間,我又不做解碼,這東西具體步驟資料又少,基本都是那一兩篇轉來轉去,這還要感謝我上一篇提到的那個連線的兄

FFmpeg,H.264,Directshow,和opencv及視訊編碼與封裝格式

http://www.voidcn.com/blog/yhhyhhyhhyhh/article/p-5769736.html     最近做專案,參考網上的資料,梳理了一下視訊採集,編碼,傳輸,顯示相關知識及常用的視訊處理框架和開源庫(本文有誤的地方請見諒,好多概念

使用FFmpeg的SDK庫實現將H.264封裝進MP4檔案時全域性SPS、PPS與流中SPS、PPS衝突的問題

一、問題1. 使用FFmpeg的SDK庫實現將H.264流封裝進MP4檔案的原始碼大致如下:char* filename = "./test.mp4"AVOutputFormat *fmt;AVStream* video_st;AVFormatContext *av_cont

H.264(H264)視訊檔案的製作

一、準備工作 1.下載並安裝優酷客戶端 2.下載ffmpeg可執行檔案,解壓可用,不需要下載原始碼自己編譯。 ffmpeg可執行檔案下載連結:http://download.csdn.net/deta

h.264視訊流封裝成flv格式檔案(一.flv格式)

其實flv還是挺簡單的一個視訊格式,下面就來先談一談FLV的格式吧。 FLV是一個二進位制檔案,簡單來說,其是由一個檔案頭(FLV header)和很多tag組成(FLV body)。tag又可以分成三類:audio,video,script,分別代表音訊流,視訊流

即時通訊音視訊開發(五):認識主流視訊編碼技術H.264

前言 即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。 系列文章 《即時通訊音視訊開發(三):視訊編解碼之編碼基礎》 《即時通訊音視訊

C++實現RTMP協議傳送H.264編碼及AAC編碼的音視訊直播

  RTMP(Real Time Messaging Protocol)是專門用來傳輸音視訊資料的流媒體協議,最初由Macromedia 公司建立,後來歸Adobe公司所有,是一種私有協議,主要用來聯絡Flash Player和RtmpServer,如FMS, Red5,