Я пытаюсь конвертировать видео из WMV в MP4 с помощью FFmpeg, но это занимает пару часов. Если я пытаюсь преобразовать его в AVI, это займет около 10-15 минут.
версия ffmpeg
ffmpeg version N-43206-gf857465
built on Aug 4 2012 16:10:39 with gcc 4.7.1 (GCC)
Преобразование в 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)
Преобразование в MP4 с 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)
Преобразование в AVI с 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)
Есть ли дополнительные параметры, которые мне нужно передать?
ffmpeg
video-conversion
mp4
wmv
Гиорги
источник
источник
copy
вы ничего не перекодируете. Какое оборудование у вас есть, например, процессор? Какая у вас ОС и какая версия FFmpeg?Ответы:
Потоковое копирование
Когда вы звоните
-c:v:1 copy
, FFmpeg возьмет существующий поток видео и скопирует его в поток . Битовый поток видео просто инкапсулируется во внешний контейнер, например, WMV, AVI или MP4 - ваш реальный битовый поток видео естьmsmpeg4
и останется таким.Если вы хотите узнать больше о том, о чем я говорю, см. Здесь: что такое кодек (например, DivX?) И чем он отличается от формата файла (например, MPG)?
При копировании потока битов FFmpeg не нужно фактически декодировать и перекодировать реальное видео. Просто нужно объединить видеопоток в новый формат контейнера, что часто является довольно простой операцией и поэтому не занимает много времени.
кодирование
В отличие от этого, если вы вызываете
-vcodec libx264
(или-c:v libx264
синтаксис, который вы должны использовать, потому чтоvcodec
он устарел), FFmpeg будет вынужден декодировать битовый поток видео изmsmpeg4
необработанного формата, а затем направить его вx264
кодер H.264.x264 работает быстро, но кодирование видео все равно занимает много времени, особенно когда его содержимое 720p. И это может занять более одного часа, особенно если ваш ввод уже более одного часа. Кроме того, ваш процессор может быть не самым быстрым. Это основная причина, по которой старые кодеры MPEG-4 Visual, такие как XviD, все еще популярны: им требуется меньше времени для кодирования, чем кодекам H.264. Они могут не дать вам наилучшую производительность с точки зрения качества и размера файла, но они быстры.
Это все, как говорится: вы можете ускорить кодирование x264, форсируя пресет. Пресеты представляют собой параметры оптимизации кодировщика и варьируются от: сверхбыстрый, сверхбыстрый, очень быстрый, быстрый, быстрый, средний, медленный, медленный, очень низкий. Ваша команда может выглядеть так:
Он должен работать быстрее, чем без предустановки. Единственным недостатком является то, что он не достигает такого же качества при тех же скоростях сжатия по сравнению, например, с
-preset veryslow
.Кроме того, вы ничего не можете сделать, кроме как инвестировать в быстрый процессор и убедиться, что у вас установлена последняя сборка FFmpeg с поддержкой x264.
Для получения дополнительной информации см. FFmpeg Wiki: Руководство по кодированию H.264 .
источник
libx264
когда вы указываете «h264» в качестве кодировщика.fast
. Немного интересной статистики (если VMAF можно доверять здесь): streaminglearningcenter.com/blogs/…Поскольку я играл (бесконечные часы) с конвертацией WMV-> MP4, я нашел сверхбыстрый способ сделать это. Но у него есть цена: цена хранения. Если вы конвертируете WMV в без потерь, то из без потерь в MP4, он делает полное преобразование в кратчайшие сроки. Но вам нужно в 100 раз больше места на жестком диске для хранения версии без потерь, что очень болезненно.
Получается, что вы можете выбрать одну из очень медленных или очень жестких версий конвертации WMV-> MP4, и у вас нет другого выбора.
Преобразование WMV в AVI без потерь: ffmpeg.exe -i screen.wmv -vcodec ffv1 screen.avi Затем преобразование AVI без потерь в MP4 (или WebM, это не имеет значения) ffmpeg.exe -i screen.avi screen.mp4
Сверх быстрый!
источник