วิธีเพิ่มโลโก้ png ให้กับวิดีโอ mp4 ด้วย ffmpeg ซึ่งสามารถปรับขนาดแบบไดนามิกและครอบคลุมวิดีโอทั้งหมด


0

ฉันต้องการที่จะแสดงวิดีโอ logoon เมื่อวิดีโอเริ่ม ฉันพบคำสั่งนี้แล้ว:

ffmpeg -i input.mp4 -framerate 30000/1001 \
-loop 1 -i test.png -filter_complex "[1:v] fade=out:st=30:d=1:alpha=1 [ov];\
 [0:v][ov] overlay=10:10 [v]" -map "[v]" -map 0:a -c:v libx264 \
-c:a copy -shortest Bigout.mp4

จาก วิธีเพิ่มโลโก้ของฉันใน 30 วินาทีแรกในวิดีโอด้วย ffmpeg

แต่ปัญหาคือความกว้าง / ความสูงของวิดีโอของฉันแตกต่างกันและทุกครั้งที่ฉันเพิ่มโลโก้มันไม่ครอบคลุมวิดีโอทั้งหมด ฉันควรทำอย่างไรหากฉันต้องการตั้งค่าความกว้าง / ความสูงโลโก้เป็นความกว้าง / ความสูงของวิดีโอ

อัปเดต หลังจาก @Behroozfar คำตอบฉันพยายามใช้ scale2ref โดยใช้คำสั่งด้านล่าง:

ffmpeg -i input.mp4 -framerate 30000/1001 -loop 1 -i biglogo.png -filter_complex "[1: v] [0: v] scale2ref = iw / 1: -1 [ovrl] [0v]; [ovrl] โอเวอร์เลย์ = 0: 0 [v] "-map" [v]; [1: v] จาง = out: st = 2: d = 1: alpha = 1 [ov] "-map 0: a -c : v libx264 -c: สำเนา -shortest Bigout.mp4

แต่คำถามคือฉันไม่สามารถแสดงโลโก้เพียงหนึ่งวินาที มีอยู่ระหว่างการเล่นวิดีโอทั้งหมด

คำตอบ:


2

ใช้scale2refตัวกรอง

ffmpeg -i input.mp4 -framerate 30000/1001 \ -loop 1 -i test.png -filter_complex "[1:v]fade=out:st=30:d=1:alpha=1[ov]; \ [ov][0:v]scale2ref[logo][video]; \ [video][logo]overlay=10:10[v]" -map "[v]" -map 0:a -c:v libx264 \ -c:a copy -shortest Bigout.mp4


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

@Mulvya ที่จริงฉันต้องการแสดงโลโก้ในวินาทีแรกของวิดีโอที่ครอบคลุมเฟรมวิดีโอทั้งหมดแล้วมีโลโก้ขนาดเล็กเช่นที่มุมซ้าย ฉันเดาว่าฉันควรใช้คำสั่ง ffmepeg สองคำสำหรับสิ่งนี้ หนึ่งสำหรับการเพิ่มโลโก้แนะนำแล้วเพิ่มโลโก้ขนาดเล็กลงในวิดีโอที่ทำมาก่อน
MHPalang

0

หากต้องการแสดงโลโก้ขนาดเต็มเป็นเวลาหนึ่งวินาทีจากนั้นจึงใช้โลโก้ขนาดเล็กในภายหลัง

ffmpeg -i input.mp4 -framerate 30000/1001 -loop 1 -i test.png
       -filter_complex
         "[1]fade=out:st=1:d=0.9:alpha=1,trim=0:2[f]; \
          [1]fade=st=2:d=0.5:alpha=1,trim=0:3[s]; \
          [f][0]scale2ref[fs][video];[s][fs]scale2ref=iw/8:-1[ss][fo];
          [video][fo]overlay=eof_action=pass[v0]; \
          [v0][ss]overlay=W-w-5:H-h-5[v]" \
       -map "[v]" -map 0:a -c:v libx264 -c:a copy Bigout.mp4

ขอบคุณผู้ชาย ฉันรันคำสั่งแล้วก็บอกว่าไม่มี f! ดูเหมือนว่า [จาก] ในคำสั่งของคุณควรเป็น [f] เรียกใช้อีกครั้งและฉันไม่เห็นโลโก้ใด ๆ ในวิดีโอของฉัน ดูเหมือนว่าจะไม่มีอะไรเกิดขึ้นกับวิดีโอ
MHPalang

ขออภัย [สำหรับ] ในคำสั่งของคุณควรเป็น [f]
MHPalang

ทำการแก้ไข
Gyan

ขอขอบคุณ. มันใช้งานได้ดีสำหรับส่วนแรก แต่ไม่มีโลโก้ขนาดเล็กสำหรับส่วนที่สอง
MHPalang

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