Trích xuất một phần của video bằng lệnh một dòng


81

Nếu tôi có một video, thường là avi, nhưng có thể là bất kỳ và tôi muốn tạo một video khác có cùng định dạng nhưng chỉ là một phần, vị trí i giây để f giây vào video, lệnh một dòng sẽ làm gì điều này?

Câu trả lời:


114

Điều này có thể được thực hiện bằng cách sử dụng mencoderffmpeg.

bộ mã hóa

Giả sử bạn muốn cắt một phần bắt đầu từ 00:00:30 vào tệp gốc với thời lượng 5 giây và nó không nên được mã hóa lại (nếu bạn muốn mã hóa lại, bạn sẽ phải thay thế copybằng âm thanh và codec video, đối với danh sách các vấn đề về codec âm thanh có sẵn mencoder -oac help, đối với danh sách các vấn đề về codec video có sẵn mencoder -ovc help), thì bạn sẽ phát hành:

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

Bạn sẽ phải thay thế orginalfilenewfilevới tên tệp thực tế, sau này là tên của tệp được tạo để giữ phần cắt ra.

ffmpeg

Giả sử bạn muốn cắt một phần bắt đầu từ 00:00:30 vào tệp gốc với thời lượng 5 giây và không nên mã hóa lại (nếu bạn muốn mã hóa lại, bạn sẽ phải thay thế copyvới codec âm thanh và video, để biết danh sách các vấn đề về codec có sẵn ffmpeg -formats -E), thì bạn sẽ phát hành:

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

Bạn sẽ phải thay thế orginalfilenewfilevới tên tệp thực tế, sau này là tên của tệp được tạo để giữ phần cắt ra.


Để tham khảo, hãy xem http://lazyxiong-tech.blogspot.com/2007/05/USE-mencoder-to-cut-out- Pieces-of.html và "7. Chỉ sao chép một phần video" trong http: // segfault.in/2010/10/ffmpeg-tricks-you-should-ledge-about/


Tôi đã thử nó và thất bại. Bạn có thể chỉ cho tôi lệnh nào sẽ dành cho bạn với các codec thông thường để sử dụng cho avi, flv và mpg không? Tôi đã liệt kê các codec nhưng không thể hiểu nhiều về nó.
Straakowsky

@strapakowsky Nó phụ thuộc vào tệp đầu vào và loại codec bạn đã cài đặt. Có lẽ bạn nên đặt một câu hỏi mới cho điều đó và thêm thông tin về tập tin bạn đã nhận và lệnh bạn đã thử.
NN

@strapakowsky Tôi cũng không thể làm cho nó hoạt động với ffmpeg nhưng tất cả các hướng dẫn về việc cắt bỏ các phần bằng ffmpeg đều gợi ý rằng nó nên hoạt động bằng cách nào đó vì vậy tôi giữ nó trong câu trả lời của mình. Tuy nhiên, tôi cũng đã thêm một dòng mencoder mà tôi có thể làm việc.
NN

Chỉ cần sử dụng một phiên bản này. Nó không làm việc cho bạn vì -ss ... -t ...cần phải được trước các -i infiletùy chọn. Xem câu trả lời này cho một lót thực sự. Bạn gần như đã nhận được nó, chỉ cần không phải là đơn đặt hàng ...
Hendy

1
@Hendy Chỉnh sửa tương ứng
NN

25

Bạn có cần cắt video với mã hóa lại hoặc không có chế độ mã hóa lại? Bạn có thể thử làm theo lệnh dưới đây.

Tóm tắt: ffmpeg -i [input_file] -ss [start_seconds] -t [thời gian_seconds] [output_file]

sử dụng FFmpeg cắt video mp4 mà không cần mã hóa lại

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

sử dụng FFmpeg cắt video mp4 với mã hóa lại

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

Nếu bạn muốn cắt bỏ phần từ đầu, chỉ cần thả -t 00:00:10từ lệnh


0

medipack là một ứng dụng dòng lệnh rất đơn giản như là một trình bao bọc ffmpeg.

bạn có thể đạt được việc cắt video của mình bằng các lệnh sau:

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

bạn có thể xem các tùy chọn của tiểu ban cắt như:

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

bạn cũng có thể khám phá các tùy chọn khác bằng cách sử dụng 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

bạn có thể truy cập https://github.com/srbcheema1/medipack và kiểm tra các ví dụ trong README.


-1

Để chính xác hơn, bạn có thể: MANUALLY Mở tệp trong trình phát đa phương tiện sẽ tăng khung hình trước (potplayer yêu thích của tôi nhưng MPC-HC hoạt động) và phát tệp AVISynth với dữ liệu như:

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)

Sau đó cắt với định dạng thời gian CHÍNH XÁC:

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"

Nếu bạn muốn tham gia, hãy tạo một tệp txt với các tệp video có nội dung như:

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

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

Chạy ffmpeg:

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

CHƯƠNG TRÌNH Tôi đã viết một chương trình nhưng không có cấp 10 để hiển thị nó, xin lỗi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.