Konvertieren Sie AVI (Xvid) in MP4 (H. 264) mit der gleichen Qualität

Ich möchte eine AVI-Datei mit einem h. 264-Codec in MP4 komprimieren. Ich konnte nicht die gleiche Qualität bekommen. Wie kann ich es komprimieren?

Original Video:

Original Video Bildschirm:

Ausgabe der FFmpeg-Konsole (ffmpeg -i input.avi):

FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 28 2012 10:03:40 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-shared --enable-gpl --enable-version3 --enable-nonfree                                                                                         --enable-pthreads --enable-x11grab --enable-libopencore-amrnb --enable-libopenc                                                                                        ore-amrwb --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libop                                                                                        enjpeg --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264                                                                                         --enable-libxvid --enable-zlib --enable-filter=drawtext
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
[mpeg4 @ 0x626b50] Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from 'input.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2542/release)
  Duration: 01:32:38.13, start: 0.000000, bitrate: 2094 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr,                                                                                         23.98 tbn, 23.98 tbc
    Stream #0.1: Audio: ac3, 44100 Hz, 5.1, s16, 384 kb/s
At least one output file must be specified

Test 1

FFmpeg-Befehl:

ffmpeg -i input.avi -vcodec libx264 -vpre lossless_slow -crf 25 -acodec libfaac -threads 0 -t 60 1.mp4

Test 1 Bildschirm:

Ausgabe der FFmpeg-Konsole (ffmpeg -i 1.mp4)

    FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 28 2012 10:03:40 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libopenjpeg --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-filter=drawtext
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.93.0
  Duration: 00:01:00.01, start: 0.000000, bitrate: 618 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 437 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, 5.1, s16, 176 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
At least one output file must be specified

Test 2

FFmpeg-Befehl:

ffmpeg -y -i input.avi -pass 1 -vcodec libx264 -vpre slow -b 2000k -threads 0 -t 60 -f mp4 -an -y /dev/null
ffmpeg -y -i input.avi -pass 2 -vcodec libx264 -vpre slow -b 2000k -threads 0 -t 60 -acodec libfaac -ab 128k -ac 2 2.mp4

Test 2 Bildschirm:

Ausgabe der FFmpeg-Konsole (ffmpeg -i 2.mp4)

FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 28 2012 10:03:40 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libopenjpeg --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-filter=drawtext
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.93.0
  Duration: 00:01:00.01, start: 0.000000, bitrate: 1097 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 1028 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 63 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
At least one output file must be specified
Author: user1686, 2012-12-28

1 answers

Installieren Sie zunächst eine neuere Version von FFmpeg-holen Sie sich einen statischen Build von der Downloadseite.

Die Verwendung von vpre - Voreinstellungen (mit denen Standardwerte für ffmpeg - Einstellungen festgelegt werden können, keine Encoder-Einstellungen) ist nicht wirklich erforderlich; Normalerweise möchten Sie die von den Encodern definierten -preset - Optionen verwenden.

Die Gründe, warum Sie eine niedrige Ausgabequalität erhalten, sind die folgenden für Ihre beiden Fälle:

  1. Im ersten Fall verwenden Sie crf 25, a Constant Rate Factor, geht Ihnen schlechter als der Standard für die x264-encoder (23). Die CRF kontrolliert die Qualität. Versuchen Sie, einen niedrigeren CRF einzustellen, vielleicht 20, 18 usw. Hier bedeutet niedriger eine bessere Qualität, aber es wird die Dateigröße erhöhen. Eine Änderung von 6 in der CRF gibt Ihnen zweimal / die Hälfte der ursprünglichen durchschnittlichen Bitrate, grob gesagt.

    Sie müssen eine niedrigere CRF wegen der Generierung Verlust. Sie codieren etwas, das bereits war codiert, also werfen Sie wieder visuelle Informationen weg. Das ist nie gut, aber wenn Sie müssen, müssen Sie eine höhere Qualität einstellen, um nicht zu viele Informationen aus dem Eingangsvideo zu entfernen.

  2. Im zweiten Fall versuchen Sie, eine konstante Bitrate von 2 MBit / s festzulegen. Jetzt liefert x264 eine viel bessere visuelle Qualität als ein MPEG-4 Visual Encoder für die gleiche Bitrate, aber aufgrund des Generationsverlusts könnten Sie möchten Sie eine noch höhere Bitrate als das Original verwenden – sonst werden Sie am Ende zu viele Informationen wegkomprimieren.

    Darüber hinaus kann eine konstante Bitratencodierung dazu führen, dass einige Passagen gut aussehen,andere Teile des Videos jedoch schlechter. Wenn Sie den Encoder nicht frei wählen lassen, wie viele Bits er für etwas ausgeben möchte, werden Sie die Qualität auf Kosten der Kenntnis der Zieldateigröße opfern.

    X264 hat einen konstanten Bitratenmodus, aber es ist als schlechter als die anderen Codierungsmethoden. Eigentlich soll die Zweipasscodierung nicht auf optimale Qualität abzielen, also kratzen Sie daran.

Dass alles gesagt wird, versuchen Sie etwas entlang der folgenden:

ffmpeg -i input.avi -c:v libx264 -crf 19 -preset slow -c:a libfdk_aac -b:a 192k -ac 2 out.mp4

Wenn libfdk_aac nicht verfügbar ist, verwenden Sie stattdessen Folgendes:

ffmpeg -i input.avi -c:v libx264 -crf 19 -preset slow -c:a aac -b:a 192k -ac 2 out.mp4

Die wichtigsten qualität control knob wird ihre CRF einstellung. Experimentieren Sie damit und verwenden Sie einen niedrigeren Wert, wenn Sie eine bessere Qualität benötigen.

Sie können auch die Voreinstellung veryslow wählen, die Ihnen bessere Komprimierung, aber die Codierung wird offensichtlich länger dauern.

Wenn Sie es nicht schaffen, eine Datei von anständiger Qualität bei einer angemessenen Dateigröße zu erhalten, haben Sie kein Glück. Halten Sie die Originaldatei besser unverändert, ohne sie neu zu codieren. Es gibt keine Magie" Beibehaltung der gleichen Qualität " Werkzeug, wenn Sie etwas komprimieren, die bereits komprimiert ist.

 66
Author: slhck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-06-14 09:09:54