J'ai pris une vidéo avec mon Android mais je n'ai pas réussi à appuyer correctement sur le bouton Arrêter. Donc, mon téléphone a manqué de mémoire disque et l'application vidéo a probablement juste coupé hors du fichier.
Après avoir copié le fichier (taille 2,1 Go) sur mon bureau ubuntu, j'ai essayé de l'exécuter avec mplayer
. La sortie est:
MPlayer 1.2.1 (Debian), built with gcc-5.4.0 (C) 2000-2016 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing 20190215_141432.mp4.
libavformat version 56.40.101 (external)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f0685aced80]Protocol name not provided, cannot determine if input is local or a network protocol, buffers and access patterns cannot be configured optimally without knowing the protocol
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f0685aced80]Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1920x1080): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
LAVF_header: av_find_stream_info() failed
[lavf] stream 0: video (h264), -vid 0
VIDEO: [H264] 1920x1080 24bpp 90000.000 fps 0.0 kbps ( 0.0 kbyte/s)
Clip info:
major_brand: mp42
minor_version: 0
compatible_brands: isommp42
creation_time: 2019-02-15 14:06:39
Load subtitles in ./
Failed to open VDPAU backend libvdpau_va_gl.so: cannot open shared object file: No such file or directory
[vdpau] Error when calling vdp_device_create_x11: 1
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 56.60.100 (external)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Audio: no sound
Starting playback...
V: 0.0 0/ 0 ??% ??% ??,?% 0 0
Exiting... (End of file)
Est-ce qu'il y a un moyen de réparer ceci? Peut-être qu'il y a juste quelques métadonnées qui doivent être corrigées.
J'ai aussi essayé cela mais la sortie est la même:
mplayer -lavfdopts analyzeduration=120 20190215_141432.mp4
Ensuite, j'ai essayé de couper la vidéo
ffmpeg -probesize 1000M -analyzeduration 1000M
-i 20190215_141432.mp4 -pix_fmt yuvj420p
-ss 00:00:00 -c copy -t 00:05:30 new.mp4
Mais la sortie est à peu près la même:
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
[...]
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x182d380] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1920x1080): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
20190215_141432.mp4: could not find codec parameters
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20190215_141432.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2019-02-15 12:06:39
Duration: 00:19:49.40, bitrate: 10308 kb/s
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1920x1080, SAR 1:1 DAR 16:9, 10.94 fps, 90k tbr, 90k tbn, 180k tbc (default)
Metadata:
rotate : 180
creation_time : 2019-02-15 12:06:39
handler_name : VideoHandle
Side data:
displaymatrix: rotation of -180.00 degrees
[...]
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
Veuillez noter que j'ai spécifié le pix_fmt, probesize
et analyzeduration
mais obtenu comme réponse
format de pixel non spécifié. Envisagez d'augmenter la valeur des options "analyse de la durée" et "taille de sondage"
Btw: j'ai essayé pixel_format
aussi.
Jusqu'à présent, ma dernière tentative a été d'utiliser untrunc
. La sortie est:
Repair: 20190215_141432.mp4
Failed to parse atoms in truncated file
Mise à jour de la réponse (éditée) (par Fabby):
J'ai essayé
ffmpeg -i 20190215_141432.mp4 -probesize 100M -analyzeduration 100M -map_metadata -1 -c:v libx264 -strict -2 -c:a libmp3lame -b:a 512K new.mkv
(et joué avec des valeurs comme 1024M
, 2G
, 4G
et placement des paramètres (comme suggéré ici ) mais la sortie est essentiellement:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xc0c4a0] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none(tv, bt709), 1920x1080): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
20190215_141432.mp4: could not find codec parameters
[...]
Codec AVOption b (set bitrate (in bits/s)) specified for output file #0 (new.mkv) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[...]
[buffer @ 0xc137e0] Unable to parse option value "-1" as pixel format
Last message repeated 1 times
[buffer @ 0xc137e0] Error setting option pix_fmt to value -1.
[graph 0 input from stream 0:0 @ 0xc133e0] Error applying options to the filter.
Error opening filters!
Je vais poser cette question, maintenant.
Raisons: il est mort de simpe de couper des vidéos, de rejoindre des vidéos - même de faire tourner des vidéos en utilisant
ffmpeg/mencoder
ou d'autres outils. Les actions de découpe, d'assemblage et de rotation devraient (selon ma compréhension) réorganiser les métadonnées en premier lieu.Dans ce cas, les métadonnées sont là et valables (telles que la durée, le format, l'heure de création ...). Alors, pourquoi la réparation des métadonnées dans ce cas est-elle si difficile? La sortie des commandes est extrêmement ennuyeuse, affirmant que le format de pixel n'aurait pas été spécifié, etc.
Après tout. Je pensais que réparer cette vidéo avait juste besoin d'un indice précieux ou d'un outil canonique magique mais après tout, ma vie n'en dépend pas.
Désolé de le dire, mais avec les fichiers .MP4, vous avez besoin à la fois de l'en-tête et du pied de page du fichier pour le rendre lisible, donc le transcodage complet (et pas seulement la copie) pourrait rendez-le lisible:
ffmpeg -i 20190215_141432.mp4 -probesize 100M -analyzeduration 100M -map_metadata -1 -c:v libx264 -strict -2 -c:a libmp3lame -b:a 512K 20190215_141432.mkv
Si cela n'aide pas, le contenu est vraiment perdu car le pied de page ne peut pas être reconstruit à partir des données que vous avez.