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
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:
-
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.
-
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.
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