Ich versuche, ein Video mit FFmpeg von WMV nach MP4 zu konvertieren, aber es dauert einige Stunden. Wenn ich versuche, es in AVI umzuwandeln, dauert es nur etwa 10-15 Minuten.
ffmpeg Version
ffmpeg version N-43206-gf857465
built on Aug 4 2012 16:10:39 with gcc 4.7.1 (GCC)
Umstellung auf MP4
ffmpeg -i input.wmv -vcodec libx264 output.mp4
libavutil 51. 66.100 / 51. 66.100
libavcodec 54. 49.100 / 54. 49.100
libavformat 54. 22.100 / 54. 22.100
libavdevice 54. 2.100 / 54. 2.100
libavfilter 3. 5.102 / 3. 5.102
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, asf, from 'input.wmv':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Duration: 01:14:23.06, start: 0.000000, bitrate: 324 kb/s
Stream #0:0: Video: msmpeg4 (MP43 / 0x3334504D), yuv420p, 1280x720, 15 tbr,
1k tbn, 1k tbc
[libx264 @ 03427620] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cac
he64
[libx264 @ 03427620] profile High, level 3.1
[libx264 @ 03427620] 264 - core 125 r2208 d9d2288 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 i
nterlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenec
ut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=
0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=-1--
1, 15 tbn, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (msmpeg4 -> libx264)
Umstellung auf MP4 mit copy
ffmpeg -i input.wmv -c:v:1 copy output.mp4
libavutil 51. 66.100 / 51. 66.100
libavcodec 54. 49.100 / 54. 49.100
libavformat 54. 22.100 / 54. 22.100
libavdevice 54. 2.100 / 54. 2.100
libavfilter 3. 5.102 / 3. 5.102
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, asf, from 'input.wmv':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Duration: 01:14:23.06, start: 0.000000, bitrate: 324 kb/s
Stream #0:0: Video: msmpeg4 (MP43 / 0x3334504D), yuv420p, 1280x720, 15 tbr,
1k tbn, 1k tbc
[libx264 @ 03437620] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cac
he64
[libx264 @ 03437620] profile High, level 3.1
[libx264 @ 03437620] 264 - core 125 r2208 d9d2288 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 i
nterlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=15 scenec
ut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=
0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=-1--
1, 15 tbn, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (msmpeg4 -> libx264)
Umstellung auf AVI mit copy
ffmpeg -i input.wmv -c:v:1 copy output.avi
Input #0, asf, from 'input.wmv':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
encoder : Lavf54.22.100
Duration: 01:14:23.06, start: 0.000000, bitrate: 324 kb/s
Stream #0:0: Video: msmpeg4 (MP43 / 0x3334504D), yuv420p, 1280x720, 15 tbr,
1k tbn, 1k tbc
Output #0, avi, to 'output.avi':
Metadata:
WMFSDKVersion : 12.0.7601.17514
WMFSDKNeeded : 0.0.0.0000
IsVBR : 0
ISFT : Lavf54.22.100
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1280x720, q=2-31, 20
0 kb/s, 15 tbn, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (msmpeg4 -> mpeg4)
Gibt es einige zusätzliche Parameter, die ich übergeben muss?
ffmpeg
video-conversion
mp4
wmv
Giorgi
quelle
quelle
copy
kodieren Sie nichts neu. Welche Hardware hast du, zB CPU? Was ist dein Betriebssystem und welche Version von FFmpeg ist das?Antworten:
Stream-Kopieren
Wenn Sie anrufen
-c:v:1 copy
, übernimmt FFmpeg den vorhandenen Video-Bitstream und kopiert ihn per Stream . Der Video-Bitstream ist nur im externen Container gekapselt, z. B. WMV, AVI oder MP4 - Ihr tatsächlicher Video-Bitstream istmsmpeg4
und bleibt so.Wenn Sie mehr darüber erfahren möchten, wovon ich spreche, lesen Sie hier: Was ist ein Codec (z. B. DivX?) Und wie unterscheidet er sich von einem Dateiformat (z. B. MPG)?
Beim Kopieren des Bitstroms muss FFmpeg das eigentliche Video nicht dekodieren und neu kodieren. Der Video-Bitstream muss lediglich in einem neuen Containerformat zusammengeführt werden. Dies ist häufig eine recht einfache Operation und dauert daher nicht lange.
Codierung
Im Gegensatz dazu wird FFmpeg beim Aufrufen
-vcodec libx264
(oder-c:v libx264
der Syntax, die Sie verwenden sollten, weil sievcodec
veraltet ist) gezwungen, den Videobitstream vonmsmpeg4
in ein Rohformat zu dekodieren und ihn dann inx264
einen H.264-Encoder weiterzuleiten.x264 ist schnell, aber das Codieren von Videos braucht Zeit - insbesondere bei 720p-Inhalten. Und es kann mehr als eine Stunde dauern, insbesondere wenn Ihre Eingabe bereits länger als eine Stunde ist. Außerdem ist Ihre CPU möglicherweise nicht die schnellste. Dies ist der Hauptgrund, warum ältere MPEG-4 Visual-Encoder wie XviD immer noch verfügbar und sehr beliebt sind: Die Codierung dauert weniger lange als bei H.264-Codecs. Sie bieten möglicherweise nicht die beste Leistung in Bezug auf Qualität und Dateigröße, sind jedoch schnell.
Das alles gesagt: Sie können die x264-Codierung beschleunigen, indem Sie eine Voreinstellung erzwingen. Voreinstellungen sind Einstellungen für die Encoderoptimierung und reichen von: ultraschnell, superschnell, sehr schnell, schneller, schnell, mittel, langsam, langsamer, sehr langsam. Ihr Befehl könnte dann so aussehen:
Es sollte schneller laufen als ohne Voreinstellung. Der einzige Nachteil ist, dass bei gleichen Komprimierungsraten im Vergleich zu beispielsweise nicht so gute Qualität erzielt wird
-preset veryslow
.Abgesehen davon können Sie nur in eine schnelle CPU investieren und sicherstellen, dass Sie einen aktuellen Build von FFmpeg mit x264-Unterstützung ausführen.
Weitere Informationen finden Sie im FFmpeg-Wiki: H.264-Codierungshandbuch .
quelle
libx264
wenn Sie ´h264` als Encoder angeben.fast
. Einige interessante Statistiken (wenn VMAF hier vertrauenswürdig ist): Streaminglearningcenter.com/blogs/…Als ich (endlose Stunden) mit WMV-> MP4-Konvertierung spielte, fand ich einen superschnellen Weg, dies zu tun. Aber es hat einen Preis: einen Lagerpreis. Wenn Sie WMV in verlustfrei und dann in verlustfrei in MP4 konvertieren, wird die vollständige Konvertierung in kürzester Zeit durchgeführt. Sie benötigen jedoch 100-mal Festplattenspeicher, um die verlustfreie Version zu speichern, was schmerzhaft ist.
Es stellt sich also heraus, dass Sie zwischen sehr langsamen oder sehr HDD-intensiven Versionen der WMV-> MP4-Konvertierung wählen können und keine andere Wahl haben.
Konvertieren eines WMV in verlustfreies AVI: ffmpeg.exe -i screen.wmv -vcodec ffv1 screen.avi Konvertieren von verlustfreiem AVI in MP4 (oder WebM, egal) ffmpeg.exe -i screen.avi screen.mp4
Super schnell!
quelle