H264 Profile對比分析
Baseline
支援I/P 幀,只支援無交錯(Progressive)和CAVLC
一般用於低階或需要額外容錯的應用,比如視訊通話、手機視訊等;
Main
支援I/P/B 幀,無交錯(Progressive)和交錯(Interlaced),CAVLC 和CABAC
用於主流消費類電子產品規格如低解碼(相對而言)的mp4、便攜的視訊播放器、PSP和Ipod等;
High
在Main的基礎上增加了8x8 內部預測、自定義量化、無損視訊編碼和更多的YUV 格式(如4:4:4)
用於廣播及視訊碟片儲存(藍光影片),高清電視的應用。
0. 前言
本文首先會談談profile和level是幹什麼的,然後聊聊用ffmpeg和x264命令列怎麼指定對應引數,最後聊聊在程式碼中怎麼使用設定profile和level。
1. H264 Profile
簡單理解就是H264有多個版本,版本越高編碼效率和壓縮率就越高,對應的版本是Profile。
從低到高分別為:Baseline、Main、High
在相同配置情況下,High profile(HP)可以比Main profile(MP)節省10%的碼流量,比MPEG-2 MP節省60%的碼流量,具有更好的編碼效能。(這是個普遍認可的一組資料)
【整理者】61ic.com
【提供者】QuestionMark
2. H264 Level
每個level都規定了一組對標準中語法成員(syntax element)所採用的各種引數值的限制。
在給定的profile下,level通常與解碼器的處理能力和記憶體容量相對應。每一個檔次設定不同的引數(如取樣速率、影像尺寸、編碼位元率等),得到對應的編解碼器效能的不同level。
3. FFmpeg x264命令列編碼
詳細資訊參考x264 –fullhelp
3.1 常用引數
crf
用於控制視訊畫質,取值為[0-51],數值越低畫質越好
0:無損
51:最次
預設值23, 通常取值範圍:[18-28]
crf每+6,位元率減半
crf每-6,位元率翻倍
profile:
baseline, main, high, high10, high422, high444
preset:
ultrafast,superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
tune:
和使用場景,視訊源有關
film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency
Tune the settings for a particular type of sourceor situation
此外x264編碼還支援多執行緒,可用threads引數控制開啟的執行緒個數,當threads為0時自動選擇開啟多少個執行緒。
3.2 例項
首先需要FFmpeg在編譯的時候開啟了支援x264。
下面是幾個用ffmpeg進行轉碼的命令,video codec設定為libx264, audio codec為copy。
輸入視訊是用Android Nexus 5X拍攝,視訊時長約8s,720P,編碼採用h264(baseline),位元率11848kb/s,詳細資訊如下:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VID.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2017-03-08T06:38:22.000000Z
com.android.version: 7.1.1
com.android.capture.fps: 30.000000
Duration: 00:00:07.87, start: 0.000000, bitrate: 12344 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/smpte170m), 1280x720, 11848 kb/s, SAR 1:1 DAR 16:9, 28.99 fps, 120 tbr, 90k tbn, 180k tbc (default)
Metadata:
rotate : 270
creation_time : 2017-03-08T06:38:22.000000Z
handler_name : VideoHandle
Side data:
displaymatrix: rotation of 90.00 degrees
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)
Metadata:
creation_time : 2017-03-08T06:38:22.000000Z
handler_name : SoundHandle
CRF
ffmpeg -i VID.mp4 -c:v libx264 -profile high -crf xx -c:a copy -y vid_x264.mp4
CRF | 編碼速度(dutation/t) | 位元率(kb/s) |
---|---|---|
org | 1.0 | 11848 |
23 | 0.4 | 3552 |
22 | 0.37 | 4018 |
18 | 0.308 | 6661 |
Profile
ffmpeg -i VID.mp4 -c:v libx264 -profile high -c:a copy -y vid_x264.mp4
Profile | 編碼速度(dutation/t) | 位元率(kb/s) |
---|---|---|
org | 1.0 | 11848 |
high422 | 0.494 | 3552 |
high | 0.496 | 3552 |
main | 0.511 | 3542 |
baseline | 0.736 | 5331 |
Preset
ffmpeg -i VID.mp4 -c:v libx264 -profile high -crf 23 -preset ultrafast -c:a copy -y vid_x264.mp4
Profile | 編碼速度(dutation/t) | 位元率(kb/s) |
---|---|---|
org | 1.0 | 11848 |
ultrafast | 2.81 | 16585 |
faster | 0.645 | 3596 |
medium | 0.495 | 3552 |
veryslow | 0.068 | 3242 |
tune
和使用場景和視訊源有關
ffmpeg -i VID.mp4 -c:v libx264 -profile high -crf 23 -tune zerolatency -c:a copy -y vid_x264.mp4
位元率
執行緒
4. FFmpeg編碼設定
5. 參考文獻
[1] https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles
[2] H264視訊編碼級別說明profile level Encoder
[3] x264 FFmpeg Options Guide
[4] FFmpeg and H.264 Encoding Guide
相關文章
- tableau 對比銷售額分析
- profile對密碼的限制密碼
- MySQL效能分析工具之PROFILEMySql
- H264編碼分析及隱寫實踐
- android MVC && MVP && MVVM分析和對比AndroidMVCMVPMVVM
- 5款Java效能分析工具的對比Java
- MySQL使用profile分析語句效能消耗MySql
- 對比和分析幾個流行的前端框架前端框架
- Java常用的日誌框架對比和分析Java框架
- 開源Html分析器解析庫對比HTML
- Java中對HashMap的深度分析與比較JavaHashMap
- js對flv提取h264、aac音視訊流JS
- Linux與windows對比有什麼優勢?對比分析!LinuxWindows
- 慢查詢分析調優工具~show profile
- 用PyCharm Profile分析非同步爬蟲效率PyCharm非同步爬蟲
- Flutter Dio原始碼分析(二)--HttpClient、Http、Dio對比Flutter原始碼HTTPclient
- Golang閉包案例分析與普通函式對比Golang函式
- 主流移動端元件庫的對比和分析元件
- Android/Linux Thermal框架分析及其Governor對比AndroidLinux框架Go
- 華為榮耀8和小米5對比測評分析
- Java、C#執行緒模型分析對比 (轉)JavaC#執行緒模型
- Java中對HashMap的深度分析與比較(轉)JavaHashMap
- 使用Android Profile做效能分析及優化Android優化
- 寶付分析關於ExtJS與JQuery支付對比JSjQuery
- 對比歸一化和標準化 —— 量化分析
- SQL與Pandas大資料分析效能對比(Haki Benita)SQL大資料
- 對比Elasticsearch,使用Doris進行高效日誌分析(下)Elasticsearch
- 對比Elasticsearch,使用Doris進行高效日誌分析(上)Elasticsearch
- diff.js 列表對比演算法 原始碼分析JS演算法原始碼
- 密碼 報文分析 規約對比(97-07)密碼
- 瀏覽器大戰 Safari,Firefox,IE分析對比瀏覽器Firefox
- 【PROFILE】使用Oracle的PROFILE對使用者資源限制和密碼限制的研究與探索Oracle密碼
- profile檔案對sysdba使用者的影響
- map 對比
- 區塊鏈中的共識機制分析與對比區塊鏈
- [精華] RDMA技術原理分析、主流實現對比和解析
- 九個角度分析對比 Android、iOS開發區別AndroidiOS
- 移動 App 雲測試平臺的對比與分析APP