《FFmpeg Basics》中文版-25-調(diào)試和測(cè)試

寫(xiě)在前面

如果您對(duì)音視頻技術(shù)感興趣揍堰,可以訂閱我的專(zhuān)題:音視頻專(zhuān)輯
也可以關(guān)注我的簡(jiǎn)書(shū)賬戶(hù): 張芳濤踢匣,我后期會(huì)發(fā)布更多的音視頻以及圖像處理方面的文章势木。

正文

為了檢測(cè)錯(cuò)誤并測(cè)試各種輸入易猫,參數(shù)鄙煤,性能等晾匠,我們可以使用多個(gè)FFmpeg過(guò)濾器,選項(xiàng)和來(lái)源梯刚。 當(dāng)控制臺(tái)輸出很長(zhǎng)時(shí)混聊,-report選項(xiàng)會(huì)將測(cè)試結(jié)果保存到名為ffmpeg-yyyymmdd-hhmmss.log的文件中,其中斜體部分表示當(dāng)前日期和時(shí)間。

debug, debug_ts and fdebug選項(xiàng)

FFmpeg中的基本調(diào)試工具是一個(gè)-debug選項(xiàng)句喜,其中在下表中描述了17個(gè)可能值:

描述 打印關(guān)于所選音頻,字幕或視頻流的特定調(diào)試信息
語(yǔ)法 -debug[:stream_specifier]
可用值的描述
pict 圖片信息
rc 速率控制
bitstream 比特流
mb_type 宏塊(MB)類(lèi)型
qp 每塊量化參數(shù)(QP)
mv 運(yùn)動(dòng)矢量
dct_coeff DCT系數(shù)
skip 進(jìn)度跳躍
startcode 起始碼
pts 演示文稿時(shí)間戳
er 錯(cuò)誤識(shí)別
mmco 內(nèi)存管理控制操作(H.264)
bugs bugs(錯(cuò)誤)
vis_qp 可視化量化參數(shù)(QP)沟于,較低的QP是更綠色的
vis_mb_type 可視化塊類(lèi)型
buffers 圖片緩沖區(qū)分配
thread_ops 線程操作

例如咳胃,我們將mptestsrc源的短輸出保存為具有mmco值的MP4(H.264)文件:

ffmpeg -debug mmco -f lavfi -i mptestsrc -t 0.5 output.mp4

向控制臺(tái)輸出添加了12行描述各個(gè)幀; 包含的術(shù)語(yǔ)說(shuō)明:

  • QP - 量化參數(shù)
  • NAL - 網(wǎng)絡(luò)抽象層單元
  • 切片:B - 雙向預(yù)測(cè),I - 幀內(nèi)編碼旷太,P - 預(yù)測(cè)


另一個(gè)調(diào)試選項(xiàng)是-debug_ts展懈,它可以在處理期間打印時(shí)間戳信息,例如我們可以修改前面的示例并僅使用0.1秒(3幀):

ffmpeg -debug_ts -f lavfi -i mptestsrc -t 0.1 output.mp4

向控制臺(tái)輸出添加下一行:



選項(xiàng)-fdebug只有1個(gè)可能的值ts供璧,通常與-debug_ts選項(xiàng)一起用于各種測(cè)試存崖,例如調(diào)試DTS(解碼時(shí)間戳)和PTS(演示時(shí)間戳)關(guān)系。 使用上例中的修改后的命令睡毒,控制臺(tái)輸出顯示命令后列出的添加行:

ffmpeg -fdebug ts -f lavfi -i mptestsrc -t 0.1 output.mp4

用于錯(cuò)誤檢測(cè)的標(biāo)志

檢測(cè)ffmpeg處理中的錯(cuò)誤可以通過(guò)表中描述的-err_detect選項(xiàng)指定:

描述 檢測(cè)一個(gè)錯(cuò)誤来惧,該標(biāo)志指定了哪種類(lèi)型
語(yǔ)法 -err_detect[:stream_specifier] flag
可用標(biāo)志的描述
aggressive 考慮一個(gè)理智的編碼器不應(yīng)該做的錯(cuò)誤
bitstream 檢測(cè)比特流指定偏差
buffer 檢測(cè)不合適的比特流長(zhǎng)度
careful 考慮違反規(guī)范并且沒(méi)有被視為錯(cuò)誤的東西
compliant 將所有規(guī)范不合規(guī)視為錯(cuò)誤
crccheck 驗(yàn)證嵌入式CRC
explode 終止對(duì)較小錯(cuò)誤檢測(cè)的解碼

例如,要檢測(cè)不正確的比特流長(zhǎng)度演顾,我們可以使用以下命令:

ffmpeg -report -err_detect buffer -i input.avi output.mp4

日志記錄級(jí)別設(shè)置

日志記錄級(jí)別確定處理過(guò)程中控制臺(tái)輸出中顯示的內(nèi)容供搀,可用的修改值包括:安靜,恐慌钠至,致命葛虐,錯(cuò)誤,警告棉钧,信息屿脐,詳細(xì),調(diào)試宪卿。 要設(shè)置日志記錄級(jí)別的诵,我們可以使用選項(xiàng)-v或-loglevel選項(xiàng),例如對(duì)于詳細(xì)級(jí)別愧捕,我們可以使用以下命令:

ffmpeg -loglevel verbose -i input.avi output.mp4

時(shí)間基配置測(cè)試

過(guò)濾器asettb和settb用于測(cè)試時(shí)基配置奢驯,asettb用于音頻輸入并用于視頻輸入的建立。 兩個(gè)過(guò)濾器都具有相同的參數(shù)次绘,并在公共表中進(jìn)行了描述:


描述 兩個(gè)濾鏡都設(shè)置時(shí)基瘪阁,它將用于輸出幀時(shí)間戳。 此設(shè)置用于測(cè)試時(shí)基配置和類(lèi)似功能邮偎。 兩個(gè)過(guò)濾器的語(yǔ)法和參數(shù)都相同
語(yǔ)法 settb=expr
expr的結(jié)果是一個(gè)有理數(shù)管跺,可以包含下面描述的變量
表達(dá)式中可用的變量
AVTB 設(shè)置默認(rèn)時(shí)基值(AVTB =默認(rèn)時(shí)基)
intb 輸入時(shí)基
sr 采樣率,僅適用于asettb

下面的例子設(shè)置時(shí)基禾进,第一個(gè)設(shè)置為AVTB豁跑,第二個(gè)設(shè)置為0.3,第三個(gè)設(shè)置為輸入時(shí)基的1.5倍泻云。

ffmpeg input.mpg -vf settb=AVTB output.mpg
ffmpeg input.mpg -vf settb=0.3 output.mpg
ffmpeg input.mpg -vf settb=1.5*intb output.mpg

測(cè)試編碼功能

要為離散余弦亮度艇拍,色度狐蜕,亮度和色度的頻率和幅度等生成各種測(cè)試圖案,我們可以使用MPlayer項(xiàng)目中的mptestsrc濾鏡卸夕,該濾鏡在表中描述:


描述 生成與色度层释,亮度和其他視頻屬性相關(guān)的各種測(cè)試。 如果沒(méi)有參數(shù)使用快集,則會(huì)執(zhí)行所有測(cè)試贡羔,直到用戶(hù)停止該過(guò)程
語(yǔ)法 mptestsrc[=t=test_type[:d=duration[:r=rate]]]
參數(shù)的描述
test, t - 所選測(cè)試的名稱(chēng),可用測(cè)試為dc_luma个初,dc_chroma乖寒,freq_luma,freq_chroma院溺,amp_luma楣嘁,amp_chroma,cbp覆获,mv马澈,ring1,ring2
- 默認(rèn)值是"all"
duration, d 以秒為單位或HH:MM:SS格式的測(cè)試持續(xù)時(shí)間
r 幀率弄息,默認(rèn)值是25

下表說(shuō)明了特定測(cè)試值的樣本痊班。

模式 句法 圖片
DC亮度 mptest=t=dc_luma
DC色度 mptest=t=dc_chroma
亮度頻率 mptest=t=freq_luma
色度頻率 mptest=t=freq_chroma
亮度幅度 mptest=t=amp_luma
色度幅度 mptest=t=amp_chroma
編碼塊模式(CBP) mptest=t=cbp
運(yùn)動(dòng)矢量(MV) mptest=t=mv
test ring 1 mptest=t=ring1
test ring 2 mptest=t=ring2

測(cè)試模式

檢測(cè)各種錯(cuò)誤并為視頻測(cè)試提供源FFmpeg包含下面列出的3個(gè)特殊視頻源。 除顏色參數(shù)外摹量,它們與“圖像處理”章節(jié)“創(chuàng)建圖像”一節(jié)中介紹的顏色來(lái)源共享相同的參數(shù)涤伐。

RGB測(cè)試模式

要測(cè)試可用的RGB和BGR色彩空間是名為rgbtestsrc的視頻源

ffplay -f lavfi -i rgbtestsrc

滾動(dòng)漸變和時(shí)間戳的顏色模式

要生成類(lèi)似于TV模式的視頻模式,可以使用testsrc視頻源與命令:

ffplay -f lavfi -i testsrc

SMPTE條形圖案模式

可以使用以下命令創(chuàng)建來(lái)自電影和電視工程師協(xié)會(huì)(SMPTE)的彩條圖案:

ffplay -f lavfi -i testsrc

簡(jiǎn)單的數(shù)據(jù)包轉(zhuǎn)儲(chǔ)或有效負(fù)載(十六進(jìn)制)

為了更精確的調(diào)試缨称,也可以使用-hex選項(xiàng)轉(zhuǎn)儲(chǔ)有效負(fù)載凝果,通常使用-report選項(xiàng)將結(jié)果保存到當(dāng)前目錄中的文件。 使用此選項(xiàng)睦尽,處理速度非常慢器净,報(bào)告文件更大。 該命令的示例是:

ffmpeg -dump -hex -report -i input.mpg output.flv

CPU使用時(shí)間和內(nèi)存消耗

要在處理過(guò)程中顯示使用的CPU時(shí)間和內(nèi)存消耗当凡,我們可以使用產(chǎn)生類(lèi)似輸出的-benchmark或-benchmark_all選項(xiàng):

  • -benchmark選項(xiàng)顯示編碼后的結(jié)果

  • -benchmark_all以各種步驟顯示編碼過(guò)程中的結(jié)果
    不支持最大內(nèi)存消耗數(shù)據(jù)的計(jì)算機(jī)系統(tǒng)將顯示0而不是數(shù)值山害。 這兩個(gè)選項(xiàng)都是全局選項(xiàng),并在命令的開(kāi)頭輸入沿量,例如:

    ffmpeg -benchmark -i input.avi output.webm



    在控制臺(tái)輸出的末尾添加一條從工作臺(tái)開(kāi)始的行:utime表示在處理過(guò)程中CPU(計(jì)算機(jī)的中央處理單元)使用的時(shí)間浪慌。 benchmark_all選項(xiàng)顯示處理過(guò)程中的結(jié)果,完成后的屏幕顯示在下圖中朴则。

    ffmpeg -benchmark_all -i input.avi output.mpg
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末权纤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汹想,老刑警劉巖外邓,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異欧宜,居然都是意外死亡坐榆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)冗茸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人匹中,你說(shuō)我怎么就攤上這事夏漱。” “怎么了顶捷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵挂绰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我服赎,道長(zhǎng)葵蒂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任重虑,我火速辦了婚禮践付,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缺厉。我一直安慰自己永高,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布提针。 她就那樣靜靜地躺著命爬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辐脖。 梳的紋絲不亂的頭發(fā)上饲宛,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音嗜价,去河邊找鬼艇抠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炭剪,可吹牛的內(nèi)容都是我干的练链。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼奴拦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼媒鼓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绿鸣,失蹤者是張志新(化名)和其女友劉穎疚沐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體潮模,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亮蛔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了擎厢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片究流。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖动遭,靈堂內(nèi)的尸體忽然破棺而出芬探,到底是詐尸還是另有隱情,我是刑警寧澤厘惦,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布偷仿,位于F島的核電站,受9級(jí)特大地震影響宵蕉,放射性物質(zhì)發(fā)生泄漏酝静。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一羡玛、第九天 我趴在偏房一處隱蔽的房頂上張望别智。 院中可真熱鬧,春花似錦缝左、人聲如沸亿遂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛇数。三九已至,卻和暖如春是越,著一層夾襖步出監(jiān)牢的瞬間耳舅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工倚评, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浦徊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓天梧,卻偏偏與公主長(zhǎng)得像盔性,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呢岗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.簡(jiǎn)介 ffmpeg [global_options] {[input_file_options] -i inp...
    你家旭哥閱讀 6,582評(píng)論 1 4
  • 寫(xiě)在前面 如果您對(duì)音視頻技術(shù)感興趣冕香,可以訂閱我的專(zhuān)題:音視頻專(zhuān)輯也可以關(guān)注我的簡(jiǎn)書(shū)賬戶(hù): 張芳濤蛹尝,我后期會(huì)發(fā)布更多...
    張芳濤閱讀 11,554評(píng)論 11 38
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評(píng)論 0 5
  • 近來(lái)一直在做微信開(kāi)發(fā),涉及的東西很多悉尾,但是思路基本是從微信接口拿數(shù)據(jù)這樣一個(gè)流程突那。在開(kāi)發(fā)過(guò)程中,順便寫(xiě)了一個(gè)聊天頁(yè)...
    就在不遠(yuǎn)處閱讀 1,066評(píng)論 0 2
  • 人那么大一只 膽怎么那么小呢 想說(shuō)的不敢說(shuō) 想要的不敢?jiàn)Z 唉
    半瞇眼小孩閱讀 565評(píng)論 0 0