Ich bin mit ffmpeg völlig überfordert. Ich habe eine MKV-Datei mit einer Länge von 4:33 und möchte das Ende von 4:20 herausschneiden.
Ich habe verschiedene Möglichkeiten ausprobiert:
1) Schneidet überhaupt nicht
~ > ffmpeg -t 00:04:20 -acodec copy -vcodec copy -i output3.mkv output3-cut.mkv
FFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Jun 12 2012 16:27:34, gcc: 4.4.3
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4109 fps=3864 q=-1.0 Lsize= 36017kB time=272.48 bitrate=1082.8kbits/s
video:33503kB audio:2344kB global headers:0kB muxing overhead 0.477241%
2) Schnitt auf 4:25, wenn ich 4m15s 4m05s 4m und weitere Sekunden nach 4m angebe, mit der gleichen resultierenden Dateigröße. Es schneidet auf 3:25, unabhängig vom Sekundenwert, wenn ich 3m50s oder 30m angebeein gewisser WertS
~ > ffmpeg -t 4m20s -acodec copy -vcodec copy -i output3.mkv oFFmpeg version SVN-r0.5.9-4:0.5.9-0ubuntu0.10.04.1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5.9-0ubuntu0.10.04.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Jun 12 2012 16:27:34, gcc: 4.4.3
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 15.00 (15/1)
Input #0, matroska, from 'output3.mkv':
Duration: 00:04:34.00, start: 0.000000, bitrate: N/A
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944, PAR 1:1 DAR 113:59, 15 tbr, 1k tbn, 1k tbc
Stream #0.1: Audio: mp3, 22050 Hz, mono, s16
File 'output3-cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'output3-cut.mkv':
Stream #0.0: Video: msmpeg4v2, yuv420p, 1808x944 [PAR 1:1 DAR 113:59], q=2-31, 90k tbn, 1k tbc
Stream #0.1: Audio: libmp3lame, 22050 Hz, mono, s16
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 4001 fps=3570 q=-1.0 Lsize= 35240kB time=266.71 bitrate=1082.4kbits/s
video:32781kB audio:2292kB global headers:0kB muxing overhead 0.475784%
utput3-cut.mkv
3) Arbeitet hart und lange und schneidet genau auf 4:20, erstellt aber eine riesige Datei, wodurch sich die Dateigröße von 35 MB auf 113 MB ändert!!!
ffmpeg -i output3.mkv -ss 00:00:00 -t 00:04:20 -sameq output3-cut.mkv
Wie schneidet man eine MKV-Datei richtig?
ps
Ich habe auch Mencoder ausprobiert, aber es beschädigt eine Audiospur
Antwort1
Theoretisch reicht das:
ffmpeg -i output3.mkv -t 00:04:20 -c:v copy -c:a copy output-cut.mkv
Lesen als: MKV-Video eingeben, 4:20 Minuten kodieren, Audio- und Video-Bitstream kopieren und in der Ausgabedatei speichern.
Wenn Sie Probleme mit der Synchronisierung haben, versuchen Sie, Audio und Video neu zu kodieren:
ffmpeg -i output3.mkv -t 00:04:20 -c:v libx264 -c:a libfaac output-cut.mkv
Natürlich können Sie die Videoqualität mit -crf 23
und die Audioqualität mit angeben und -b:a 192k
diese Parameter variieren. Lesen Sieunser FFmpeg-BlogbeitragFür mehr Information.
Folgendes war an Ihren Befehlen falsch:
Sie verwenden eine furchtbar veraltete Version von FFmpeg. Bitte kompilieren Sie es aus dem Quellcode oder laden Sie eine vorkompilierte Binärdatei von der Homepage herunter. Dadurch verringern Sie die Möglichkeit, auf Fehler zu stoßen.
-acodec copy -vcodec copy
kann nicht kommenVordie-i
Option. Alles davor-i
weist FFmpeg an, das Eingangsvideo zu dekodieren. Es gibt keinen „Copy-Decoder“ – das ergibt keinen Sinn. Die Reihenfolge der Optionen ist hier wichtig.-c:a copy
und-c:v copy
kommennachder Eingabeoption und vor der Ausgabe.-t 4m20s
ist die falsche Syntax: Die Dauer kann eine Zahl in Sekunden oder in seinhh:mm:ss[.xxx]
.-t
kann-i
auch nicht vorher kommen.-ss 00:00:00
ist irrelevant, es würde FFmpeg lediglich anweisen, von Anfang an zu beginnen, was es immer tut.