เครื่องมือที่รวดเร็วในการสร้างแกลเลอรี่ภาพขนาดย่อสำหรับบรรทัดคำสั่ง


15

ฉันใช้gframecatcherเพื่อสร้างแกลเลอรี่ภาพขนาดย่อเช่นบางสิ่งเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างไรก็ตามนี่คือเครื่องมือ GUI และฉันต้องการสร้างแกลเลอรีแบบเรียกซ้ำสำหรับวิดีโอทุกรายการในโครงสร้างไดเรกทอรีดังนั้นฉันจึงกำลังมองหาเครื่องมือบรรทัดคำสั่งที่รวดเร็วในการทำเช่นนี้

คำตอบ:


28

ดึงภาพที่จับออกมา (สูง 100 พิกเซลและรักษาอัตราส่วนภาพ) อัตรา ( -r) ต่อวินาที (ซึ่งให้ผลหนึ่งเฟรมทุก ๆ เฟรม ~ 5 นาที) เพิ่มการประทับเวลาให้กับภาพออก

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

จากนั้นใช้ImageMagickเพื่อสร้างภาพแกลเลอรี่ของคุณ:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png

7
คุณสามารถใช้เศษส่วนสำหรับอัตรา ( -r) ทำให้ง่ายและแม่นยำยิ่งขึ้นในการระบุเวลา 5 นาที = 300 ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.pngวินาที
DutGRIFF

avconvทำงานในลักษณะเดียวกันในกรณีที่คุณไม่มีffmpeg(Ubuntu บางรุ่น)
Ken Sharp

2
ใช้งานได้ แต่ต้องมีการประปาผ่านไฟล์วิดีโอทั้งหมด superuser.com/questions/538112/…มีตัวอย่างที่พยายามค้นหารูปขนาดย่อที่มีความหมายรวมทั้งหลีกเลี่ยงการนั่งและประมวลผลวิดีโอทั้งหมดเพื่อให้ได้ภาพไม่กี่เฟรม
Skrylar

นี่ไม่ได้เพิ่มการประทับเวลาลงในภาพ
felwithe

คุณจะทำสิ่งนี้ในแบตช์ของวิดีโอในไดเรกทอรีได้อย่างไร?
Paul Jones

13

ฉันชอบใช้สคริปต์ทุบตีบรรทัดคำสั่ง unix ที่ใช้งานง่ายที่เรียกว่า VCS - แผ่นติดต่อวิดีโอ หน้าอย่างเป็นทางการของพวกเขา: http://p.outlyer.net/vcs/

มันใช้งานง่ายกว่า GUI มาก

'' มันเป็นสคริปต์ทุบตีที่หมายถึงการสร้างแผ่นติดต่อวิดีโอ (ตัวอย่าง) aka รูปขนาดย่อหรือตัวอย่างของวิดีโอ วิดีโอนี้สนับสนุนโดย mplayer และ ffmpeg สามารถใช้งานได้โดยสคริปต์นี้ '' คุณจะต้องติดตั้งffmpegหรือmplayerติดตั้งบนระบบของคุณ

การใช้งาน:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

วิธีการใช้งานคำสั่ง

แก้ไขอินพุตชื่อไฟล์เป็นชื่อไฟล์วิดีโอของคุณ!

  • -U0(ไม่มีชื่อในส่วนท้าย - มิฉะนั้นจะแสดงชื่อโฮสต์ - โปรดทราบว่านี่ไม่ใช่ตัวอักษรO)

  • -i 1m(ตั้งค่าช่วงเวลาการจับภาพเป็นนาที - ในกรณีนี้คือทุกนาที - คุณสามารถใช้-nแทนซึ่งกำหนดจำนวนการจับภาพตัวอย่างเช่น-n 21จะสร้าง 21 ภาพ แต่ไม่ใช้ทั้งคู่)

  • -c กำหนดจำนวนคอลัมน์ (นี่คือ 3 คอลัมน์)

  • -H 200 -a 300/200 (ตั้งค่าขนาดและมุมมองดังนั้นไฟล์ไม่ใหญ่เกินไป - ดูเหมือนว่าคุณต้องทำทั้งสองอย่าง)

  • -o filename.jpg(ใช้.jpgเป็นค่าเริ่มต้นที่.pngใหญ่เกินไป - และเปลี่ยนชื่อไฟล์เป็นหนึ่งในตัวเลือกของคุณ!)


7

อันนี้ดูเหมือนจะพอดีกับใบเสร็จมันฟรีและโอเพ่นซอร์สและยังใช้ได้กับ Windows :)

มันยังมีสิ่งที่ทันสมัยเช่นแทนที่จะเลือกเฟรมใด ๆ ในช่วงเวลาใด ๆ โดยเฉพาะสามารถเลือกเฟรมที่อยู่ใกล้พอ แต่ดูไม่เบลอดังนั้นแทนที่จะทำสิ่งนี้:

ภาพหน้าจอ

คุณสามารถส่งผ่านพารามิเตอร์ ( -D6) เพื่อทำสิ่งนี้:

ภาพหน้าจอที่ดีกว่า

นอกจากนี้ฉันไม่ชอบเส้นขอบเพื่อให้ภาพมีขนาดใหญ่ขึ้นเล็กน้อย


7

มีวิธีแก้ไขจากฟอรัม ffmpeg

ในการสร้างภาพหน้าจอหลายภาพและวางลงในไฟล์ภาพเดียว (การสร้างไทล์) คุณสามารถใช้ตัวกรองวิดีโอไทล์ของ FFmpeg เช่นนี้:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

ที่จะค้นหา 10 วินาทีลงในภาพยนตร์เลือกทุก ๆ เฟรมที่ 1000 ขยายเป็น 320x240 พิกเซลและสร้าง 2x3 ไทล์ในเอาท์พุทภาพ out.png

โพสต์ต้นฉบับที่นี่ - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597


นอกจากนี้ ffmpeg ดูเหมือนว่าจะสนับสนุน "ครอบตัด" ด้วยไวยากรณ์เดียวกัน
แนวคิดบางข้อ

4

นี่คือวิธีที่ฉันดำเนินการแผ่นข้อมูลติดต่ออย่างง่ายโดยใช้ AWS EC2 จาก mac ของฉัน

ขั้นตอน # 1: สร้างอินสแตนซ์ EC2 ที่ Amazon Web Services

ฉันใช้:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

ขั้นตอนที่ # 2: กำหนดค่าอินสแตนซ์

ทั้งหมดนี้เรียกใช้จาก mac ของฉันเพื่อความสะดวก แต่คุณสามารถเรียกใช้คำสั่ง "sudu su ... " จากบรรทัดคำสั่ง EC2

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

แทนที่ 11.22.33.44 ด้วย EC2 IP ของคุณ

ขั้นตอนที่ # 3: ประมวลผลวิดีโอ

ส่งวิดีโอ:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov ec2-user@11.22.33.44:/home/ec2-user/

ประมวลผลลงในแผ่นงานติดต่อ:

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

เปลี่ยน / Users / mdouma เป็นรูทภายในของคุณ เปลี่ยน ", 1" เป็นเบอร์อื่นเช่น ", 7" หากคุณต้องการทุกเฟรมที่ 7 เปลี่ยน 111 เป็นขนาดใดก็ได้ที่คุณต้องการ

คัดลอกกลับไปที่ mac ของฉัน:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  ec2-user@11.22.33.44:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png

นี่เป็นเคล็ดลับที่ยอดเยี่ยม โปรดทราบว่านั่นsudo suไม่มีจุดหมาย
Ken Sharp

2
ทำไมคุณส่งสิ่งนี้ไปที่ ec2 ทำไมไม่ลองใช้มันในเครื่อง mac ของคุณเองล่ะ? ไฟล์วิดีโอที่อาจจะ GBs ขนาดใหญ่ ...
haventchecked

4

เครื่องมือนี้ช่วยฉัน (2019-02) - และมันก็ยังคงอยู่ ตัวเลือกมากมาย - ตารางคุณภาพแบบอักษรสีเส้นขอบช่วงเวลา ...

https://github.com/amietn/vcsi

สร้างแผ่นติดต่อวิดีโอ แผ่นติดต่อวิดีโอเป็นภาพที่ประกอบด้วยภาพขนาดย่อของการจับภาพวิดีโอที่จัดในตาราง

คุณต้องการเพียง ffmpeg และ python


นี่เป็นสิ่งที่ดีมาก - ขอบคุณ!
แอชลีย์

1

แพ็คเกจ 'imagemagick' มีระบบสาธารณูปโภคสำหรับสิ่งนี้

http://www.imagemagick.org/Usage/thumbnails/

มีห้องสมุด API ที่ใช้สำหรับ imagemajick มีพวงของภาษาเกินไป


สิ่งที่จะเป็นคำสั่งที่สอดคล้องกัน?
นักเรียน

convertน่าจะเป็นคนทั่วไปมากที่สุด ดูหัวข้อการสร้างรูปขนาดย่อทั่วไปในหน้าแรกที่ฉันเชื่อมโยง
goldilocks

1

Totem - เครื่องเล่นวิดีโอเริ่มต้นสำหรับ 14.04 และ Ubuntu รุ่นก่อนหน้าบางรุ่น - มีตัวเลือกเมนูพร้อมตัวเลือกง่าย ๆ (ใต้เมนูแก้ไข "สร้างแกลเลอรีภาพหน้าจอ ... ") นอกจากนี้ยังมีบรรทัดคำสั่งเทียบเท่า (ish) ที่เรียกว่า "totem-video-thumbnailer" ซึ่งมี man page ที่บอกวิธีใช้ ฉันเขียนสคริปต์ทุบตีง่าย ๆ ที่ใช้เอาต์พุตจากคำสั่ง find (ระวังที่จะไม่แยกไฟล์ที่มีช่องว่างในชื่อ) เพื่อสร้างแกลเลอรี่ภาพหน้าจอขนาดย่อโดยอัตโนมัติ (หรือแผ่นงานติดต่อตามที่อ้างถึงข้างต้น) สำหรับไฟล์ใด ๆ ขนาดในไดเรกทอรีที่ไม่มีอยู่แล้ว

ฉันสามารถอัปโหลดไปยัง GitHub ของฉันภายใต้ ~ jgbreezer หากใครก็ตามที่ชื่นชอบการหามัน แม้ว่าโซลูชันที่ใช้ ffmpeg และสิ่งอื่น ๆ อาจมีความยืดหยุ่นและน่าเชื่อถือ ฉันดูเหมือนจะได้รับข้อผิดพลาดจากคำสั่ง totem เกี่ยวกับการไม่หาเฟรมบางตัว แต่ดูเหมือนว่าจะใช้งานได้ตลอดเวลา


0

ฉันต้องการสิ่งเดียวกันและ googling ลงเอยด้วย ffmpeg และ imagemagick ไม่ 'เร็ว' IMHO จากนั้นพบสคริปต์ทุบตีชื่อSlickSlice (ปรับปรุงล่าสุดปี 2008 แต่ทำงานได้อย่างสมบูรณ์เหมือนเมื่อวาน) ติดตั้งและปรับแต่งตามความชอบของฉันโดยใช้ไฟล์กำหนดค่าและสคริปต์เอง สคริปต์นี้ใช้ ImageMagick และ MPlayer

ฉันทำรายละเอียดวิธีการและการปรับแต่งหลังจากที่ฉันใช้งานได้สำเร็จ เมื่อติดตั้งเรียบร้อยแล้วคุณสามารถสร้างภาพขนาดย่อไทม์ไลน์ของวิดีโอได้ง่าย ๆ โดยใช้คำสั่ง:
slickslice -x "InputFile.mp4"(ค่าเริ่มต้น 4 คอลัมน์ x 15 แถว) หรือ
slickslice -x "InputFile.mp4" -S 6x10(สำหรับ 6 คอลัมน์ x 10 แถว)

มันส่งออกเป็นSLICKSLICED_InputFile.mp4.jpegและฉันปรับแต่งให้ผลิตInputFile.mp4-screen.jpegโดยการแก้ไขสคริปต์ทุบตีตัวเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.