Tôi không bao giờ có thể làm cho giải pháp của ptQa hoạt động, chủ yếu là vì tôi không bao giờ có thể tìm ra lỗi từ các bộ lọc có nghĩa là gì hoặc cách khắc phục chúng. Giải pháp của tôi có vẻ hơi vụng về vì nó có thể để lại một mớ hỗn độn, nhưng nếu bạn ném nó vào một kịch bản, việc dọn dẹp có thể được tự động hóa. Tôi cũng thích cách tiếp cận này vì nếu có gì đó không ổn ở bước 4, bạn kết thúc với các bước hoàn thành 1-3 để phục hồi từ các lỗi hiệu quả hơn một chút.
Chiến lược cơ bản là sử dụng -t
và -ss
để có được video của từng phân khúc bạn muốn, sau đó kết hợp tất cả các phần cho phiên bản cuối cùng của bạn.
Giả sử bạn có 6 đoạn ABCDEF mỗi đoạn dài 5 giây và bạn muốn A (0-5 giây), C (10-15 giây) và E (20-25 giây) bạn sẽ làm điều này:
ffmpeg -i abcdef.tvshow -t 5 a.tvshow -ss 10 -t 5 c.tvshow -ss 20 -t 5 e.tvshow
hoặc là
ffmpeg -i abcdef.tvshow -t 0:00:05 a.tvshow -ss 0:00:10 -t 0:00:05 c.tvshow -ss 0:00:20 -t 0:00:05 e.tvshow
Điều đó sẽ làm cho các tệp a.tvshow, c.tvshow và e.tvshow. Đoạn phim -t
cho biết mỗi clip dài bao nhiêu, vì vậy nếu c dài 30 giây, bạn có thể vượt qua trong 30 hoặc 0:00:30. Các -ss
tùy chọn nói bao xa để bỏ vào nguồn video, vì vậy nó luôn luôn liên quan đến sự bắt đầu của tập tin.
Sau đó, khi bạn có một loạt các tệp video, tôi tạo một tệp ace-files.txt
như thế này:
file 'a.tvshow'
file 'c.tvshow'
file 'e.tvshow'
Lưu ý "tập tin" ở đầu và tên tập tin đã thoát sau đó.
Sau đó, lệnh:
ffmpeg -f concat -i ace-files.txt -c copy ace.tvshow
Điều đó kết hợp tất cả các tệp abe-files.txt
lại với nhau, sao chép codec âm thanh và video của chúng và tạo một tệp ace.tvshow
chỉ là phần a, c và e. Sau đó chỉ cần nhớ để xóa ace-files.txt
, a.tvshow
, c.tvshow
và e.tvshow
.
Tuyên bố miễn trừ trách nhiệm : Tôi không biết làm thế nào (trong) hiệu quả này được so sánh với các phương pháp khác về mặt ffmpeg
nhưng đối với mục đích của tôi, nó hoạt động tốt hơn. Hy vọng nó sẽ giúp được ai đó.