Verwenden von ffmpeg zum Zerschneiden von MKV-Videos

Verwenden von ffmpeg zum Zerschneiden von MKV-Videos

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 23und die Audioqualität mit angeben und -b:a 192kdiese 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 copykann nicht kommenVordie -iOption. Alles davor -iweist FFmpeg an, das Eingangsvideo zu dekodieren. Es gibt keinen „Copy-Decoder“ – das ergibt keinen Sinn. Die Reihenfolge der Optionen ist hier wichtig. -c:a copyund -c:v copykommennachder Eingabeoption und vor der Ausgabe.

  • -t 4m20sist die falsche Syntax: Die Dauer kann eine Zahl in Sekunden oder in sein hh:mm:ss[.xxx].

  • -tkann -iauch nicht vorher kommen.

  • -ss 00:00:00ist irrelevant, es würde FFmpeg lediglich anweisen, von Anfang an zu beginnen, was es immer tut.

verwandte Informationen