(apparté)ça m'intéresse ton truc
tu es passé par ffprobe ou par les options debug pour collecter le type d'image?
Quelle durée pour déceler l'offset de la 1ere intra? (je le fais -partiellement- aussi mais je trouve que ça rame un peu trop via les options debug et des videos en .ts )
à+
(fin de l'apparté)
(squatt on )
j'ai essayé 3 solutions :
avidemux : tu ouvres un fichiers HD.ts , il mouline et sort une liste de tous les frames I compris, malheureusemnt, il cale sur certains, donc pas généralisable
mplayer : mplayer $fichier -fps 1000 -double -nosound -vo null -vf framestep=I 1> $toto
lecture rapide avec detection des IFrames, malheureusemnt, dans le fichier toto , il enregistre le timestamp des Iframes au 1/1O seconde au lieu du 1/1OO donc inutilisable.
ffmpeg-php : il y a une fonction de detection des keyframe, je l'ai testé, n'apporte pas de gain par rapport à mon script
finalement j'a trouvé le truce suivant :
tu demandes à ffmpeg une copie de 250 images (10 secondes) à partir d'une position disons F=2600
si la position F=2600 est un Iframe (ou IDR ), il t'indique à la fin quelque chose du genre :
frame= 250 fps=138 q=-1.0 Lsize= -0kB time=10.01 bitrate= -0.0kbits/s
donc il te fournit bien 250 images pour 10 secondes
si la position F n'est pas une Iframe alors il te sort un truc du genre
frame= 227 fps=125 q=-1.0 Lsize= -0kB time=10.00 bitrate= -0.0kbits/s
pour 10 secondes de son, il te sort ici, 227 images, il va donc y avoir une perte de synchro, la prochaine image synchronisée se trouve plus loin à (250-227)=23 qu'il faut rajouter à 2600 ==> Iframe=2623
pour la vitesse, tu peux le voir sur l'exemple, pour des images en début c'est très rapide, mais ça relentit à mesure que l'archive devient lourde.
(fin du squatt)