ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4
เพื่อให้เข้าใจคำสั่งนี้คุณต้องรู้ว่าตัวระบุกระแสคืออะไรและการอ่านข้อมูลเบื้องต้นเกี่ยวกับการกรอง FFmpegจะช่วยได้ [0:v]
อ้างถึงสตรีมวิดีโอของอินพุตแรก ( video.mp4
) และ[1:v]
อ้างถึงสตรีมวิดีโอของอินพุตที่สอง ( logo.mp4
) นี่คือวิธีที่คุณสามารถบอกได้overlay
ว่าจะใช้อินพุตใด คุณสามารถละเว้น[0:v][1:v]
และoverlay
จะยังคงใช้งานได้ แต่ขอแนะนำให้ชัดเจนและไม่ต้องพึ่งพาค่าเริ่มต้นที่ไม่รู้จัก
โดยค่าเริ่มต้นโลโก้จะถูกวางไว้ที่ด้านซ้ายบน
การใช้-codec:a copy
จะเป็นการสตรีมคัดลอกเสียง สิ่งนี้เพียงแค่ทำการมิกซ์เสียงแทนการเข้ารหัสอีกครั้ง คิดว่ามันเป็น "คัดลอกและวาง" ของเสียง
ย้ายโลโก้
ตัวอย่างนี้จะย้ายโลโก้ 10 พิกเซลไปทางขวาและลดลง 10 พิกเซล:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4
ตัวอย่างนี้จะย้ายโลโก้ 10 พิกเซลจากด้านขวาและลง 10 พิกเซล:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4
main_w
หมายถึงความกว้างของอินพุต "หลัก" (พื้นหลังหรือ[0:v]
) และoverlay_w
หมายถึงความกว้างของอินพุต "โอเวอร์เลย์" (โลโก้หรือ[1:v]
) ดังนั้นในตัวอย่างนี้สามารถแปลหรือoverlay=320-90-10:10
overlay=220:10
กำหนดเวลาโอเวอร์เลย์
ตัวกรองบางตัวสามารถจัดการการแก้ไขเส้นเวลาซึ่งอนุญาตให้คุณใช้นิพจน์ทางคณิตศาสตร์เพื่อกำหนดว่าควรจะใช้ตัวกรองเมื่อใด อ้างถึงffmpeg -filters
เพื่อดูว่าตัวกรองใดรองรับการแก้ไขเส้นเวลา
ตัวอย่างนี้จะแสดงโลโก้จนถึง 30 วินาที:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4
หากคุณต้องการที่จะจางหายโลโก้อ้างถึงคำตอบของ mark4o