Nö, die GOP des H264 in Canon-Kameras besteht aus einem I-Frame, dann gefolgt von 14 P-Frames. Also, nochmal, nix mit I-frame-only. Es fehlen halt gänzlich die B-Frames - leider.
Die Canon Kameras verwenden das Baseline-Profil, was speziell für die "Echtzeitverarbeitung" (wie Videokonferenzen) gedacht ist, da es die geringste Latenz hat. Und natürlich fehlen die B-Frames, geht ja auch nicht anders, denn die Kamera kann ja nicht in die Zukunft gucken. Bei zuwenig I-Frames bekommt man zudem dass Problem, dass wenn in einem Block zwischen 2 I-Frames ein Fehler auftritt, sich dieser bis zum nächsten I-Frame fortpflanzt. Ich habe gerade auch nochmal SteamEye Trial drüber laufen lassen, und ja es sind tatsächlich 1 I-Frame und 14 P-Frames... Ein Bitfehler zieht sich also maximal eine halbe Sekunde durch das Bild. Aber wenn du mal darauf achtest, sind die P-Frames praktisch genauso groß wie die I-Frames (siehe Bild). Die P-Frames haben in diesem Fall also nicht so einen extremen Größenvorteil. Rein rechnerisch kommt man bei 27MBit/s bei 30fps auf 112 KiB/Bild, wie du am Screenshot von SteamEye siehst, sind sowohl die I-Frames als auch die P-Frames praktisch an dieser Größe angekommen. Selbst wenn das Video nur aus I-Frames bestehen würde, wäre es nicht wirklich größer, man würde dann halt auf 31-35MBit/s kommen, das entspricht jedoch nicht mehr H264@Level4.0. Wie du also siehst, sind die P-Frames wie sie von den Canon-Kameras bei 720p generiert werden eigentlich eher I-Frames von der Größe her. Daher auch meine Aussage ganz am Anfang "es besteht praktisch nur aus Keyframes". Wo ich das StreamEye noch nicht hatte konnte ich lediglich die Framegröße analysieren, jedoch nicht den Frame-Typ. Bei 1080p wird bei den Canon Kameras h264 Baseline@Level5.0 verwendet. Hier sind die I-Frames doppelt so groß wie die P-Frames.
Nur mal als Vergleich dazu, das von mir mit Quality 20 codierte Exemplar (Durchschnittliche Bitrate 4 MBit/s). Bild 3 zeigt das Video mit 2 Pass (Durchschnittliche Bitrate 6,2 Mbit/s). Beide Videos mit min GOP-Size 25, max GOP-Size 48.
Die starren GOP Strukturen bei der Videokodierung sind seit Mpeg-4 doch längst vorbei. Inzwischen kann die GOP-Struktur jeder Zeit geändert werden. I-Frames werden dann gesetzt wenn z.B. sehr große Veränderungen des Bildinhaltes vorliegen (z.B. ein Szenen-Wechsel) oder eben wenn ein gewisses zeitliches Intervall überschritten wird. Bei der Echtzeitcodierung wird das natürlich nicht gemacht.
Bestreitet doch gar keiner. Hier geht´s doch einfach um diese Behauptung von Dir
Ich habe nie davon geredet, dass es gänzlich ohne Qualitätsverlust ist. Ich habe lediglich gesagt, dass es praktisch ohne Qualitätsverlust ist (in meinen Fall habe ich mich darauf bezogen, dass man praktisch, also der Mensch, keine Qualitätseinbußen wahrnimmt).
Du hast so gut wie bei jedem Rendervorgang einen Qualitätsverlust, erst Recht wenn Du mit so einer niedrigen Datenrate wie 6mbps renderst.
Wie gesagt und gezeigt, sieht man den Verlust aber praktisch gar nicht, vorrausgesetzt, man setzt die Parameter richtig. Wenn ich dir ein Video an einem FullHD-TV vorspiele einmal mit 6 MBit,2-Pass etc. und einmal mit 27Mbit aus der Kamera wirst du wenn überhaupt nur bei Standbild und direktem hin un herswitchen einen minimalen Unterschied merken. Zudem rede ich hier von einer Durchschnittsdatenrate von 6 MBit. Bei 2 Pass (oder auch bei qualitätsbasierender Kodierung) kann die Datenrate stellenweise auch bis zu 40 MBit sein, wenn es gerade benötigt wird. Im Abspann wird man selbst mit 2 MBit keinen Unterschied feststellen. Warum denkt ihr immer alle an Konstante Datenrate, das ist Verschwendung und nur dann nötig wenn es darum geht, möglichst schnell bzw. in Echtzeit Daten zu verarbeiten.