스크립트를 사용하여 비디오 디 쉐이킹


12

비디오를 어떻게 흔들 수 있습니까?

코드 변환을 사용하려고합니다.

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

그러나 그것은 segfault를 유발합니다.

ffmpeg 필터를 사용하려고합니다 :

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

그러나 항상 "No such filter"라는 오류가 있습니다.

이를 위해 간단한 노틸러스 스크립트를 만들고 싶습니다.


트랜스 코드는 segfault해서는 안되며 옵션으로 재생하십시오. 튜토리얼 링크가있는 askubuntu.com/questions/228841/…에 대한 답변을 참조하십시오 .
Takkat

답변:


20

현재 ffmpeg리포지토리에서 간단한 디 쉐이크 필터 만 지원 하지만 더 나은 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

이제 우분투에서 FFmpeg를 컴파일하는 방법을 따르십시오 . ffmpeg구성된 단계에 도달하면 --enable-libvidstab구성 옵션 목록에 추가하십시오 .


mc3man PPA

16.04 Xenial Xerus의 FFmpeg 현재 릴리스 및 git PPA :

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

이제 실행하십시오 ffmpeg2 ( "2"참고).


용법

vid.stab 사용법 지시 사항을 참조하십시오 .


참조


configffmpeg 빌드 단계가 실패합니다 ERROR: vidstab not found using pkg-config. 내가 무엇을 놓치고 있습니까?
전문가

또한 Doug의 PPA에는 libvidstab-dev가 없습니다
전문가

1
@guettli해서는 안됩니다. 오타였습니다. 지적 해 주셔서 감사합니다. 나는 대답을 편집했다.
llogan

너무나 빨리 읽는 모든 사람들에게 : ffmpeg 2
guettli

우분투 17.04에서 작동하지 않는 것
wotanii

3

다른 사람들이 위에서 언급했듯이 Doug의 PPA는 Zesty (17.04)를 지원하지 않습니다 -2017 년 8 월 19 일 기준. 17.10이 10 월에 나올 때 16.04 솔루션은 점점 더 쓸모 없게 될 것입니다. Zesty 사용자를위한 두 가지 가능한 솔루션 :

  1. 더 간단 : 정적 빌드를 사용 하십시오 https://www.johnvansickle.com/ffmpeg/
  2. 추가 작업 : vid.stabgithub에서 설치 ( https://github.com/georgmartius/vid.stab 컴파일 지침을 매우 간단하게 읽음) https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 컴파일ffmpeg

시간이 많지 않기 때문에 첫 번째 솔루션이 마음에 들었습니다.

vidstab 첫 번째 패스는 1 코어에서만 작동하지만 GoPro 푸티지가 많은 청크로 구성되어 있기 때문에 100 % 시스템로드를 원하면 동시에 4 개의 비디오를 처리 할 수 ​​있습니다. 두 번째 패스는 4 개의 코어를 모두 사용합니다.

내 노트북 ​​i7-6820HK이지만 둘 다 약 0.12x 속도로 진행합니다. 따라서 속도가 느리지 만 결과가 좋을지는 신경 쓰지 않습니다.


업데이트 : 헬멧 장착 장면이 너무 흔들려서 shakiness 10으로 충분하지 않습니다. 무엇을 해야할지 모르겠습니다.


1
나는 시도 deshake내 헬멧은 GoPro의 자전거 푸티를 장착하지만, 거의 아무것도하지 않은 것처럼 보였다. Deshake는의 공식 우분투 버전 ffmpeg의 일부 입니다 . 아마도 더 잘 작동하는 매개 변수 조합이있을 수 있지만, 순음에서 읽는 vid.stab것이 더 좋습니다.
Csaba Toth

예, vidstab이 더 좋지만 더 복잡합니다.
llogan

1

많은 사람들 (포함) 이이 질문을 발견하고 필터와 함께 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소유자가 있으므로 변경해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.