ビデオのシェイクを解除するにはどうすればよいですか?
私はトランスコードを使用しようとします:
transcode -J stabilize --mplayer_probe -i "input.MTS"
しかし、それはセグメンテーション違反を引き起こします。
Ffmpegフィルターを使用しよう:
ffmpeg -i "input.MTS" -vf vidstabdetect=shakiness=5:show=1 out.avi
ffmpeg -i "input.MTS" -vf deshake out.avi
ただし、常に「No such filter」というエラーが発生します。
このために単純なnautilusスクリプトを作成したいと思います。
現在、リポジトリのffmpeg
は、より単純な deshake フィルターのみをサポートしていますが、より優れた vidstab フィルターはサポートしていません。
Vidstabサポートを取得するには、PPAをコンパイルするか使用するいくつかのオプションがあります。
これは、ffmpeg
をカスタマイズしたり、最新バージョンを使用したりする場合にも最適なオプションです。
まず、libvidstabをコンパイルするか、 libvidstab-dev パッケージを使用する必要があります。現在、このパッケージを提供しているのは、19.04 Disco Dingo以降のみです。または、16.04 Xenial Xerusユーザーは、 mc3man PPA )のlibvidstab-devパッケージを使用できます。
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
buntuでFFmpegをコンパイルする方法 に従ってください。 ffmpeg
が構成されているステップに到達したら、--enable-libvidstab
を構成オプションのリストに追加します。
FFmpeg現在のリリース+ git PPA 16.04 Xenial Xerusの場合:
Sudo add-apt-repository ppa:mc3man/ffmpeg-test
Sudo apt-get update
Sudo apt-get install ffmpeg-static
ffmpeg2
(「2」に注意)を実行します。
vid.stabの使用方法 を参照してください。
他の人が上記で言及したように、DougのPPAはZesty(17.04)をサポートしていません-2017年8月19日現在17.10が10月16.04にリリースされるので、ソリューションはますます時代遅れになります。 Zestyユーザー向けの2つの可能なソリューション:
vid.stab
をインストールし( https://github.com/georgmartius/vid.stab コンパイル手順を読んでください、非常に簡単です)、次にffmpeg
をコンパイルします https://trac.ffmpeg.org/wiki/CompilationGuide/Ubunt私はあまり時間がないので、私は最初の解決策が好きで、完璧に働きました。
Vidstabの最初のパスは1コアでのみ動作しますが、GoProの映像は多くのチャンクにあるため、100%のシステム負荷が必要な場合は4つのビデオを同時に処理できます。 2番目のパスでは、4つのコアすべてを使用します。
私のラップトップi7-6820HKですが、両方とも約0.12倍の速度でしか進行しません。かなり遅いですが、結果がいいかどうかは気にしません。
更新:ヘルメットマウントの映像が非常に揺れているため、揺れ10では十分ではありません。私は何をすべきかわかりません、それは最大です...
多くの人々(私を含む)がこの質問を見つけて、フィルターでffmpegを使用しようとしていると思います。
コンパイルに関するこれらの答えは素晴らしいですが、時間がかかり、一部の人にとっては難しいかもしれません。
現在、多くのフィルター、コーデックなどで既に構築されているDockerイメージを使用する簡単なオプションがあります。
個人的には、この画像を使用しました https://github.com/jrottenberg/ffmpeg
シェークフィルターの使用例は非常に簡単です。
docker run -v $PWD:/temp/ \
jrottenberg/ffmpeg \
-i /temp/input.MTS \
-vf deshake \
/temp/out.avi
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
作成されたファイル「out.avi」の所有者はroot
であり、変更する必要があることに注意してください。