ฉันใหม่กับ ffmpeg และฉันเคยได้ยินว่ามันมีตัวกรองสำหรับสีดำ ฉันต้องการลบแถบสีดำที่ด้านบนและด้านล่างของวิดีโอดังนั้นวิดีโอจะถูกตัดไปยังวิดีโอที่เหลือโดยไม่มีแถบสีดำ ขอบคุณ :)
ฉันใหม่กับ ffmpeg และฉันเคยได้ยินว่ามันมีตัวกรองสำหรับสีดำ ฉันต้องการลบแถบสีดำที่ด้านบนและด้านล่างของวิดีโอดังนั้นวิดีโอจะถูกตัดไปยังวิดีโอที่เหลือโดยไม่มีแถบสีดำ ขอบคุณ :)
คำตอบ:
cropdetectสามารถใช้เพื่อจัดเตรียมพารามิเตอร์สำหรับตัวกรองการครอบตัด ในตัวอย่างนี้ 90 วินาทีแรกถูกข้ามและประมวลผล 10 เฟรม:
$ ffmpeg -ss 90 -i input.mp4 -vframes 10 -vf cropdetect -f null -
...
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:215 t:0.215000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:257 t:0.257000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:299 t:0.299000 crop=1280:720:0:0
ดังนั้นตามการตรวจจับพืชที่เราสามารถcrop=1280:720:0:0
ใช้ได้
ffplay
$ ffplay -vf crop=1280:720:0:0 input.mp4
$ ffmpeg -i input.mp4 -vf crop=1280:720:0:0 -c:a copy output.mp4
ในตัวอย่างนี้เสียงเป็นเพียงการคัดลอกสตรีม (muxed อีกครั้ง) เนื่องจากคุณอาจไม่จำเป็นต้องเข้ารหัสอีกครั้ง
ดังที่คุณเห็นด้านบนพร้อมffplay
ตัวอย่างผู้เล่นบางคนอนุญาตให้คุณครอบตัดเมื่อเล่น นี่คือข้อดีของ:
@LordNeckbeard คำตอบของดีมาก ฉันจะแนะนำในกรณีส่วนใหญ่
ffplay ใช้งานได้ดีและดูตัวอย่างได้ดี แต่เวอร์ชั่นของ ffmpeg ที่ฉันใช้กำลังดิ้นรนกับเสียงจากวิดีโอที่ฉันใช้อยู่
st:1 error, non monotone timestamps
ฉันสิ้นสุดมีปัญหากับคำตอบที่เสนอทั้งที่-c:a
ไม่ได้รับการสนับสนุนกับเวอร์ชันที่ฉันใช้และมีปัญหากับการแปลงบิตเรตกับวิดีโอที่ฉันใช้
หมายเหตุ: -c:a
สามารถแทนที่ด้วย:-acodec
โซลูชันฟรีทางเลือกที่ง่ายที่สุดที่ฉันพบคือใช้เบรกมือ
มันเป็น autocrop ลบแถบสีดำโดยไม่มีปัญหามาก
หวังว่าจะช่วย