Hallo Community!
Ich bin beim Entwickeln mit dem H.264 Codec aus der FFMpeg Library auf Testergebnisse gestoßen, die mir nicht so ganz klar sind. Vielleicht gibt es unter Euch ja einen H.264-Experten, der eine Idee hat, warum meine Ergebnisse so sind, wie sie sind. ;-)
Also, ich habe zwei verschiedene Szenen mit einer Kamera aufgenommen und diese Bilder jeweils einmal mit H.264 und zum Vergleich mit MPEG1 komprimiert. In der einen Szenen gibt es so gut wie keine Bewegung, in der anderen Szene sehr viel Bewegung.
Erwartungsgemäß generiert MPEG1 ein größeres File bei der Szene mit viel Bewegung. Bei H.264 ist das jedoch genau umgekehrt, was ich einfach nicht verstehe. Denn es können ja eine Menge Makroblöcke geskipt werden, wenn keine Veränderung im Bild vorliegt (was auch passiert). Aber scheinbar werden die I-Frames bei der "ruhigen" Szene in deutlich mehr kleine Makroblöcke der Größe 4x4 unterteilt, als bei der "unruhigen" Szene. Dadurch werden die i-Frames größer und somit aus das komplette File. Ich frage mich nur, warum bei der ruhige Szene so viele Blöcke in 4x4 aufgeteilt werden. Vielleicht jemand von Euch eine Idee dazu.
Hier ein paar Daten die der Codec ausspuckt, Profil war High und Level war 3.0:
Szene mit viel Bewegung, Filegröße etwa 2034 Kb:
[libx264 @ 0x7f99841ce540] frame I:103 Avg QP:32.64 size: 10292
[libx264 @ 0x7f99841ce540] frame P:522 Avg QP:36.86 size: 1467
[libx264 @ 0x7f99841ce540] frame B:400 Avg QP:40.37 size: 642
[libx264 @ 0x7f99841ce540] consecutive B-frames: 22.0% 78.0%
[libx264 @ 0x7f99841ce540] mb I I16..4: 28.9% 51.6% 19.6%
[libx264 @ 0x7f99841ce540] mb P I16..4: 3.5% 6.4% 0.6% P16..4: 21.0% 3.0% 1.3% 0.0% 0.0% skip:64.2%
[libx264 @ 0x7f99841ce540] mb B I16..4: 0.7% 1.6% 0.0% B16..8: 17.8% 1.6% 0.2% direct: 0.5% skip:77.6% L0:34.6% L1:63.6% BI: 1.8%
[libx264 @ 0x7f99841ce540] final ratefactor: 31.53
[libx264 @ 0x7f99841ce540] 8x8 transform intra:55.5% inter:88.1%
[libx264 @ 0x7f99841ce540] coded y,uvDC,uvAC intra: 43.6% 45.9% 6.7% inter: 3.3% 4.9% 0.0%
[libx264 @ 0x7f99841ce540] i16 v,h,dc,p: 20% 37% 4% 39%
[libx264 @ 0x7f99841ce540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 19% 14% 8% 7% 7% 8% 8% 8%
[libx264 @ 0x7f99841ce540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 32% 10% 5% 5% 5% 6% 5% 5%
[libx264 @ 0x7f99841ce540] i8c dc,h,v,p: 70% 16% 12% 3%
[libx264 @ 0x7f99841ce540] Weighted P-Frames: Y:12.5% UV:0.6%
[libx264 @ 0x7f99841ce540] ref P L0: 70.4% 13.6% 11.4% 4.2% 0.4%
[libx264 @ 0x7f99841ce540] ref B L0: 88.9% 11.1%
[libx264 @ 0x7f99841ce540] kb/s:406.32
Szene mit wenig Bewegung, Filesize etwa 2152 Kb:
[libx264 @ 0x7f0ffc1ce540] frame I:103 Avg QP:24.79 size: 19355
[libx264 @ 0x7f0ffc1ce540] frame P:512 Avg QP:28.03 size: 316
[libx264 @ 0x7f0ffc1ce540] frame B:410 Avg QP:33.10 size: 116
[libx264 @ 0x7f0ffc1ce540] consecutive B-frames: 20.0% 80.0%
[libx264 @ 0x7f0ffc1ce540] mb I I16..4: 29.4% 41.7% 28.9%
[libx264 @ 0x7f0ffc1ce540] mb P I16..4: 0.3% 0.1% 0.0% P16..4: 7.5% 0.3% 0.3% 0.0% 0.0% skip:91.5%
[libx264 @ 0x7f0ffc1ce540] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 4.7% 0.0% 0.0% direct: 0.1% skip:95.1% L0:12.4% L1:87.1% BI: 0.4%
[libx264 @ 0x7f0ffc1ce540] final ratefactor: 23.93
[libx264 @ 0x7f0ffc1ce540] 8x8 transform intra:41.3% inter:75.7%
[libx264 @ 0x7f0ffc1ce540] coded y,uvDC,uvAC intra: 58.9% 72.7% 38.2% inter: 0.1% 3.3% 1.0%
[libx264 @ 0x7f0ffc1ce540] i16 v,h,dc,p: 6% 40% 1% 53%
[libx264 @ 0x7f0ffc1ce540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 29% 7% 5% 4% 4% 6% 5% 10%
[libx264 @ 0x7f0ffc1ce540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 43% 6% 3% 3% 4% 5% 4% 5%
[libx264 @ 0x7f0ffc1ce540] i8c dc,h,v,p: 50% 28% 16% 5%
[libx264 @ 0x7f0ffc1ce540] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f0ffc1ce540] ref P L0: 82.2% 2.7% 11.0% 4.1%
[libx264 @ 0x7f0ffc1ce540] ref B L0: 75.7% 24.3%
[libx264 @ 0x7f0ffc1ce540] kb/s:429.87
Viele Grüße,
lackylax
Ich bin beim Entwickeln mit dem H.264 Codec aus der FFMpeg Library auf Testergebnisse gestoßen, die mir nicht so ganz klar sind. Vielleicht gibt es unter Euch ja einen H.264-Experten, der eine Idee hat, warum meine Ergebnisse so sind, wie sie sind. ;-)
Also, ich habe zwei verschiedene Szenen mit einer Kamera aufgenommen und diese Bilder jeweils einmal mit H.264 und zum Vergleich mit MPEG1 komprimiert. In der einen Szenen gibt es so gut wie keine Bewegung, in der anderen Szene sehr viel Bewegung.
Erwartungsgemäß generiert MPEG1 ein größeres File bei der Szene mit viel Bewegung. Bei H.264 ist das jedoch genau umgekehrt, was ich einfach nicht verstehe. Denn es können ja eine Menge Makroblöcke geskipt werden, wenn keine Veränderung im Bild vorliegt (was auch passiert). Aber scheinbar werden die I-Frames bei der "ruhigen" Szene in deutlich mehr kleine Makroblöcke der Größe 4x4 unterteilt, als bei der "unruhigen" Szene. Dadurch werden die i-Frames größer und somit aus das komplette File. Ich frage mich nur, warum bei der ruhige Szene so viele Blöcke in 4x4 aufgeteilt werden. Vielleicht jemand von Euch eine Idee dazu.
Hier ein paar Daten die der Codec ausspuckt, Profil war High und Level war 3.0:
Szene mit viel Bewegung, Filegröße etwa 2034 Kb:
[libx264 @ 0x7f99841ce540] frame I:103 Avg QP:32.64 size: 10292
[libx264 @ 0x7f99841ce540] frame P:522 Avg QP:36.86 size: 1467
[libx264 @ 0x7f99841ce540] frame B:400 Avg QP:40.37 size: 642
[libx264 @ 0x7f99841ce540] consecutive B-frames: 22.0% 78.0%
[libx264 @ 0x7f99841ce540] mb I I16..4: 28.9% 51.6% 19.6%
[libx264 @ 0x7f99841ce540] mb P I16..4: 3.5% 6.4% 0.6% P16..4: 21.0% 3.0% 1.3% 0.0% 0.0% skip:64.2%
[libx264 @ 0x7f99841ce540] mb B I16..4: 0.7% 1.6% 0.0% B16..8: 17.8% 1.6% 0.2% direct: 0.5% skip:77.6% L0:34.6% L1:63.6% BI: 1.8%
[libx264 @ 0x7f99841ce540] final ratefactor: 31.53
[libx264 @ 0x7f99841ce540] 8x8 transform intra:55.5% inter:88.1%
[libx264 @ 0x7f99841ce540] coded y,uvDC,uvAC intra: 43.6% 45.9% 6.7% inter: 3.3% 4.9% 0.0%
[libx264 @ 0x7f99841ce540] i16 v,h,dc,p: 20% 37% 4% 39%
[libx264 @ 0x7f99841ce540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 19% 14% 8% 7% 7% 8% 8% 8%
[libx264 @ 0x7f99841ce540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 32% 10% 5% 5% 5% 6% 5% 5%
[libx264 @ 0x7f99841ce540] i8c dc,h,v,p: 70% 16% 12% 3%
[libx264 @ 0x7f99841ce540] Weighted P-Frames: Y:12.5% UV:0.6%
[libx264 @ 0x7f99841ce540] ref P L0: 70.4% 13.6% 11.4% 4.2% 0.4%
[libx264 @ 0x7f99841ce540] ref B L0: 88.9% 11.1%
[libx264 @ 0x7f99841ce540] kb/s:406.32
Szene mit wenig Bewegung, Filesize etwa 2152 Kb:
[libx264 @ 0x7f0ffc1ce540] frame I:103 Avg QP:24.79 size: 19355
[libx264 @ 0x7f0ffc1ce540] frame P:512 Avg QP:28.03 size: 316
[libx264 @ 0x7f0ffc1ce540] frame B:410 Avg QP:33.10 size: 116
[libx264 @ 0x7f0ffc1ce540] consecutive B-frames: 20.0% 80.0%
[libx264 @ 0x7f0ffc1ce540] mb I I16..4: 29.4% 41.7% 28.9%
[libx264 @ 0x7f0ffc1ce540] mb P I16..4: 0.3% 0.1% 0.0% P16..4: 7.5% 0.3% 0.3% 0.0% 0.0% skip:91.5%
[libx264 @ 0x7f0ffc1ce540] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 4.7% 0.0% 0.0% direct: 0.1% skip:95.1% L0:12.4% L1:87.1% BI: 0.4%
[libx264 @ 0x7f0ffc1ce540] final ratefactor: 23.93
[libx264 @ 0x7f0ffc1ce540] 8x8 transform intra:41.3% inter:75.7%
[libx264 @ 0x7f0ffc1ce540] coded y,uvDC,uvAC intra: 58.9% 72.7% 38.2% inter: 0.1% 3.3% 1.0%
[libx264 @ 0x7f0ffc1ce540] i16 v,h,dc,p: 6% 40% 1% 53%
[libx264 @ 0x7f0ffc1ce540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 29% 7% 5% 4% 4% 6% 5% 10%
[libx264 @ 0x7f0ffc1ce540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 43% 6% 3% 3% 4% 5% 4% 5%
[libx264 @ 0x7f0ffc1ce540] i8c dc,h,v,p: 50% 28% 16% 5%
[libx264 @ 0x7f0ffc1ce540] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f0ffc1ce540] ref P L0: 82.2% 2.7% 11.0% 4.1%
[libx264 @ 0x7f0ffc1ce540] ref B L0: 75.7% 24.3%
[libx264 @ 0x7f0ffc1ce540] kb/s:429.87
Viele Grüße,
lackylax