Das Konvertieren einer FLV-Datei in das MP4-Format über ffmpeg führt zu einem Fehler

Das Konvertieren einer FLV-Datei in das MP4-Format über ffmpeg führt zu einem Fehler

Ich verwende derzeit ffmpeg Version 3.2.2 und habe das Problem, dass beim Versuch, eine Beispieldatei im FLV-Format zu konvertieren, diese nicht richtig in das erwartete MP4-Format konvertiert wird. Der Fehler, auf den ich stoße:

ffmpeg -i flv.flv -vcodec copy -acodec copy flv.mp4
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[flv @ 0x7f9af4800000] audio stream discovered after head already parsed
[flv @ 0x7f9af4800000] video stream discovered after head already parsed
Input #0, flv, from 'flv.flv':
  Metadata:
    encoder         : Lavf53.24.2
  Duration: 00:00:26.40, start: 0.000000, bitrate: 1589 kb/s
    Stream #0:0: Audio: aac (LC), 48000 Hz, 5.1, fltp
    Stream #0:1: Video: flv1, yuv420p, 1280x720, 25 fps, 25 tbr, 1k tbn
File 'flv.mp4' already exists. Overwrite ? [y/N] y
[mp4 @ 0x7f9af5829e00] Could not find tag for codec flv1 in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (copy)
    Last message repeated 1 times

Ich habe versucht, einige Online-Konverter zu verwenden, um zu prüfen, ob es Probleme bei der Konvertierung der Datei gibt, aber alle haben die Datei ordnungsgemäß in MP4 konvertiert.

Ich würde mich über jede Hilfe freuen!

Antwort1

Wie in den Kommentaren erwähnt, muxt ffmpeg flv1Videostreams nicht in MP4.

Stattdessen neu kodieren:

ffmpeg -i flv.flv -vcodec libx264 -acodec copy flv.mp4

Antwort2

Wenn der FLV-Container den FLV1-Videocodec verwendet, können Sie nicht in einen MP4-Container konvertieren, ohne den Videostream neu zu kodieren.

2 Optionen:

  1. mkvStattdessen ohne erneute Kodierung in einen Container konvertieren :

ffmpeg -i input.flv -c copy -copyts output.mkv

Beachten Sie, dass dies -copytsoptional ist und bedeutet copy timestamps: Es hilft bei der Audiosynchronisierung.

  1. Videostream neu auf den neuen h265(HVEC)-Standard kodieren:

ffmpeg -i input.flv -c:v libx265 -crf 23 -c:a copy output_h265.mp4

verwandte Informationen