News:

--

Main Menu

Un bug ?

Started by csosog, March 26, 2023, 05:22:32 PM

Previous topic - Next topic

csosog

Bonjour,

Première contribution sur ce forum et premier bug que je crois avoir trouvé (toutes applications confondues) en 20 ans (généralement, lors du triple check, je découvre que le bug, c'est moi).

Quand ffprobe indique qu'il y a une keyframe (I-frame) à l'adresse (au temps) {t1}, avidemux affiche {Type: I-FRM} pour cette image.

Je crois avoir trouvé un contre-exemple (et donc un bug) : 
ffprobe -loglevel error -show_entries frame=pts_time,pict_type -select_streams v -read_intervals 203.120%+10 -of csv=p=0 file.rev03.mp4
affiche
203.000000,I
203.040000,P
203.080000,P
203.120000,I
203.160000,P
203.200000,P
203.240000,P
...
ce qui indique qu'au temps 203.120000 (=00:03:23.120), il y aurait une I-frame.
Mais avidemux, au temps 00:03:23.120, indique qu'il s'agit d'une P-frame.
L'image au temps 00:03:23.120 étant significativement différente de l'image précédente, il est plausible qu'il s'agisse effectivement d'une I-frame non identifiée par avidemux.
(Au temps 203.000000 (=00:03:23.000), avidemux et ffprobe indiquent tous deux qu'il y a une I-frame).
Je précise que l'adresse (le temps) de la première frame de {file.REV03.mp4} est 0:0:0.000.

Comment signale-on un bug à avidemux ?

Le fichier {file.REV03.mp4} peut être téléchargé (pendant une quinzaine de jours) à partir de {https://1fichier.com/?qghw3xxpkoe1ncfudvz0}

    André AKA csosog

avidemux 2.8.1, ffmpeg-2023-02-13-git-2296078397-full_build, Win7 Pro SP1 fraichement réinstallé, HP Compaq Elite 8300 USDT (Intel i5-3470S@3200MHz)

eumagga0x2a

Bonjour,

ffprobe -loglevel error -show_frames -select_streams v -read_intervals 203.120%+10 file.REV03.mp4
affiche

[FRAME]
media_type=video
stream_index=0
key_frame=1
pts=2598400
pts_time=203.000000
pkt_dts=2598400
pkt_dts_time=203.000000
best_effort_timestamp=2598400
best_effort_timestamp_time=203.000000
pkt_duration=512
pkt_duration_time=0.040000
pkt_pos=18768630
pkt_size=14142
width=640
height=480
pix_fmt=yuvj420p
sample_aspect_ratio=1:1
pict_type=I
coded_picture_number=0
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=pc
color_space=bt470bg
color_primaries=unknown
color_transfer=unknown
chroma_location=left
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pts=2598912
pts_time=203.040000
pkt_dts=2598912
pkt_dts_time=203.040000
best_effort_timestamp=2598912
best_effort_timestamp_time=203.040000
pkt_duration=512
pkt_duration_time=0.040000
pkt_pos=18783589
pkt_size=1790
width=640
height=480
pix_fmt=yuvj420p
sample_aspect_ratio=1:1
pict_type=P
coded_picture_number=1
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=pc
color_space=bt470bg
color_primaries=unknown
color_transfer=unknown
chroma_location=left
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pts=2599424
pts_time=203.080000
pkt_dts=2599424
pkt_dts_time=203.080000
best_effort_timestamp=2599424
best_effort_timestamp_time=203.080000
pkt_duration=512
pkt_duration_time=0.040000
pkt_pos=18785976
pkt_size=1541
width=640
height=480
pix_fmt=yuvj420p
sample_aspect_ratio=1:1
pict_type=P
coded_picture_number=2
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=pc
color_space=bt470bg
color_primaries=unknown
color_transfer=unknown
chroma_location=left
[/FRAME]
[FRAME]
media_type=video
stream_index=0
key_frame=0
pts=2599936
pts_time=203.120000
pkt_dts=2599936
pkt_dts_time=203.120000
best_effort_timestamp=2599936
best_effort_timestamp_time=203.120000
pkt_duration=512
pkt_duration_time=0.040000
pkt_pos=18788193
pkt_size=9305
width=640
height=480
pix_fmt=yuvj420p
sample_aspect_ratio=1:1
pict_type=I
coded_picture_number=3
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=pc
color_space=bt470bg
color_primaries=unknown
color_transfer=unknown
chroma_location=left
[/FRAME]

Veuillez noter que le rapport de ffprobe indique "key_frame=0" pour cette image, ce qui signifie que Avidemux a raison. Le seul problème ici est que Avidemux appelle un cadre "I-Frame", mais signifie un cadre clé.

csosog

Vous avez raison, ffprobe lorsqu'on lui demande tous les détails (ffprobe -loglevel error -show_frames -select_streams v -read_intervals 203.120%+10 file.REV03.mp4) indique que l'image à 302.12 n'est pas une keyframe.
Mais je n'ai pas tort c|:o) puisque lorsque je restreins les détails à pts_time et pict_type (ffprobe -loglevel error -show_entries frame=pts_time,pict_type -select_streams v -read_intervals 203.120%+10 -of csv=p=0 file.rev03.mp4), il indique qu'il s'agit d'une I-frame comme l'indique l'image jointe.

Il ne s'agit donc pas d'un éventuel bug d'avidemux mais plutôt de ffprobe.
Je vous seais reconnaissant de vérifier si vous obtenez les mêmes résulats que moi avec la commande ffprobe -loglevel error -show_entries frame=pts_time,pict_type -select_streams v -read_intervals 203.120%+10 -of csv=p=0 file.rev03.mp4

André aka csosog

eumagga0x2a

Comme je l'ai déjà écrit, Avidemux confond l'utilisateur en utilisant le terme "intra" / "I-Frame" alors qu'il signifie une keyframe.

Quote from: csosog on April 04, 2023, 11:16:43 AMJe vous seais reconnaissant de vérifier si vous obtenez les mêmes résulats que moi avec la commande ffprobe -loglevel error -show_entries frame=pts_time,pict_type -select_streams v -read_intervals 203.120%+10 -of csv=p=0 file.rev03.mp4

Je suis heureux de les confirmer. Ces résultats ne transmettent tout simplement pas les informations dont nous avons besoin : cette trame est-elle utilisable pour commencer à décoder la vidéo – une image clé ou pas ? Pas comment cette trame est structurée en interne (codée prédictive ou intra).

csosog

Merci pour votre réponse.

Après avoir pas mal surfé sur le net, je comprends mieux aujourd'hui la différence entre les I-frames et les keyframes.
Je me suis bricolé une petite procédure .bat qui me donne, pour les PTS qui m'intéressent, 4 types de frames : B, P, I et K (ce dernier pour les I-frames qui sont aussi des keyframes).
J'ai entrepris le repack des séries de mon adolescence (Max la Menace, Des agents très spéciaux, Les espions ...) et ce petit outil me permet de passer souplement de Avidemux (qui m'indique le PTS avant lequel je dois ajouter ou supprimer quelques frames à la (médiocre) video .avi avec une piste en français pour synchroniser cette bande audio avec l'encodage video du DVD US corresondant) à ffmpeg (qui effectue au 25è de seconde près l'insertion ou la suppression).
Avidemux et ffmpeg, deux softs efficaces qui, avec l'aide de quelques scripts .bat et et .awk, me permettent à présent de faire des repacks honnêtes à un rythme d'escargot survitaminé.

Si d'autres utilisateurs du forum s'intéressent au repack (en particulier des vieilles séries), je leur expliquerai volontiers mon approche.

André AKA csosog