คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:
- ใช้ ffmpeg เพื่อตัดวิดีโอ 7 คำตอบ
ฉันมีไฟล์วิดีโอ 30 นาที แต่ฉันต้องการแยกวิดีโอจาก 00:09:23 ถึง 00:25:33
ฉันสามารถกำหนดจุดเริ่มต้นด้วย-ss
แต่ไม่สามารถหาตำแหน่งสุดท้ายได้ ความช่วยเหลือใด ๆ โปรด?
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:
ฉันมีไฟล์วิดีโอ 30 นาที แต่ฉันต้องการแยกวิดีโอจาก 00:09:23 ถึง 00:25:33
ฉันสามารถกำหนดจุดเริ่มต้นด้วย-ss
แต่ไม่สามารถหาตำแหน่งสุดท้ายได้ ความช่วยเหลือใด ๆ โปรด?
คำตอบ:
ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดเวอร์ชันล่าสุดffmpeg
และอย่าใช้เวอร์ชันที่มาพร้อมกับการแจกจ่ายของคุณ (เช่น Ubuntu) เวอร์ชันที่ทำแพคเกจจากการแจกแจงต่าง ๆ มักจะล้าสมัยและไม่ทำงานตามที่คาดไว้
ใช้สิ่งนี้เพื่อตัดวิดีโอจาก[start]
สำหรับ[duration]
:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
ที่นี่ตัวเลือกหมายถึงสิ่งต่อไปนี้:
-ss
ระบุเวลาเริ่มต้นเช่น00:01:23.000
หรือ83
(เป็นวินาที)-t
ระบุระยะเวลาของคลิป (รูปแบบเดียวกัน) ffmpeg
-to
-c copy
คัดลอกบิตแรกของวิดีโอเสียงและคำบรรยายจากอินพุตไปยังไฟล์ที่ส่งออกโดยไม่ต้องเข้ารหัสพวกเขาอีกครั้ง สิ่งนี้จะไม่เป็นอันตรายต่อคุณภาพและทำให้คำสั่งทำงานภายในไม่กี่วินาทีหากคุณไม่ใช้-c copy
ตัวเลือกนี้ffmpeg
จะเข้ารหัสวิดีโอและเสียงออกตามรูปแบบที่คุณเลือกโดยอัตโนมัติ สำหรับวิดีโอและเสียงคุณภาพสูงให้อ่านคู่มือการเข้ารหัส x264และคู่มือการเข้ารหัส AACตามลำดับ
ตัวอย่างเช่น:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
ฉันคิดว่าคุณสามารถใช้คำสั่งต่อไปนี้ตอนนี้
ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile
มีรูปลักษณ์ที่ยังDoc ffmpegหรือหน้าวิกินี้
ffmpeg -i inputFile -c copy -ss 00:09:23 -to 00:25:33 outputFile
เวอร์ชั่นที่เรียบง่าย
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
เวอร์ชัน (กับ-copyts
) มิฉะนั้นมันจะตัดอย่างไม่ถูกต้อง (มีหน้าจอสีดำในตอนแรก) ขอบคุณสำหรับลิงค์ที่ 2
นี่คือแปลกที่ไม่มีใครแนะนำตัวกรองtrim
ปล่อยทุกอย่างยกเว้นนาทีที่สองของอินพุต:
ffmpeg -i INPUT -vf trim=60:120
เก็บเฉพาะวินาทีแรก:
ffmpeg -i INPUT -vf trim=duration=1
ปล่อยทุกอย่างยกเว้นจากวินาทีที่ 13 ถึงวินาทีที่ 58:
ffmpeg -i INPUT -vf trim=13:58 OUTPUT
trim
atrim
ฉันมักจะใช้สิ่งเหล่านี้เมื่อทำการกรอง แต่ผู้ใช้ควรทราบว่าการกรองนั้นจำเป็นต้องเข้ารหัสใหม่
คุณสามารถใช้สองวิธีนี้สำหรับ Windows และ Linux
มีสองวิธีในการแบ่งไฟล์วิดีโอโดย ffmpeg คนแรกดีในตัวเองมากกว่านั้น - มันเร็วกว่า แต่บางครั้งก็สร้างไฟล์เอาต์พุตด้วยข้อบกพร่องบางอย่าง ดังนั้นในกรณีดังกล่าวมีวิธีที่สองในการแยกไฟล์วิดีโอ: มันช้ากว่ามาก, ไฟล์เอาต์พุตนั้นใหญ่กว่า, แต่ดูเหมือนว่าพวกมันจะมีคุณภาพระดับเดียวกับไฟล์อินพุตที่ใช้เสมอ
วิธีที่ 1:
ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi
วิธีที่ 2:
ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
<start>
- จุดเริ่มต้นของส่วนของวิดีโอ ffmpeg คือการตัดออก รูปแบบ:00:00:00.0000
, หมายถึงชั่วโมง: นาที: วินาที: มิลลิวินาที
<duration>
- ระยะเวลาของส่วนของวิดีโอ ffmpeg คือการตัดออก รูปแบบเดียวกับด้านบนตัวอย่าง:
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi
ffmpeg ตัดส่วนของไฟล์วิดีโอออกจาก 1 ชั่วโมง 19 นาที 0 วินาที ระยะเวลาของลำดับวิดีโอตัดออกเป็น 5 นาที 0 วินาที
-sameq
ไม่ได้หมายความว่า "คุณภาพเดียวกัน"และถูกลบออกจาก ffmpeg ใช้-codec copy
แทน นอกจากนี้อย่าลืมตัว-to
เลือก
คุณสามารถใช้สิ่งนี้
ffmpeg -sameq -ss clip_start -t duration -i original.ogg clip.ogg
ที่นี่คุณจะต้องให้ระยะเวลาของวิดีโอ กล่าวคือ 00: 25: 33-00: 09: 23
ฉันใช้ไวยากรณ์ต่อไปนี้เพื่อตัดวิดีโอด้วย ffmpef:
ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]
-t ใช้เพื่อตั้งค่าระยะเวลาเป็นวินาที - คุณไม่สามารถระบุเวลาสิ้นสุดได้ แต่สิ่งนี้น่าจะเหมาะกับคุณ
-sameq
ว่าไม่ได้หมายถึง "คุณภาพเดียวกัน" เลย