$ ffmpeg -i source-file.foo -ss 0 -t 600 first-10-min.m4v
$ ffmpeg -i source-file.foo -ss 600 -t 600 second-10-min.m4v
$ ffmpeg -i source-file.foo -ss 1200 -t 600 third-10-min.m4v
...
Gói nó thành một kịch bản để thực hiện nó trong một vòng lặp sẽ không khó.
Xin lưu ý rằng nếu bạn cố gắng tính số lần lặp dựa trên đầu ra thời lượng từ một ffprobe
cuộc gọi thì điều này được ước tính từ tốc độ bit trung bình khi bắt đầu clip và kích thước tệp của clip trừ khi bạn đưa ra -count_frames
đối số, làm chậm hoạt động của nó .
Một điều cần lưu ý là vị trí của -ss
tùy chọn trên dòng lệnh có vấn đề . Nơi tôi có nó bây giờ là chậm nhưng chính xác. Phiên bản đầu tiên của câu trả lời này đã đưa ra sự thay thế nhanh chóng nhưng không chính xác . Bài viết được liên kết cũng mô tả một sự thay thế chủ yếu là nhanh nhưng vẫn chính xác, mà bạn phải trả tiền với một chút phức tạp.
Ngoài ra, tôi không nghĩ bạn thực sự muốn cắt đúng 10 phút cho mỗi clip. Điều đó sẽ đặt các vết cắt ngay giữa câu, thậm chí từ. Tôi nghĩ bạn nên sử dụng trình chỉnh sửa video hoặc trình phát để tìm các điểm cắt tự nhiên chỉ cách nhau 10 phút.
Giả sử tệp của bạn ở định dạng mà YouTube có thể chấp nhận trực tiếp, bạn không phải mã hóa lại để có được phân khúc. Chỉ cần chuyển các điểm cắt điểm tự nhiên sang ffmpeg
, yêu cầu nó chuyển A / V được mã hóa thông qua chưa được xử lý bằng cách sử dụng codec "sao chép":
$ ffmpeg -i source.m4v -ss 0 -t 593.3 -c copy part1.m4v
$ ffmpeg -i source.m4v -ss 593.3 -t 551.64 -c copy part2.m4v
$ ffmpeg -i source.m4v -ss 1144.94 -t 581.25 -c copy part3.m4v
...
Đối -c copy
số yêu cầu nó sao chép tất cả các luồng đầu vào (âm thanh, video và các tiềm năng khác, như phụ đề) vào đầu ra như hiện trạng. Đối với các chương trình A / V đơn giản, nó tương đương với các cờ dài hơn -c:v copy -c:a copy
hoặc các cờ kiểu cũ -vcodec copy -acodec copy
. Bạn sẽ sử dụng kiểu dài dòng hơn khi bạn chỉ muốn sao chép một trong các luồng, nhưng mã hóa lại luồng khác. Ví dụ, nhiều năm trước đây có một thực tế phổ biến với các tệp QuickTime để nén video bằng video H.264 nhưng để lại âm thanh là PCM không nén ; nếu bạn chạy trên một tệp như vậy ngày hôm nay, bạn có thể hiện đại hóa nó -c:v copy -c:a aac
để xử lý lại luồng âm thanh, khiến video không bị ảnh hưởng.
Điểm bắt đầu cho mọi lệnh ở trên sau lệnh đầu tiên là điểm bắt đầu của lệnh trước cộng với thời lượng của lệnh trước đó.