我以IBPBP的編碼結構編了15幀(在encoder.cfg中令FramesToBeEncoded ??? = 15 ),但編碼完成后實際編碼的幀數是29(1I幀,14P幀,14B幀),不太明白實際編碼的幀數為什么與FramesToBeEncoded的設置不同,另外對解碼后的結果如下:
----------------------------- JM 10.2 (FRExt) -----------------------------
Decoder config file ?? ?? ?? ?? ?? ??? : decoder.cfg
--------------------------------------------------------------------------
Input H.264 bitstream ?? ?? ?? ?? ?? : test.264
Output decoded YUV ?? ?? ?? ?? ?? ?? : test_dec.yuv
Output status file ?? ?? ?? ?? ?? ?? : log.dec
Input reference file ?? ?? ?? ?? ?? : test_rec.yuv
--------------------------------------------------------------------------
POC must = frame# or field# for SNRs to be correct
--------------------------------------------------------------------------
?? Frame ?? POC Pic# QP SnrY SnrU SnrV Y:U:V?? Time(ms)
--------------------------------------------------------------------------
0000(I) ?? ?? 0 ??? 0 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0002(P) ?? ?? 4 ??? 1 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 187
0001(B) ?? ?? 2 ??? 2 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0004(P) ?? ?? 8 ??? 2 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0003(B) ?? ?? 6 ??? 3 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 187
0006(P) ?? ??? 12 ??? 3 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0005(B) ?? ??? 10 ??? 4 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 204
0008(P) ?? ??? 16 ??? 4 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 187
0007(B) ?? ??? 14 ??? 5 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0010(P) ?? ??? 20 ??? 5 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0009(B) ?? ??? 18 ??? 6 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 218
0012(P) ?? ??? 24 ??? 6 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0011(B) ?? ??? 22 ??? 7 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0014(P) ?? ??? 28 ??? 7 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0013(B) ?? ??? 26 ??? 8 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0016(P) ?? ??? 32 ??? 8 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 187
0015(B) ?? ??? 30 ??? 9 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 219
0018(P) ?? ??? 36 ??? 9 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 187
0017(B) ?? ??? 34 10 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 219
0020(P) ?? ??? 40 10 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0019(B) ?? ??? 38 11 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0022(P) ?? ??? 44 11 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0021(B) ?? ??? 42 12 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0024(P) ?? ??? 48 12 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 203
0023(B) ?? ??? 46 13 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 219
0026(P) ?? ??? 52 13 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 187
0025(B) ?? ??? 50 14 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 219
0028(P) ?? ??? 56 14 28?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 188
0027(B) ?? ??? 54 15 30?? 0.0000?? 0.0000?? 0.0000?? 4:2:0 172
POC是解碼后的顯示順序,這里我有個疑問為什么POC不連續(0,2,4,6.....)并且還都是偶數另外Pic# P幀和B幀出現了相同的數字(例如0001(B) ?? ?? 2 ??? 2 和0004(P) ?? ?? 8 ??? 2?? )且為什么第一個P幀無與之重復的B幀
解碼后SnrY SnrU SnrV 為什么都為0呢,都為0,說明什么問題呢
請高手指點一二
1、實際編碼的幀數為什么與FramesToBeEncoded的設置不同
——FramesToBeEncoded 只包括 I、P 幀;
2、為什么POC不連續(0,2,4,6.....)并且還都是偶數
——因為你是用的幀編碼。如果是場編碼頂場是偶數,低場是奇數;
3、Pic# P幀和B幀出現了相同的數字(例如0001(B) ?? ?? 2 ??? 2 和0004(P) ?? ?? 8 ??? 2?? )
——看畢厚杰書上 175 頁對 frame_num 的解釋;
4、解碼后SnrY SnrU SnrV 為什么都為0呢
——test_rec.yuv 與 test_dec.yuv 完全相同或者沒有 test_rec.yuv。
Q:量化等級為28,test_rec.yuv 與 test_dec.yuv 應該不完全相同吧
A:無論量化等級為幾,編碼重建和解碼重建都完全相同。JM 某些版本在開啟 RC 的時候會出現不同的情況,那是屬于 JM 的 bug,在 JM 高版本中已經修正了。 |