แยกส่วนของวิดีโอด้วยคำสั่งหนึ่งบรรทัด


81

ถ้าฉันมีวิดีโอโดยปกติ avi แต่อาจเป็นได้และฉันต้องการที่จะสร้างอีกหนึ่งในรูปแบบเดียวกัน แต่เพียงส่วนหนึ่งตำแหน่งiวินาทีถึงfวินาทีในวิดีโอคำสั่งบรรทัดเดียวที่จะทำคืออะไร นี้?

คำตอบ:


114

ซึ่งสามารถทำได้โดยใช้และmencoderffmpeg

mencoder

สมมติว่าคุณต้องการตัดส่วนที่เริ่มต้นที่ 00:00:30 ลงในไฟล์ต้นฉบับที่มีความยาว 5 วินาทีและไม่ควรเข้ารหัสใหม่ (ถ้าคุณต้องการเข้ารหัสอีกครั้งคุณจะต้องแทนที่copyด้วยเสียง และตัวแปลงสัญญาณวิดีโอสำหรับรายการปัญหาตัวแปลงสัญญาณเสียงที่มีอยู่mencoder -oac helpสำหรับรายการปัญหาตัวแปลงสัญญาณวิดีโอที่มีอยู่mencoder -ovc help) จากนั้นคุณออก:

mencoder -ss 00:30:00 -endpos 00:00:05 -oac copy -ovc copy originalfile -o newfile

คุณจะต้องแทนที่orginalfileและnewfileด้วยชื่อไฟล์จริงในภายหลังคือชื่อของไฟล์ที่สร้างขึ้นเพื่อเก็บส่วนที่ถูกตัดออก

ffmpeg

สมมติว่าคุณต้องการตัดส่วนที่เริ่มต้นที่ 00:00:30 ลงในไฟล์ต้นฉบับที่มีความยาว 5 วินาทีและไม่ควรเข้ารหัสใหม่ (ถ้าคุณต้องการเข้ารหัสอีกครั้งคุณจะต้องแทนที่copyด้วยตัวแปลงสัญญาณเสียงและวิดีโอสำหรับรายการปัญหาตัวแปลงสัญญาณที่มีffmpeg -formats -E) จากนั้นคุณออก:

ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile

คุณจะต้องแทนที่orginalfileและnewfileด้วยชื่อไฟล์จริงในภายหลังคือชื่อของไฟล์ที่สร้างขึ้นเพื่อเก็บส่วนที่ถูกตัดออก


สำหรับการอ้างอิงดูhttp://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.htmlและ "7. คัดลอกเฉพาะส่วนของวิดีโอ" ในhttp: // segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/


ฉันลองแล้วล้มเหลว คุณสามารถแสดงให้ฉันเห็นว่าคำสั่งที่ใช้สำหรับตัวแปลงสัญญาณทั่วไปของคุณที่ใช้สำหรับ avi, flv และ mpg หรือไม่? ฉันแสดงตัวแปลงสัญญาณ แต่ไม่สามารถเข้าใจได้มากนัก
Strapakowsky

@strapakowsky มันขึ้นอยู่กับไฟล์อินพุตและตัวแปลงสัญญาณที่คุณติดตั้งไว้ บางทีคุณควรตั้งคำถามใหม่สำหรับสิ่งนั้นและเพิ่มข้อมูลเกี่ยวกับไฟล์ที่คุณมีและคำสั่งที่คุณลอง
NN

@ strakakky ฉันไม่สามารถทำงานกับ ffmpeg ได้เช่นกัน แต่คำแนะนำทั้งหมดในการตัดส่วนที่มี ffmpeg แนะนำว่ามันควรจะทำงานได้อย่างใดดังนั้นฉันจึงเก็บไว้ในคำตอบของฉัน อย่างไรก็ตามฉันยังเพิ่ม mencoder line ที่ฉันสามารถใช้งานได้
NN

เพิ่งใช้รุ่นนี้ มันไม่ทำงานสำหรับคุณเพราะ-ss ... -t ...ความต้องการที่จะเป็นก่อน-i infileตัวเลือก ดูคำตอบนี้สำหรับซับไลน์ตัวจริง คุณเกือบจะได้รับมันไม่ใช่คำสั่ง ...
Hendy

1
@Hendy แก้ไขแล้ว
NN

25

คุณต้องการตัดวิดีโอด้วยการเข้ารหัสซ้ำหรือไม่ใช้โหมดการเข้ารหัสซ้ำหรือไม่? คุณสามารถลองทำตามคำสั่งด้านล่าง

เรื่องย่อ: ffmpeg -i [input_file] -ss [start_seconds] -t [duration_seconds] [output_file]

ใช้ FFmpeg ตัดวิดีโอ mp4 โดยไม่ต้องเข้ารหัสใหม่

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

ใช้ FFmpeg ตัดวิดีโอ mp4 ด้วยการเข้ารหัสอีกครั้ง

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 cut_video.mp4

หากคุณต้องการตัดส่วนจากจุดเริ่มต้นเพียงวาง-t 00:00:10จากคำสั่ง


0

medipackเป็น app ffmpegบรรทัดคำสั่งที่ง่ายมากเป็นเสื้อคลุมมากกว่า

คุณสามารถตัดแต่งวิดีโอของคุณโดยใช้คำสั่งเหล่านี้:

medipack trim input.mp4 -s 01:04 -e 14:08 -o output.mp4
medipack trim input.mp4 -s 01:04 -t 13:04 -o output.mp4

คุณสามารถดูตัวเลือกของคำสั่งย่อย trim เป็น:

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

คุณยังสามารถสำรวจตัวเลือกอื่น ๆ โดยใช้ medipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Display version number

คุณสามารถเยี่ยมชมhttps://github.com/srbcheema1/medipackและตัวอย่างการชำระเงินใน README


-1

เพื่อให้แม่นยำยิ่งขึ้นคุณสามารถ: ด้วยตนเองเปิดไฟล์ในเครื่องเล่นสื่อที่จะทำการเฟรมตามเฟรมล่วงหน้า (potplayer ที่ฉันโปรดปราน แต่การทำงาน MPC-HC) และเล่นไฟล์ AVISynth ด้วยข้อมูลเช่น:

DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)

ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)

จากนั้นตัดด้วยรูปแบบเวลาที่แน่นอน:

ffmpeg -i "Path\do you want him.flv" -ss 00:00:05.240 -to 00:00:08.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him1.flv"

และ

ffmpeg -i "Path\do you want him.flv" -ss 00:00:10.240 -to 00:00:14.360 -vcodec libx264 -acodec libvo_aacenc "Path\Do you want him2.flv"

หากคุณต้องการเข้าร่วมให้สร้างไฟล์ txt พร้อมไฟล์วิดีโอที่มีเนื้อหาเช่น:

file 'C:\Downloads\Video\Do you want him1.flv'

file 'C:\Downloads\Video\Do you want him2.flv'

วิ่งffmpeg:

ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"

PROGRAMMATICALLY ฉันเขียนโปรแกรม แต่ไม่มีระดับ 10 ที่จะแสดงมันขอโทษ

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