ปรับขนาดวิดีโอที่มีความกว้างแตกต่างกันเป็นอัตราส่วนความสูงคงที่ด้วย ffmpeg


17

ฉันต้องการแปลงไฟล์วิดีโอจำนวนมากเป็นแฟลชวิดีโอสำหรับเว็บไซต์ของ บริษัท ของเรา ฉันมีข้อกำหนดว่าวิดีโอทั้งหมดจะต้องอยู่ในรูปแบบ 360p ดังนั้นขนาดของพวกเขาจะเป็น Nx360

FFMpeg ใช้-sโต้แย้งเพื่อระบุความละเอียดเป้าหมายเป็นW x H ฉันไม่รู้จักW idth เพราะขึ้นอยู่กับอัตราส่วนของไฟล์ต้นฉบับ หากแหล่งที่มาคือ 640x480 เป้าหมายจะเป็น 480x360 หากแหล่งที่มาคือ 848x480 เป้าหมายจะเป็น 636x360

มีวิธีที่จะทำกับสวิตช์ ffmpeg บ้างไหม? มันจะรักษาอัตราส่วนกว้างยาวและฉันจะระบุความสูงของวิดีโอเป้าหมายเท่านั้น

ฉันสามารถแก้ไขได้อย่างง่ายดายโดยการสร้างโปรแกรมที่จะเปิดตัว ffprobe เพื่อรับขนาดวิดีโอต้นฉบับคำนวณอัตราส่วนภาพจากนั้นคำนวณความกว้างใหม่

คำตอบ:


15

คุณสามารถลองเพิ่มตัวกรองวิดีโอนี้:

-vf "scale=-1:360" 

-1 ในกรณีนี้หมายถึงตัวแปร / ไม่ทราบดังนั้นตัวกรองนี้ปรับขนาดวิดีโอเพื่อรักษาอัตราส่วนภาพของอินพุตให้ 360 เป็นความสูง

สำหรับฉันสิ่งนี้บรรลุผลเช่นเดียวกับที่คุณกำลังมองหา



6

ยังไม่มีคะแนนเพียงพอที่จะแสดงความคิดเห็นในคำตอบที่มีอยู่ แต่นี่เป็นคำตอบของผู้ใช้ 65600 และดำเนินการต่อไปเมื่อตัวแปลงสัญญาณเฉพาะต้องการความกว้าง / ความสูงที่หารด้วย 2 (เช่น libx264)

เมื่อคุณใช้ -1 (ตัวแปร / ไม่ทราบ) มันสามารถส่งกลับ # คี่ ในการรับประกัน # คู่คุณต้องใช้บางสิ่งบางอย่างเช่นtrunc(ow/a/2)*2ซึ่งจะคำนวณเลขคู่ที่ใกล้เคียงที่สุดโดยอัตโนมัติในขณะที่รักษาอัตราส่วนภาพไว้

-vf "scale=trunc(ow/a/2)*2:360"

ที่มา: https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" ไม่ทำงานเนื่องจากข้อผิดพลาด "การอ้างอิงตนเอง"

การทำงานต่อไปนี้แทน:

-vf "scale = -1: 360, scale = trunc (iw / 2) * 2: 360"

การอ้างอิงตนเองนั้นสามารถหลีกเลี่ยงได้โดยการปรับสองครั้งติดต่อกันและการปัดเศษจะทำในขั้นตอนที่สอง น่ารักใช่มั้ย :)


ตัวกรองแบบง่าย 'scale = -1: 480; สเกล = trunc (iw / 2) * 2: 480 'ไม่มีอินพุตและเอาต์พุตหนึ่งตัว เกิดข้อผิดพลาดในการเปิดตัวกรอง!
digitalPBK
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.