FFMPEG - แปลงวิดีโอเป็นช่วงเวลา


15

ฉันใช้ ffmpeg ในเครื่องมือสร้างแฟลช (สคริปต์การกระทำ 3) เพื่อแปลงวิดีโอให้เป็นเวลาที่ผ่านไปของวิดีโอ ฉันได้ทำวิธีใช้ setpts ในการทำสิ่งนี้ แต่ไฟล์ผลลัพธ์ที่ได้นั้นมีความยาวเท่ากับอินพุต (โดยมีเพียงเฟรมสุดท้ายที่แสดงหลังจากพ้นช่วงเวลา) ฉันต้องการเปลี่ยนระยะเวลาตามการตั้งค่าที่ส่งผ่าน เพื่อ ffmpeg

ฉันลองด้านล่างผ่านบรรทัดคำสั่งก่อน:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

คำตอบ:


21

แก้ไขปัญหา. ฉันไม่ได้ลบเสียงดังนั้นจึงน่าจะเป็นการเล่นไฟล์เสียงที่อยู่ใกล้กับที่ว่างเปล่าเป็นเวลาเต็มของวิดีโอ

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-an ลบเสียงออกจากวิดีโอ


2

รายละเอียดเพิ่มเติมบางอย่างที่นี่เกี่ยวกับการเร่งความเร็วเสียง คุณสามารถทำได้มากถึง 2x แต่คุณสามารถหลอกลวงเพื่อเพิ่มความเร็วได้มากขึ้น (ที่มา ):

เร่งความเร็ว / ลดเสียง

คุณสามารถเร่งความเร็วหรือลดความเร็วเสียงด้วยตัวกรองเสียง atempo วิธีเพิ่มความเร็วเสียงเป็นสองเท่า:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

ตัวกรอง atempo จำกัด เฉพาะการใช้ค่าระหว่าง 0.5 ถึง 2.0 (ดังนั้นจึงสามารถลดความเร็วลงได้ไม่น้อยกว่าครึ่งหนึ่งของความเร็วดั้งเดิมและเพิ่มความเร็วได้ไม่เกินสองเท่าของอินพุต) หากคุณต้องการคุณสามารถหลีกเลี่ยงข้อ จำกัด นี้ได้โดยการรวมตัวกรอง atempo หลายตัวเข้าด้วยกัน ต่อไปนี้พร้อมกับเพิ่มความเร็วเสียงเป็นสี่เท่า:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

ด้วยการใช้ filtergraph ที่ซับซ้อนคุณสามารถเพิ่มความเร็วของวิดีโอและเสียงในเวลาเดียวกัน:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

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