最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

第二篇 FFmpeg轉(zhuǎn)碼流程、工作原理

2022-08-03 11:32 作者:青泉石上_  | 我要投稿

昨天舞臺敘事的原創(chuàng)文字,不給審核通過,b站HR說我們這些用戶是loser,我也沒辦法咯。


3. FFmpeg轉(zhuǎn)碼流程、工作原理及相關(guān)術(shù)語

3.1 文件轉(zhuǎn)碼流程:

解封裝Demux ——> 解碼Decode ——> 編碼Encode ——> 封裝Mux



3.2 相關(guān)術(shù)語

3.2.1?封裝格式轉(zhuǎn)換:解封裝Demux與封裝Mux(無編解碼/轉(zhuǎn)碼)

封裝(Container)見上文2.2.1稱為容器。https://www.bilibili.com/read/cv14517014


3.2.1.1 封裝,還稱為多路復(fù)用(Mux)。

封裝的目的

1. 是為了在一個文件流(Stream)中能同時存儲視頻流(Video Stream)、音頻流(Audio Stream)、字幕(Subtitle)、附件(t)、數(shù)據(jù)(d)等內(nèi)容。這正是“復(fù)用”的含義所在(分時復(fù)用)。

2. 是在網(wǎng)絡(luò)環(huán)境下確保數(shù)據(jù)的可靠快速傳輸。


3.2.1.2 封裝格式轉(zhuǎn)換

包括封裝與解封裝,復(fù)用(Mux)」與「解復(fù)用(Demux)」。

封裝格式轉(zhuǎn)換,就是在AVI,FLV,MKV,MP4這些格式之間進(jìn)行轉(zhuǎn)換(對應(yīng).avi/.flv/.mkv/.mp4后綴文件)。

  • 復(fù)用(Mux)」又稱為封裝

將多路流(視頻、音頻、字幕等),按照某種容器規(guī)則,混入一路輸出中(普通文件、流等)。是multiplex的縮寫。

  • 解復(fù)用(Demux)」又稱為解封裝

復(fù)用(Mux) 的反操作。從一路輸入中,解析分離出多路流(視頻、音頻、字幕等)。

  • 復(fù)用(Mux)」處理的是輸入格式,「解復(fù)用(Demux)」處理的輸出格式。


3.2.1.3?封裝格式轉(zhuǎn)換工作原理圖

封裝格式轉(zhuǎn)換工作原理

封裝格式轉(zhuǎn)換并不進(jìn)行視音頻的編碼和解碼工作。而是直接將視音頻壓縮碼流,從一種封裝格式文件中獲取出來,然后打包成另外一種封裝格式的文件。


3.2.1.4?封裝格式轉(zhuǎn)換特點:

  • 處理速度極快。視音頻編解碼算法十分復(fù)雜,占據(jù)了轉(zhuǎn)碼的絕大部分時間。因為不需要進(jìn)行視音頻的編碼和解碼,所以節(jié)約了大量的時間。

  • 視音頻質(zhì)量無損。因為不需要進(jìn)行視音頻的編碼和解碼,所以不會有視音頻的壓縮損傷。


3.2.2 編解碼轉(zhuǎn)換轉(zhuǎn)碼

使用FFmpeg對輸入源處理,然后輸出的過程叫做?

轉(zhuǎn)碼。轉(zhuǎn)碼可以改變文件格式,或者文件格式不變,只是更改其他數(shù)據(jù)。

編碼的目的

為了壓縮媒體數(shù)據(jù)。

有別于通用文件數(shù)據(jù)的壓縮,在圖像或音頻壓縮的時候,可以借助圖像特性(如前后關(guān)聯(lián)、相鄰圖塊關(guān)聯(lián))或聲音特性(聽覺模型)進(jìn)行壓縮,可以達(dá)到比通用壓縮技術(shù)更高的壓縮比。


傳統(tǒng)的編碼轉(zhuǎn)換程序工作原理圖

傳統(tǒng)的編碼轉(zhuǎn)換程序工作原理



3.3?轉(zhuǎn)碼步驟

1. Demuxer 解復(fù)用器 進(jìn)行Demuxing 解封裝:
FFmpeg根據(jù)輸入源的文件擴(kuò)展名,來選擇最佳的解封裝器:調(diào)用libavformat庫(包含解復(fù)用器)讀取 [輸入文件(Input file)] ,解封裝后生成 [包含編碼數(shù)據(jù)的數(shù)據(jù)包(Encoded data packets)],即壓縮狀態(tài)的數(shù)據(jù)包。(文件file → 數(shù)據(jù)包data packets)2.2.5 「數(shù)據(jù)包(Packet)」

2. Decoder 解碼器 進(jìn)行Decoding解碼 :
通過適當(dāng)?shù)慕獯a器將步驟1里面的數(shù)據(jù)包解碼為[未壓縮的數(shù)據(jù)幀](原始視頻/PCM音頻/...),可以通過 ※過濾Optional filtering※ 進(jìn)一步處理。(數(shù)據(jù)包data packages ——> 數(shù)據(jù)幀frames2.2.3 「幀(Frame)」

※ Optional filtering可選的濾鏡:通過指定的濾鏡修改解碼后的數(shù)據(jù)幀。(修改數(shù)據(jù)幀)

如果使用-c copy或-codec copy,將不會有解碼這個步驟,也就不會有下面的編碼步驟。

3. Encoder 編碼器 進(jìn)行Encoding編碼:
通過指定編碼器,對其進(jìn)行編碼,將數(shù)據(jù)幀編碼輸出為[編碼后的數(shù)據(jù)包(Encoded data packets)]。(數(shù)據(jù)幀frames ——> 數(shù)據(jù)包data packages

4. Muxer 復(fù)用器 進(jìn)行Muxing封裝:
將[編碼的數(shù)據(jù)包]封裝為指定的媒體格式[輸出文件(Output file)]。(數(shù)據(jù)包data packages ——> 文件file



  • FFmpeg相關(guān)術(shù)語中易混淆的概念(下一次詳細(xì)講)

自行思考「文件格式(File Format)」與「封裝格式(Container Format)」的區(qū)別

附上一張圖片

FFmpeg 流程文件格式和封裝格式的區(qū)別


第二篇 FFmpeg轉(zhuǎn)碼流程、工作原理的評論 (共 條)

分享到微博請遵守國家法律
延川县| 赣榆县| 分宜县| 汪清县| 万山特区| 宁蒗| 纳雍县| 德安县| 易门县| 独山县| 舟山市| 博罗县| 嘉荫县| 宣化县| 芜湖市| 霍林郭勒市| 永兴县| 南投县| 招远市| 佛山市| 丹巴县| 昌江| 巴彦淖尔市| 土默特右旗| 石台县| 屏南县| 潜江市| 福鼎市| 大丰市| 汝南县| 永定县| 资溪县| 田东县| 广丰县| 宁津县| 博爱县| 九江市| 五河县| 容城县| 汕头市| 无锡市|