Deshaking วิดีโอโดยใช้สคริปต์


12

ฉันจะ deshake วิดีโอของฉันได้อย่างไร

ฉันพยายามใช้ transcode:

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

แต่มักจะมีข้อผิดพลาด "ไม่มีตัวกรองดังกล่าว"

ฉันต้องการสร้างสคริปต์หอยโข่งอย่างง่ายสำหรับสิ่งนี้


Transcode ไม่ควร segfault เล่นด้วยตัวเลือก ดูอาจตอบไปที่askubuntu.com/questions/228841/…พร้อมลิงก์ไปยังบทช่วยสอน
Takkat

คำตอบ:


20

ปัจจุบันffmpegจากพื้นที่เก็บข้อมูลสนับสนุนตัวกรองdeshake ที่ง่ายกว่าแต่ไม่รองรับตัวกรองvidstab ที่ดีกว่า

คุณมีตัวเลือกเล็กน้อยในการรับการสนับสนุน vidstab: รวบรวมหรือใช้ PPA


การรวบรวม

นี่เป็นตัวเลือกที่ดีที่สุดหากคุณต้องการปรับแต่งffmpegหรือใช้รุ่นล่าสุด

ครั้งแรกที่คุณจะต้อง libvidstab รวบรวมหรือใช้libvidstab-devแพคเกจ ขณะนี้มีเพียง 19.04 Disco Dingo และใหม่กว่ามีแพ็คเกจนี้ อีกทางหนึ่งผู้ใช้ Xenial Xerus 16.04 สามารถใช้แพ็คเกจ libvidstab-dev จากmc3man PPA )

ในการรวบรวม 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 บน Ubuntu เมื่อคุณไปถึงขั้นตอนที่ffmpegมีการกำหนดค่าแล้วเพิ่มลง--enable-libvidstabในรายการตัวเลือกการกำหนดค่า


mc3man PPA

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


ยังดู


configขั้นตอนของการสร้าง ffmpeg ERROR: vidstab not found using pkg-configล้มเหลวสำหรับฉันด้วย ฉันพลาดอะไรไป
ผู้เชี่ยวชาญ

PPA ของ Doug ยังไม่มี libvidstab-dev
ผู้เชี่ยวชาญ

1
@guettli มันไม่ควร นั่นคือการพิมพ์ผิด ขอบคุณที่ชี้นำ ฉันแก้ไขคำตอบ
llogan

สำหรับทุกคน (เช่นฉัน) ที่อ่านเร็วเกินไป: คุณต้องใช้ ffmpeg 2
guettli

ดูเหมือนจะไม่ทำงานกับ ubuntu 17.04
wotanii

3

ดังที่คนอื่น ๆ กล่าวไว้ข้างต้นว่า PPA ของ Doug ไม่สนับสนุนZesty (17.04) - ตั้งแต่ 08/19/2017 ในฐานะที่เป็น 17.10 จะออกมาในโซลูชั่นตุลาคม 16.04 จะล้าสมัยมากขึ้น โซลูชันที่เป็นไปได้สองประการสำหรับผู้ใช้ Zesty:

  1. เรียบง่าย: เพียงใช้บิลด์แบบคงที่https://www.johnvansickle.com/ffmpeg/
  2. ทำงานได้มากขึ้น: ติดตั้งvid.stabจาก github ( https://github.com/georgmartius/vid.stabอ่านคำแนะนำในการคอมไพล์ง่ายมาก) จากนั้นรวบรวมffmpeg https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

เนื่องจากฉันไม่มีเวลามากเกินไปฉันชอบวิธีแก้ปัญหาแรกจึงทำงานได้อย่างไร้ที่ติ

vidstab pass แรกใช้ได้กับ 1 คอร์เท่านั้น แต่เนื่องจาก GoPro footage ของฉันมีหลายชิ้นฉันจึงสามารถประมวลผลวิดีโอ 4 รายการพร้อมกันหากฉันต้องการโหลดระบบ 100% บัตรที่สองใช้ประโยชน์ได้ทั้ง 4 คอร์

แล็ปท็อปของฉัน i7-6820HK แต่ทั้งสองผ่านไปเพียงคืบหน้าด้วยความเร็วประมาณ 0.12x ดังนั้นมันค่อนข้างช้า แต่ฉันจะไม่สนว่าผลลัพธ์จะออกมาดีหรือไม่


อัปเดต: ภาพเมานท์หมวกของฉันดูเหมือนจะสั่นคลอนมากจนความสั่นคลอนที่ 10 ไม่เพียงพอ ฉันไม่รู้จะทำยังไงดีนั่นคือสูงสุด ...


1
ฉันลองdeshakeหมวกกันน็อคของ GoPro ที่ติดตั้งจักรยานของฉัน แต่มันดูเหมือนว่าจะไม่ทำอะไร Deshake เป็นส่วนหนึ่งของเวอร์ชันอูบุนตูอย่างเป็นทางการของffmpegบางทีอาจจะมีการรวมกันของพารามิเตอร์บางอย่างมันจะทำงานได้ดีขึ้น แต่การอ่านในเสียงสุทธิเหมือนvid.stabจะดีกว่า
Csaba จนถึง

ใช่ vidstab ดีกว่า แต่ซับซ้อนกว่า
llogan

1

ฉันเดาว่ามีหลายคน (รวมอยู่ด้วย) พบคำถามนี้พยายามใช้ ffmpeg กับตัวกรอง

คำตอบเหล่านั้นเกี่ยวกับการรวบรวมนั้นยอดเยี่ยม แต่ใช้เวลานานและบางคนอาจจะลำบาก

ทุกวันนี้มีตัวเลือกที่ง่ายในการใช้อิมเมจ Docker ที่สร้างขึ้นด้วยตัวกรองโคเดกและอีกมากมาย

โดยส่วนตัวแล้วฉันใช้ภาพนี้https://github.com/jrottenberg/ffmpeg

การใช้งานตัวอย่างง่ายมากสำหรับตัวกรอง deshake:

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.