So konvertieren Sie eine MKV zu AVI mit minimalem Verlust

23

Um eine MKV in AVI umzuwandeln, mache ich zwei Dinge. Das erste was ich mache ist das:

ffmpeg -i filename.mkv -vcodec copy -acodec copy output.avi

oder dieses:

ffmpeg -i filename.mkv -sameq -acodec copy output.avi

In beiden Fällen wird MKV in eine AVI-Datei konvertiert. Das Problem ist jedoch, dass das Video aus irgendeinem Grund nicht reibungslos wiedergegeben wird. Das ist aber in Ordnung, denn wenn ich noch etwas tue, wird es behoben:

ffmpeg -i output.avi -vcodec mpeg4 -b 4000k -acodec mp2 -ab 320k converted.avi

Nachdem ich dies getan habe, spielt die Datei ohne Problem. Ich hatte Erfolg damit für eine Datei, aber dann habe ich es für eine andere Datei versucht, und es gibt einen leichten, aber merklichen Verlust in der Videoqualität. Dies ist die Ausgabe, die ich bekomme, wenn ich den zweiten Schritt mache:

FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec 29 2010 18:02:10 with gcc 4.2.1 (Apple Inc. build 5664)
  configuration: 
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 0

Seems stream 0 codec frame rate differs from container frame rate: 359.00 (359/1) -> 29.92 (359/12)
Input #0, avi, from 'output.avi':
  Metadata:
    ISFT            : Lavf52.64.2
  Duration: 00:04:17.21, start: 0.000000, bitrate: 3074 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], 29.92 fps, 29.92 tbr, 29.92 tbn, 359 tbc
    Stream #0.1: Audio: vorbis, 48000 Hz, stereo, s16
Output #0, avi, to 'converted.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 704x480 [PAR 229:189 DAR 5038:2835], q=2-31, 4000 kb/s, 29.92 tbn, 29.92 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 320 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1

Ich habe im zweiten Schritt nur willkürlich große Einstellungen verwendet und es hat vorher gut funktioniert, aber in diesem Fall nicht. Welche Einstellungen soll ich verwenden?

tony_sid
quelle
Das gab mir ffmpeg für sameq: Die Option 'sameq' wurde entfernt. Wenn Sie nach einer Option suchen, um die Qualität beizubehalten (wofür -sameq nicht gedacht ist), verwenden Sie -qscale 0 oder eine entsprechende Option für den Qualitätsfaktor.
DavidG

Antworten:

25

Um nur den Video- und Audio-Bitstream zu kopieren, also ohne Qualitätsverlust:

ffmpeg -i filename.mkv -c:v copy -c:a copy output.avi

Wenn FFmpeg Video und Audio automatisch konvertieren soll:

ffmpeg -i filename.mkv output.avi
RobotHumans
quelle
7
Die Standardeinstellungen von FFmpeg sind in der Regel furchtbar. Hier finden Sie eine allgemeine Anleitung zum Codieren mit verschiedenen Codecs. Das FFmpeg-Wiki enthält ausführlichere Anleitungen.
Übelsuppe
Die erste mit Code erstellte Datei, die beschädigt war, wurde in VLC nicht abgespielt.
Codemirror
18
 ffmpeg -i "input.mkv" -f avi -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k "converted.avi"

Mein vorschlag: verwende mpeg4 + mp3 im avi container.

Ken
quelle
1

Versuchen Sie, ffmulticonverter zu verwenden. Sehr nützlich für mich: Es ist eine Art GUI für ffmpeg und Sie können alle Parameter einfach einstellen. Außerdem finden Sie eine Liste aller möglichen Videoformate.

LP

user155915
quelle
-3

Darf ich eine Verknüpfung empfehlen, die ich regelmäßig verwende?

ffmpeg -i filename.mkv -sameq output.avi
CarlF
quelle
4
sameq bedeutet nicht die gleiche Qualität und sollte nicht verwendet werden. Tatsächlich wurde es vollständig aus ffmpeg entfernt. Stellen Sie die Qualität lieber mit dem Ziel-Codec ein.
Slhck