Sunt destul de sigur că obțineți valori exacte. S-ar putea să vă ajute dacă vă place un flux MPEG ca și un flux. În acest caz, înainte de IBBPBB pe care îl vedeți acolo ar fi în mod normal un alt GOP. Poate ceva de genul acesta (folosind aceeași notație ca și întrebarea originală):
P(-3,-2) B(-2,-1) B(-1,0)
În principiu, cadrele B după cadrele I se bazează pe cadrul I și ultimul cadru P din GOP anterior .
Deși este logic ca un videoclip să înceapă cu acest lucru:
Start GOP: IPBBPBBPBB...
Mai târziu, trebuie să fie
Start GOP: IBBPBBPBBPBB
Start GOP: IBBPBBPBBPBB
Start GOP: IBB...
Amintiți-vă că decodificarea oricărui cadru B necesită un cadru complet înainte și după el. Deci, fiecare pereche de cadre B ar trebui să fie afișată înainte de rama I sau P chiar înainte de a fi în fișier.
FFMPEG poate pur și simplu a pierdut "cazul special" al primului POR.
Deoarece primele două cadre B nu au un cadru anterior de manipulat, ar trebui să le puteți arunca în siguranță. Doar rebasează-ți timestamp-urile de pe primul cadru I și ajustați fluxul audio la aceeași valoare.
Dacă acest lucru va duce la pierderea cadrelor, va depinde de implementarea FFMPEG, dar scenariul mai rău este că pierdeți 83 de milisecunde (2 cadre la 24 cadre/sec).