près ces quelques aigreurs monégasques, je vous propose un sujet plus léger n'ayant rien à voir avec la sécurité informatique. À savoir un rapide retour d'expérience sur le montage de vidéos sous Linux.
En effet, suite à la mise en ligne de mes trois derniers montages, sensiblement plus chiadés que les précédents, j'ai reçu plusieurs emails me demandant pour l'essentiel quel logiciel j'utilisais. Quelques uns s'intéressaient également à des aspects plus précis tels que la conversion, le changement de format, le slow-motion ou encore l'anti-bougé. J'ai donc décidé de consacrer un rapide billet à la question.
Pour le montage en lui-même, si Kino est un excellent logiciel, l'absence de gestion des formats HD, typiquement le 720p, me l'a fait abandonner très rapidement. Cinelerra est extrêmement complet, voire compliqué, mais lent. De plus, et surtout, j'ai énormément de la mal à me faire à la gestion de la timeline qui ne donne pas un aperçu simple du déroulement du montage.
J'ai donc fini par opter pour Openshot qui a le mérite de faire exactement ce que j'attends de lui de manière simple, à savoir placer des séquences vidéos préalablement découpées au bon endroit. Le seul gros reproche que j'aurais à lui faire est l'absence d'affichage de la bande son sous forme de spectre qui permettrait de mieux caler la vidéo. Mais globalement, ça marche bien, à quelques glitches[1] près.
Pour tout le reste, j'utilise essentiellement MEncoder et, dans une moindre mesure, FFmpeg.
- Découpage des séquences vidéos avec mencoder :
-ss <time> (N sec, N:N min:sec, N:N:N h:min:sec) -endpos <time> (durée de la séquence produite, dépendant du framerate...)
- Crop[2] avec mencoder également :
-vf crop=<l:h[:x:y]> (x,y pour le positionnement du coin haut gauche)
- Redimensionnement de la vidéo, toujours avec mencoder :
-vf scale=<l:h>
- Ralenti[3], avec mencoder :
-speed <0.01-100> -fps <fps_in> -ofps <fps>
- Ralenti avec compensation[4] en utilisant ffmpeg et divers outils spécialisés comme yuvfps (utiliser le -w), yuvaifps ou yuvmotionfps :
ffmpeg -i input.mp4 -f yuv4mpegpipe - | yuvfps -r 30:1 -w | ffmpeg -f yuv4mpegpipe -i - -b 10000k -y output.mp4 ffmpeg -i input.mp4 -f yuv4mpegpipe - | yuvaifps -r 30:1 -v 1 | ffmpeg -f yuv4mpegpipe -i - -b 10000k -y output.mp4 ffmpeg -i input.mp4 -f yuv4mpegpipe - | yuvmotionfps -r 30:1 | ffmpeg -f yuv4mpegpipe -i - -b 10000k -y output.mp4
J'obtient ainsi toutes mes séquences à la bonne résolution[5] avec, grosso modo, la bonne durée et le même framerate. Il ne me reste plus qu'à les caler au bon endroit sur la bande son, appliquer les transitions qui vont bien, et hop.
Si je travaille comme ceci, et non directement avec les séquences vidéo originales que je dupliquerais autant de fois que nécessaire dans le logiciel de montage pour les découper, croper et/ou zoomer ensuite, c'est que je trouve cette méthode plus simple et plus rapide[6]. Plus simple parce que dans la mesure où je récupère des vidéos à des formats variés, typiquement 1080p, 720p ou encore 960p. En effet, ma GoPro est configurée en 1280x960 pour avoir un angle vertical maximal de façon à ne pas avoir à trop me soucier du cadrage. Du coup, je dois cropper quasiment systématiquement mes vidéos, et souvent redimensionner celles des autres. Plus rapide aussi parce que ça soulage fortement le logiciel de montage durant le travail et surtout pendant la génération de la vidéo finale.
Je peux également être amené à appliquer quelques modifications plus anecdotiques, toujours avec mencoder :
- Supprimer la bande son, rarement utile sur les vidéos de chute, voire même de snowboard :
-nosound
- Copier la banse son sans conversion quand il s'agit d'un simple découpage :
-oac copy
- Compresser la vidéo en H.264 quand elle ne l'est pas déjà :
-ovc x264
La stabilisation de mouvement est quelque chose que j'adorerais avoir, mais qui reste un point noir que je n'ai pas encore résolu. Soit que les saccades qui impactent mes vidéos de chute soient trop rapides, soit que j'utilise mal les logiciels. J'ai investigué deux méthodes en particulier.
- Avec transcode et son plugin vid.stab en deux passes :
transcode -J stabilize --mplayer_probe -i input.mp4i -y null,null -o dummy transcode -J transform --mplayer_probe -i input.mp4 -y <codec> -o output.avi
melt -verbose -progress video.mp4 -filter videostab2 -consumer "xml:video-vstab.mlt" all=1 real_time=-2 melt -verbose -progress video-vstab.mlt -consumer "avformat:video-vstab.mp4" vcodec=libx264 b=5000k tune=film preset=slow real_time=-2 threads=3
Les résultats s'avèrent cependant décevants, avec des rendus qui sont parfois plus mauvais que l'original. Si vous avez quelque chose à me conseiller, je suis preneur, d'autant plus qu'une vidéo stabilisée donnera lieu à une bien meilleure compensation lors de la génération d'un slowmotion...
Notes
[1] De légers freezes sur les transitions à la production de la vidéo finale...
[2] Recadrage sur une zone spécifique.
[3] Pour le slowmotion essentiellement.
[4] Pas super efficace au demeurant...
[5] 720p, soit 1280x720, pour les vidéos HD sur Vimeo.
[6] voire plus précise selon les logiciels de montage utilisés, quand il permettent les opérations.