ตัดวิดีโอ FFmpeg ตามเฟรมไม่ใช่ไทม์โคด


0

ฉันต้องการตัดวิดีโอด้วย FFmpeg โดยใช้สิ่งที่คล้ายกับรหัสด้านล่าง:

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

อย่างไรก็ตามฉันต้องการที่จะระบุ-ssและ-tในเฟรมแทนในไม่กี่วินาที ตัวอย่างเช่นแทนที่จะเป็น 3 วินาทีฉันอยากบอกให้ ffmpeg เริ่มต้นการตัดที่ 90 เฟรม ฉันต้องการทำเช่นนี้เพราะฉันกำลังจะตัดวิดีโอโดยใช้สคริปต์และฉันไม่ต้องการที่จะซับซ้อนมากเกินไปโดยการแปลงหมายเลขเฟรมเป็นวินาทีก่อนที่จะส่งมันให้กับ FFmpeg

เพียงระบุจำนวนอย่างเช่น-ss 90เริ่มการตัดที่ 90 วินาทีไม่ใช่ 90 เฟรม

คำตอบ:


3

ฉันเชื่อว่าคุณควรจะสามารถทำได้โดยใช้selectตัวกรอง อย่างไรก็ตามเมื่อใช้ตัวกรองวิดีโอคุณจะไม่สามารถสตรีมการคัดลอกได้อีกต่อไป แต่คุณจะต้องแปลงรหัสไฟล์ด้วยการเลือกตัวแปลงสัญญาณที่มีc:vธง

ตัวอย่างเช่นหากต้องการสร้างการตัดเริ่มต้นที่เฟรมที่ 90 และสร้างเอาต์พุตที่มีความยาว 1,000 เฟรมและแปลงรหัสเอาต์พุตเป็นรูปแบบ H264 คุณสามารถลอง:

ffmpeg -i [INPUT] -vf select=gte(n\,90) -vframes 1000 -c:v libx264 -f mp4 [output.mp4]


0

ไม่มีวิธีที่จะทำสิ่งที่คุณขอ

คุณสามารถใช้-framesในการประมวลผลจำนวนเฟรมที่ต้องการ แต่ใช้หมายเลขเฟรมเนื่องจากตำแหน่งเริ่มต้นเป็นไปไม่ได้


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