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 flv1
Videostreams 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:
mkv
Stattdessen ohne erneute Kodierung in einen Container konvertieren :
ffmpeg -i input.flv -c copy -copyts output.mkv
Beachten Sie, dass dies -copyts
optional ist und bedeutet copy timestamps
: Es hilft bei der Audiosynchronisierung.
- Videostream neu auf den neuen h265(HVEC)-Standard kodieren:
ffmpeg -i input.flv -c:v libx265 -crf 23 -c:a copy output_h265.mp4