J'essaie de convertir une vidéo de WMV en MP4 avec FFmpeg mais cela prend quelques heures. Si j'essaie de le convertir en AVI, cela ne prend que 10 à 15 minutes.
version ffmpeg
ffmpeg version N-43206-gf857465
built on Aug 4 2012 16:10:39 with gcc 4.7.1 (GCC)
Conversion en 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)
Conversion en MP4 avec 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)
Conversion en AVI avec 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)
Y a-t-il des paramètres supplémentaires que je dois transmettre?
ffmpeg
video-conversion
mp4
wmv
Giorgi
la source
la source
copy
, vous ne réencodez rien. De quel matériel disposez-vous, par exemple CPU? Quel est votre système d'exploitation et quelle version de FFmpeg est-ce?Réponses:
Copie de flux
Lorsque vous appelez
-c:v:1 copy
, FFmpeg prendra le flux vidéo existant et le copiera en flux . Le flux vidéo est simplement encapsulé dans le conteneur extérieur, par exemple WMV, AVI ou MP4 - votre flux vidéo réel estmsmpeg4
et restera comme ça.Si vous voulez en savoir plus sur ce dont je parle, voir ici: Qu'est-ce qu'un codec (par exemple DivX?), Et en quoi diffère-t-il d'un format de fichier (par exemple MPG)?
Lors de la copie du flux binaire, FFmpeg n'a pas besoin de réellement décoder et ré-encoder la vidéo réelle. Il suffit de fusionner le flux binaire vidéo dans un nouveau format de conteneur, ce qui est souvent une opération assez simple et ne prend donc pas longtemps.
Codage
Contrairement à cela, si vous appelez
-vcodec libx264
(ou-c:v libx264
, la syntaxe que vous devez utiliser car ellevcodec
est obsolète), FFmpeg sera obligé de décoder le flux binaire vidéo d'msmpeg4
un format brut, puis de le diriger versx264
un encodeur H.264.Le x264 est rapide, mais l'encodage de la vidéo prend du temps - en particulier lorsqu'il s'agit d'un contenu 720p. Et cela peut prendre plus d'une heure, surtout si votre saisie dépasse déjà une heure. De plus, votre processeur n'est peut-être pas le plus rapide. C'est la principale raison pour laquelle les anciens encodeurs visuels MPEG-4 comme XviD sont toujours là et très populaires: ils prennent moins de temps à encoder que les codecs H.264. Ils peuvent ne pas vous donner les meilleures performances en termes de qualité par rapport à la taille du fichier, mais ils sont rapides.
Cela étant dit: vous pouvez accélérer l'encodage x264 en forçant un preset. Les préréglages sont des paramètres d'optimisation de l'encodeur et vont de: ultra-rapide, ultra-rapide, très rapide, plus rapide, rapide, moyen, lent, plus lent, très lent. Votre commande pourrait alors ressembler à ceci:
Il devrait fonctionner plus rapidement que sans préréglage. Le seul inconvénient est qu'il n'obtient pas une qualité aussi bonne pour les mêmes taux de compression que, par exemple
-preset veryslow
,.En dehors de cela, vous ne pouvez pas faire grand-chose à part investir dans un processeur rapide et vous assurer que vous exécutez une version récente de FFmpeg avec prise en charge x264.
Pour plus d'informations, voir Wiki FFmpeg: Guide d'encodage H.264 .
la source
libx264
lorsque vous spécifiez «h264» comme encodeur.fast
. Quelques statistiques intéressantes (si VMAF peut faire confiance ici): streaminglearningcenter.com/blogs/…Comme je jouais (des heures interminables) avec la conversion WMV-> MP4, j'ai trouvé un moyen ultra-rapide de le faire. Mais il a un prix: un prix de stockage. Si vous convertissez WMV en sans perte, puis de sans perte en MP4, il effectue la conversion complète en un rien de temps. Mais vous avez besoin de 100 fois d'espace disque dur pour stocker la version sans perte, ce qui est douloureux.
Il s'avère donc que vous pouvez choisir parmi des versions très lentes ou très intensives en disque dur de la conversion WMV-> MP4 et vous n'avez pas d'autre choix.
Conversion d'un WMV en AVI sans perte: ffmpeg.exe -i screen.wmv -vcodec ffv1 screen.avi Puis conversion d'AVI sans perte en MP4 (ou WebM, peu importe) ffmpeg.exe -i screen.avi screen.mp4
Super rapide!
la source