Wie man die Dauer eines mp4-Videos repariert oder repariert

Ich habe einen Film, der ffmpeg und andere Progs angeblich 07:03:52 lang ist, aber die tatsächliche Spielzeit ist eigentlich eher 2:35:00

ffprobe video.mp4
ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 5.3.1 (Debian 5.3.1-17) 20160429
  configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libtesseract --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mipsdsp --disable-mips32r2 --disable-msa --disable-mipsfpu --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libbs2b --enable-libilbc --enable-libopenh264 --enable-libkvazaar --enable-libsnappy --enable-libsoxr --enable-libiec61883 --enable-vaapi --enable-opencl --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    creation_time   : 2012-12-12 07:03:52
  Duration: 07:13:45.09, start: 0.000000, bitrate: 274 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x528 [SAR 1:1 DAR 80:33], 601 kb/s, 23.98 fps, 23.98 tbr, 96k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2012-12-12 07:03:52
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 92 kb/s (default)
    Metadata:
      creation_time   : 2012-12-12 07:04:15
      handler_name    : GPAC ISO Audio Handler

Gibt es jemanden, der mir helfen kann, die Spielzeit/Dauer mit einem Terminalbefehl auf Debian/Centos zu korrigieren

Ich habe HandBrake-cli + FFmpeg installiert

UPDATE Gedanke: Da das Video in verschiedenen Playern perfekt abgespielt wird und die Framerate stimmt, wie kommt es, dass Encoder wie HandBrake und ffmpeg nicht die richtige Dauer berechnen können?

UPDATE 2 - Lösung Ich habe duckduckgo.com gefunden und eine brauchbare Lösung auf einer naja.. Torrent-Seite gefunden

ffmpeg -i video.mp4 -t 2:09:39 -c:v copy -c:a copy -c:s copy out.mp4

Das ist aber keine Reparatur oder Gewöhnung an den Job, aber es hat funktioniert.

Beschwören Sie also, was das bewirkt

Jede Optimierung oder Akklimatisierung dieser Arbeitsbelastung ist immer noch willkommen

07:03:52wird als Erstellungszeit angegeben, obwohl die geschätzte Dauer 07:13:45.09. Versuchen Sie es mit einem Remux:ffmpeg -i video.mp4 -c copy out.mp4
Hallo @Mulvya, danke für deine Wiederholung und deinen Vorschlag, habe es versucht, aber es gibt den gleichen Spielzeitfehler. Habe auch versucht, es in andere Formate wie WebM, AVI, MOV usw. zu konvertieren ... dasselbe :(
Abgesehen von der manuellen Zeitoption ist Ihre Lösung die gleiche wie meine. Führen Sie ffprobe video.mp4 -show_entries stream=codec_type,start_time,duration -of compactdie Ausgabe aus und zeigen Sie sie an.
Hi, ich dachte, ich hätte auf diesen Thread geantwortet, aber ich habe die Lösung gefunden, indem ich die Optionen -s -ss verwendet habe, um einfach die Länge des Videos zu kürzen, und jetzt spielt es sich wunderbar
Der Befehl von Update 2 funktionierte wie ein Zauber ... Stargate ist ein großartiger Film, nicht wahr?

Antworten (2)

Joakin, was du in deinem Update 2 vorgeschlagen hast, ist Remuxing. Alternativ zu dem, was Sie vorgeschlagen haben, kann die manuelle Bearbeitung von Atom verwendet werden.

Manuelle Bearbeitung ist

(a) viel schneller - nur die Metadaten werden geändert

(b) kann auf beide Arten angewendet werden – zum Vergrößern und zum Verkleinern. Es ist mir persönlich gelungen, die Länge durch Remuxen zu verringern, aber es ist mir nicht gelungen, sie zu erhöhen.

Ich hatte das gleiche Problem. Ich habe das gelöst, indem ich den Ton aus dem Video entfernt habe. Aus diesem Grund scheint das Video eingefroren zu sein, wird aber aufgrund der Audiodauer weiter abgespielt.

Aus diesem Grund können Sie mit der ffmpeg-Option „-an“ das gesamte Audio aus der Videodatei entfernen. Wenn es entfernt wird, existiert keine falsche Zeit im Video. Sie können Audio aus der ursprünglichen Videodatei extrahieren, ihre Dauer an die Videodauer anpassen und dann Video- und Audiodateien zusammen codieren, sodass keine eingefrorenen Videobilder wiedergegeben werden.

z.B.

ffmpeg -i video_to_encode.MP4  -r 16 -crf 18  -vcodec libx264 -vb 10M -an  video_output.avi