Avec le logiciel "Free MP4 Video Converter" sous Windows, je peux le convertir et le rendre utilisable, mais pourquoi ffmpeg ne peut-il pas le faire ?
N'offensez pas notre logiciel favori FFmpeg :-)
Votre "Free MP4 Video Converter" utilise simplement FFmpeg sous le capot...
I can't even read the details with:
ffmpeg -i missingKeyFrameProblem.mp4
Cela n'a rien à voir avec votre fichier d'entrée - la véritable erreur est la suivante
Au moins un fichier de sortie doit être spécifié.
Vous vouliez probablement ffprobe
代わりに ffmpeg
:
ffprobe -i missingKeyFrameProblem.mp4
et cela fonctionne bien.
Cette simple commande
ffmpeg -i missingKeyFrameProblem.mp4 output.mp4
convertit votre vidéo. Mais
- fichier d'entrée (
missingKeyFrameProblem.mp4
) a une durée d'environ 58 s
- fichier de sortie (
output.mp4
) ne dure qu'environ 39 s
La raison en est la suivante l'image clé manquante au début de votre vidéo :
ffprobe -hide_banner -select_streams v -skip_frame nokey -\
show_frames -show_entries frame=pkt_pts_time,pict_type missingKeyFrameProblem.mp4
Sortie :
....
....
Duration: 00:00:58.45, start: 0.000000, bitrate: 1463 kb/s
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none, 1280x960, 1459 kb/s, SAR 1:1 DAR 4:3, 32.99 fps, 36 tbr, 10k tbn, 20k tbc (
default)
Metadata:
creation_time : 2019-09-08T08:56:38.000000Z
handler_name : VideoHandler
[FRAME]
pkt_pts_time=19.417500
pict_type=I
[/FRAME]
[FRAME]
pkt_pts_time=21.417400
pict_type=I
[/FRAME]
....
....
Comme vous pouvez le constater, le première image clé (alias intra frame, I-frame) est à cca 19 secondes depuis le début de la vidéo. La conversion a donc commencé par cette image (en sautant les 19 premières secondes), ce qui explique le raccourcissement du fichier de sortie (58 s - 19 s = 38 s).