Warum hängt FFmpeg beim Komprimieren von MOV ein leeres schwarzes Video an das Ende meiner MP4-Dateien an?

Warum hängt FFmpeg beim Komprimieren von MOV ein leeres schwarzes Video an das Ende meiner MP4-Dateien an?

Ich habemehrere große MOV-Dateiendie ich auf MP4 komprimieren möchte.

Wenn ich FFmpeg verwende, werden leider am Ende viele schwarze (leere) Videos angehängt.

(Die Zieldatei ist länger als die Quelldatei.)

Ich habe beispielsweise eine Datei mit einer Dauer von 02:22:01 (und die FFmpeg-Ausgabeprotokolle bestätigen dies).

Wenn ich jedoch den folgenden Befehl ausführe (was selbst bei „ultrafast“ mehr als 20 Minuten dauert), erhalte ich eine MP4-Datei, die größtenteils gut aussieht, an deren Ende jedoch viele schwarze Frames angehängt werden, sodass die Gesamtdauer des Videos 3:59:59 beträgt.

ffmpeg -i "F:\video_project\uncompressed\Tape_12.mov" -vcodec libx264 -preset ultrafast -crf 18 -n -threads 16 -f mp4 "F:\video_project\compressed\Tape_12.mp4" 2>&1

Dies passiert auch bei meinen anderen MOV-zu-MP4-Konvertierungen. Die Dauer des am Ende angehängten schwarzen Videos kann 20 bis 80+ Minuten betragen (dies ist bei jedem Video nicht gleich).

Was mache ich falsch?

Meine Protokolle sind hier.

PS: Ich verwende PowerShell 4 unter Windows 7.

Aktualisieren:

Als Antwort auf LordNeckBeard: Wenn ich ausführe ffmpeg.exe -i F:\video_project\compressed\Tape_12.mp4, ist das Ergebnis:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\video_project\compressed\Tape_12.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.22.101
  Duration: 03:59:59.94, start: 0.033333, bitrate: 5389 kb/s
    Stream #0:0(eng): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 720x480 [SAR 10:11 DAR 15:11], 5252 kb/s, 29.97 fps, 29.97 tbr, 11988 tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Als Antwort auf Rajib: Wenn ich ausführe ffmpeg.exe -i F:\video_project\uncompressed\Tape_12.mov, ist das Ergebnis:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:\video_project\uncompressed\Tape_12.mov':
  Metadata:
    creation_time   : 2014-01-05 02:35:17
  Duration: 02:22:01.04, start: -6.064083, bitrate: 51226 kb/s
    Stream #0:0(eng): Video: dvvideo (dvc  / 0x20637664), yuv411p, 720x480 [SAR 8:9 DAR 4:3], 28771 kb/s, SAR 10:11 DAR
15:11, 29.97 fps, 29.97 tbr, 2997 tbn, 29.97 tbc (default)
    Metadata:
      creation_time   : 2014-01-05 06:35:18
      handler_name    : Apple Alias Data Handler
    Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
    Metadata:
      creation_time   : 2014-01-05 06:35:18
      handler_name    : Apple Alias Data Handler
    Stream #0:2(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
    Metadata:
      creation_time   : 2014-01-05 06:35:18
      handler_name    : Apple Alias Data Handler

Antwort1

Das Problem ist wahrscheinlich, dass du die Audiospur nicht beschleunigst, sodass das neue Video genauso lang bleibt wie das Original. Entweder löschst du die Audiospur mit der Option -an oder beschleunigst sie entsprechend mit der Option ​atempoAudiofilter.

verwandte Informationen