Deshaking des vidéos à l'aide d'un script

11

Comment puis-je secouer ma vidéo?

J'essaie d'utiliser le transcodage:

transcode  -J stabilize --mplayer_probe -i "input.MTS"

Mais cela provoque une erreur de segmentation.

Essayer d'utiliser des filtres ffmpeg:

ffmpeg -i "input.MTS" -vf vidstabdetect=shakiness=5:show=1 out.avi
ffmpeg -i "input.MTS" -vf deshake out.avi

Mais ayez toujours une erreur "Pas de tel filtre".

Je veux créer un simple script nautilus pour cela.

Crantisz
la source
Le transcodage ne doit pas segfault, jouer avec les options. Voir peut répondre à askubuntu.com/questions/228841/… avec des liens vers des tutoriels.
Takkat

Réponses:

19

Actuellement, à ffmpegpartir du référentiel ne prend en charge que le filtre de désactivation plus simple , mais ne prend pas en charge les meilleurs filtres vidstab .

Vous avez quelques options pour obtenir le support de vidstab: compiler ou utiliser un PPA.


Compilation

C'est la meilleure option si vous souhaitez également personnaliser votre ffmpegou utiliser la dernière version.

Vous devrez d'abord compiler libvidstab ou utiliser le paquet libvidstab-dev . Actuellement, seulement 19.04 Disco Dingo et plus récent fournit ce package. Alternativement, les utilisateurs de Xenial Xerus 16.04 peuvent utiliser le paquet libvidstab-dev du PPA mc3man ).

Pour compiler libvidstab:

$ sudo apt-get install build-essential cmake
$ mkdir ~/ffmpeg_sources ~/ffmpeg_build
$ cd ~/ffmpeg_sources
$ wget -O https://github.com/georgmartius/vid.stab/archive/master.zip
$ unzip master.zip
$ cd vid.stab-master
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=~/ffmpeg_build .
$ make
$ make install

Suivez maintenant Comment compiler FFmpeg sur Ubuntu . Lorsque vous arrivez à l'étape où ffmpegest configuré, ajoutez --enable-libvidstabà la liste des options de configuration.


mc3man PPA

FFmpeg version actuelle plus git PPA pour 16.04 Xenial Xerus:

sudo add-apt-repository ppa:mc3man/ffmpeg-test
sudo apt-get update
sudo apt-get install ffmpeg-static

Maintenant, exécutez ffmpeg2 (notez le "2").


Usage

Voir les instructions d'utilisation de vid.stab .


Regarde aussi

llogan
la source
configétape de construction de ffmpeg échoue pour moi avec ERROR: vidstab not found using pkg-config. Qu'est-ce que je rate ?
expert
Le PPA de Doug n'a pas non plus libvidstab-dev
expert
1
@guettli Ça ne devrait pas. C'était une faute de frappe. Merci de l'avoir signalé. J'ai édité la réponse.
llogan
Pour tous (comme moi) qui lisent trop vite: vous devez utiliser ffmpeg 2
guettli
ne semble pas fonctionner avec ubuntu 17.04
wotanii
3

Comme d'autres mentionnent ci-dessus, le PPA de Doug ne prend pas en charge Zesty (17.04) - au 19/08/2017. Comme 17.10 sortira en octobre 16.04, les solutions seront de plus en plus obsolètes. Deux solutions possibles pour les utilisateurs de Zesty:

  1. Plus simple: utilisez simplement une version statique https://www.johnvansickle.com/ffmpeg/
  2. Plus de travail: installez le à vid.stabpartir de github ( https://github.com/georgmartius/vid.stab lire les instructions de compilation, très simple), puis compilez ffmpeg https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

Comme je n'ai pas trop de temps, j'aime la première solution, fonctionnant parfaitement.

Le premier passage de vidstab ne fonctionne que sur 1 cœur, mais comme mes séquences GoPro sont en plusieurs morceaux, je pourrais traiter 4 vidéos simultanément si je veux une charge système de 100%. Le deuxième passage utilise les 4 cœurs.

Mon ordinateur portable i7-6820HK mais les deux passes ne progressent qu'à une vitesse d'environ 0,12x. C'est donc assez lent, mais je me fiche que le résultat soit agréable.


Mise à jour: mes images montées sur un casque semblent si tremblantes que tremblements 10 ne suffit pas. Je ne sais pas quoi faire, c'est le maximum ...

Csaba Toth
la source
1
J'ai essayé le deshakepour ma monture de casque GoPro monté sur un casque, mais il semblait presque ne rien faire. Deshake fait partie de la version officielle d'Ubuntu ffmpeg, peut-être y a-t-il une combinaison de paramètres qui fonctionnerait mieux, mais la lecture sur le net semble vid.stabêtre meilleure.
Csaba Toth
Oui, vidstab est meilleur, mais plus compliqué.
llogan
1

Je suppose que beaucoup de gens (moi y compris) ont trouvé cette question, essayant simplement d'utiliser ffmpeg avec le filtre.

Ces réponses sur la compilation sont excellentes, mais elles prennent du temps et peuvent être difficiles pour certaines personnes.

De nos jours, il existe une option simple pour utiliser l'image Docker qui est déjà construite avec de nombreux filtres, codecs et plus encore.

Personnellement, j'ai utilisé cette image https://github.com/jrottenberg/ffmpeg

L'exemple d'utilisation est très simple pour le filtre de déshake:

docker run -v $PWD:/temp/ \
    jrottenberg/ffmpeg \
    -i /temp/input.MTS \
    -vf deshake \
    /temp/out.avi

Aussi pour le filtre vidstab:

# create vectors from input file
docker run -v $PWD:/temp/ jrottenberg/ffmpeg \
    -i /temp/input.MTS \
    -vf vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=/temp/transform_vectors.trf -f null -

# process file using vectors from step 1
docker run -v $PWD:/temp/ jrottenberg/ffmpeg \
    -i /temp/input.MTS \
    -vf vidstabtransform=input=/temp/transform_vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 \
    /temp/out.avi

N'oubliez pas que le fichier créé "out.avi" aura le rootpropriétaire et que cela devrait être changé.

atay
la source