เป็นไปได้ใน FFMPEG ที่จะเปลี่ยนขนาดเมื่อเวลาผ่านไป?


11

ตกลงดังนั้นเมื่อใช้ตัวกรองซ้อนทับเราสามารถเปลี่ยนตำแหน่ง x / y ของวิดีโอเมื่อเวลาผ่านไปโดยใช้ตัวแปร "t" ตัวอย่างเช่นoverlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0สามารถใช้เพื่อเริ่มเลื่อนองค์ประกอบที่ซ้อนทับจากด้านบนซ้ายไปขวาบนหลังจากผ่านไป 2 วินาที

สิ่งที่ฉันต้องการจะทำคือการใช้หลักการที่คล้ายกันสำหรับองค์ประกอบการปรับขนาด ฉันต้องการที่จะเปลี่ยนขนาดของวิดีโอเมื่อเวลาผ่านไปโดยใช้การแสดงออก (เช่นscale=w=iw*t, หรือบางสิ่งบางอย่างในบรรทัดนั้น)

เป็นไปได้ไหม

เมื่อฉันเรียกใช้นิพจน์นั้นผ่าน -filter_complex ฉันจะได้รับ

ข้อผิดพลาดเมื่อประเมินนิพจน์ 'iw * t'

บางทีการแสดงออกสำหรับ out_w: 'iw * t' หรือสำหรับ out_h: '- 1' เป็นการอ้างอิงตนเอง

ฉันรู้สึกว่ามีโอกาสที่เป็นธรรมฉันจะต้องแก้ไข FFMpeg หากฉันต้องการใช้ฟังก์ชันนี้ แต่ฉันคิดว่าฉันจะถามก่อนเพื่อดูว่าใครจะรู้เกี่ยวกับสิ่งนี้หรือไม่!

ไม่มีใครรู้ว่างานดังกล่าวจะสำเร็จได้อย่างไร

ขอบคุณสำหรับความช่วยเหลือ!


ฟังดูเหมือนข้อผิดพลาดทางไวยากรณ์ตอนนี้ แต่ฉันไม่ได้ใช้คุณสมบัตินั้นมาก่อนโชคไม่ดีเลยฉันไม่สามารถช่วยได้ที่นี่
PTS

1
t ไม่ใช่สิ่งที่กำหนดเมื่อมาถึงตัวกรองแบบซ้อนทับ
v010dya

1
คุณสามารถเพียงแค่เขียนตัวกรอง wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello

1
@alexspeller ตัวกรองสเกลไม่รองรับการแก้ไขไทม์ไลน์ดังนั้นจึงไม่สามารถทำได้โดยตรง ฉันจะตรวจสอบว่ามีวิธีแก้ปัญหาหรือไม่
Gyan

1
เป็นไปได้ทางเทคนิคกับเอาต์พุต H.264 / 5 ไม่ทราบว่าผู้เล่น / บรรณาธิการจะจัดการกับมันอย่างไร
Gyan

คำตอบ:


2

จากสิ่งที่ฉันเข้าใจ 't' จะถูกประเมินหนึ่งครั้ง คุณได้อ่านสิ่งนี้แล้ว: https://ffmpeg.org/ffmpeg-filters.html#zoompanหรือไม่

เอกสาร Ffmpeg:

ตัวอย่าง 9.170.1

  • ซูมเข้าสูงสุด 1.5 และเลื่อนไปยังจุดที่ใกล้กึ่งกลางภาพ:

zoompan = Z = 'นาที (ซูม + 0.0015,1.5): d = 700: x =' ถ้า (GTE (ซูม 1.5), X, x + 1 / ก): Y = 'ถ้า (GTE (ซูม 1.5), y, y + 1) ': s = 640x360

  • ซูมเข้าสูงสุด 1.5 และแพนที่กึ่งกลางภาพเสมอ:

zoompan = Z = 'นาที (ซูม + 0.0015,1.5): d = 700: x =' IW / 2- (IW / ซูม / 2): การ y = 'IH / 2- (IH / ซูม / 2)'

  • เหมือนข้างต้น แต่ไม่มีการหยุดชั่วคราว:

zoompan = Z = 'นาที (max (ซูม pzoom) +0.0015,1.5): d = 1: x =' IW / 2- (IW / ซูม / 2): การ y = 'IH / 2- (IH / ซูม / 2)'

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