Nach dem Ausführen dieses Befehls ffmpeg -f concat -i mylist.txt -c copy output.mp4
erhalte ich eine beschädigte output.mp4
Datei und die folgende Meldung:
ffmpeg -f concat -i mylist.txt -c copy output.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, concat, from 'mylist.txt':
Duration: N/A, start: 0.000000, bitrate: 829 kb/s
Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
Output #0, mp4, to 'output.mp4':
Metadata:
encoder : Lavf56.25.101
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1440x900, q=2-31, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 128 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598061, current: 467644; changing to 598062. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598062, current: 468044; changing to 598063. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598063, current: 468444; changing to 598064. This may result in incorrect timestamps in the output file.
...
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598362, current: 588044; changing to 598363. This may result in incorrect timestamps in the output file.
frame= 1472 fps=0.0 q=-1.0 Lsize= 5825kB time=00:00:49.04 bitrate= 973.0kbits/s
video:4903kB audio:877kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.776358%
Inhalt von mylist.txt
file 'cut.mp4'
file 'cut2.mp4'
cut.mp4 Ausgabe von ffmpeg:
ffmpeg -i cut.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.25.101
Duration: 00:00:39.04, start: 0.036281, bitrate: 837 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
cut2.mp4 Ausgabe von ffmpeg:
ffmpeg -i cut2.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.25.101
Duration: 00:00:10.07, start: 0.000000, bitrate: 1498 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1440x900, 1271 kb/s, 30 fps, 30 tbr, 12k tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 218 kb/s (default)
Metadata:
handler_name : SoundHandler
cut.mp4
Ich habe diesen Befehl erhalten ffmpeg -ss 00:00:11 -i myfile.mp4 -to 00:00:39 -vf 'drawbox= : x=0 : y=0 : color=invert' cut.mp4
cut2.mp4
Ich habe diesen Befehl erhalten ffmpeg -ss 00:00:00 -i myfile.mp4 -to 00:00:10 -c copy cut2.mp4
Ich habe viel gesucht - habe keine Lösung gefunden, vielleicht kann mir jemand dabei helfen.
output.mp4
ist spielbar, sieht aber komisch aus.
-c copy
, um eine Neukodierung zuzulassen oder-c:a copy
nur zu verwenden. Dann kann concat step noch verwenden,-c copy
da alle Videos bereits neu codiert wurden. Beachten Sie, dass einige Videos mit dieser Warnung nach concat noch in Ordnung aussehen und daher-c copy
in Ordnung sind.Antworten:
Neueste verwenden
ffmpeg
Allgemeine Benutzer sollten immer
ffmpeg
den aktuellen Git-Master-Zweig verwenden (der neueste verfügbare Code):Auf der FFmpeg-Download- Seite finden Sie verschiedene Optionen FFmpeg-Wiki: Compile Guides .
Andere Sachen
In Ihrem Befehl mit können
drawbox
Sie das Audio mit Steam kopieren-c:a copy
anstatt es neu zu codieren.Bei der Verwendung von
-ss
,-to
funktioniert nur , wie erwartet , wenn-ss
als Ausgabeoption verwendet wird.quelle
Laut https://trac.ffmpeg.org/wiki/Concatenate
Ich hatte das gleiche Problem. Ich verwende ffmpeg Version 2.6.3 auf einem Mac. Ich konvertierte meine Quellclips in das .MTS-Format mit dem hinzugefügten Tag -q 0, aktualisierte die Erweiterungen in der Textdatei und stellte meine Ausgabedatei auf eine .MTS-Datei ein, als ich den Befehl concat in ffmpeg ausführte. Es wirkte wie ein Zauber. Hier ist mein Workflow.
Die Textdatei (mylist.txt) wurde folgendermaßen aktualisiert:
Führen Sie dann den Befehl concat wie folgt aus:
Arbeitete für mich! Sie können die endgültige Ausgabe von .MTS in ein beliebiges Format konvertieren.
quelle
Ich habe ähnliche Fehler erhalten und das Audio in meinen Ausgabevideos war manchmal nicht synchron und fehlte manchmal vollständig, aber ich
mkvmerge
habe stattdessen mkvtoolnix verwendet.Mein Eingang Videos haben mit verschiedenen Einstellungen codiert worden ist und sie verschiedene Dimensionen hatten, so dass ich zuerst die Größe verändert und neu codierte sie mit
ffmpeg
:for f in *.mp4;do w=1280;h=720;ffmpeg -i $f -filter:v "scale=iw*min($w/iw\,$h/ih):ih*min($w/iw\,$h/ih),pad=$w:$h:($w-iw*min($w/iw\,$h/ih))/2:($h-ih*min($w/iw\,$h/ih))/2" -c:v libx264 -crf 22 -preset slow -pix_fmt yuv420p -c:a libfdk_aac -vbr 3 -ac 2 -ar 44100 ${f%mp4}mkv;done
Einige meiner Eingangsvideos hatten keinen Audiokanal, daher habe ich einen Befehl wie diesen verwendet, um ihnen einen stummen Audiokanal hinzuzufügen:
for f in *.mkv;do ffprobe $f|&grep -q '1: Audio'||ffmpeg -i $f -f lavfi -i anullsrc -c:a libfdk_aac -shortest -c:v copy temp-$f;mv {temp-,}$f;done
Danach habe ich die Videos verkettet:
Wenn Ihre Eingabedateien die gleichen Abmessungen, die gleiche Anzahl von Audiokanälen, die gleiche Audio-Abtastrate usw. haben, können Sie
mkvmerge
die Dateien nur verlustfrei verketten. Die Eingabedateien fürmkvmerge
können auch einen MP4-Container haben, aber die Ausgabedatei hat einen MKV-Container, selbst wenn die Dateinamenerweiterung als angegeben ist.mp4
. Sie können ausführenffmpeg -i output.mkv -c copy output.mp4
, um den Container zu ändern.mkvmerge
hat eine Syntax wiemkvmerge -o output.mkv file1.mkv + file2.mkv + file3.mkv
, womkvmerge -o output.mkv file1.mkv +file2.mkv +file3.mkv
auch akzeptiert wird.quelle
Basierend auf Duncans wirklich hilfreicher Antwort:
Dann das:
quelle
Wenn ich ffmpeg verwende, um ein aufgenommenes Video zu remuxen (kann TS, MP4 oder MKV sein) und die nicht monotonen dts im Ausgabestream zu erhalten - Zeitstempel usw. usw. Fehler, scheint das resultierende Video nur Audio zu haben oder wird ruckelig abgespielt. Der einzige Weg, wie ich damit zuverlässig umgegangen bin, ist die Verwendung von AviDemux. Mit den Kopiereinstellungen für Audio und Video und der Auswahl von MP4V2 Muxer ist es möglich, unter der Option Konfigurieren die Option Für Streaming optimieren auszuwählen. Die resultierende MP4-Datei kann jetzt in ffmpeg verwendet werden, ohne dass Fehlermeldungen generiert werden. Vertrauen Sie, dass dies von Nutzen ist.
quelle