Subtitle không đồng bộ với phát lại? Hãy sửa nó.
Cập nhật: 29 tháng 11, 2024
Vấn đề bạn gặp như sau. Bạn muốn xem phim nước ngoài, và cần phụ đề. Ngày nay, tìm file phụ đề cho bất kỳ phim nào, với nhiều ngôn ngữ, khá đơn giản. Bạn chỉ cần lấy file SRT (.srt), đặt tên trùng với phim, và xong. Bất kỳ media player tự trọng nào - hoặc nếu không, hãy dùng VLC, thằng tốt nhất - sẽ tự động tải và hiển thị phụ đề. Nhưng nếu chúng out-of-sync thì sao?
Tôi đã nói về Linux và subtitle lâu lắm rồi. Hầu hết những gì tôi viết trong hướng dẫn đó vẫn đúng. Nhưng tôi không đề cập đến dịch chuyển thời gian trong file phụ đề. Có thể bạn có từ đúng, nhưng hiển thị quá muộn hoặc quá sớm. Chỉ chênh lệch 300ms cũng khiến xem khó chịu. Trên đó là không chơi được. Để tôi chỉ bạn cách sửa nhanh, dễ dàng. Theo tôi.
Tên trò chơi: ffmpeg
Nói chung, trong cuộc sống, nếu nghi ngờ, và bạn xử lý file media, ffmpeg. Đây có thể và nên là cửa hàng all-in-one cho mọi thứ video, audio, loằng ngoằng. Hầu hết chương trình chỉnh sửa media chỉ là frontend phức tạp cho ffmpeg. Nó có mặt trong hầu như mọi công cụ làm việc với hình động hoặc âm thanh. Nếu bạn dùng Linux, bạn may mắn gấp đôi, vì ffmpeg có sẵn trong hầu như mọi repo.
Tôi sẽ demo dùng chương trình trên Linux. Lệnh giống hệt trên các OS khác, nơi bạn có thể cài và chạy ffmpeg. Khác biệt chỉ ở cách lấy chương trình. Trên Linux, nó归结为:
(sudo) [package manager] install ffmpeg
Ví dụ, trong họ distros Debian/Ubuntu:
sudo apt install ffmpeg
Bây giờ, chúng ta cần sửa offset subtitle. Tôi đã viết hướng dẫn ffmpeg, khá toàn diện, và có bài memes HD của tôi. Nhưng giống như hướng dẫn subtitle, nó không cover việc thay đổi time offset. Chức năng có, bạn chỉ cần flag mới. Cụ thể:
ffmpeg -itsoffset [time] -i [subtitle file] -c copy [edited subtitle file]
Ví dụ thực tế:
ffmpeg -itsoffset -13.6 -i sub1.srt -c copy subs2.srt
Chúng ta có gì ở đây?
- -itsoffset cho phép dịch chuyển input stream. Có thể dùng cho file single-stream như .srt (văn bản cơ bản), hoặc file video/audio multi-stream, như phim điển hình có video track và audio track liên quan, thường một mỗi loại. Bạn có thể xem các bài chỉnh sửa media khác của tôi, nơi tôi dùng KDEnlive, để thấy thực tế.
- -13.6 là offset thực tế. Ký hiệu là ss.mmm, nên bạn có thể xuống tới 1 ms nếu cần. Trong trường hợp tôi, tôi phát file thủ công, kiểm tra khi nào subtitle hiện và/hoặc nên hiện với cảnh dễ dàng, và điều chỉnh cần thiết. Tôi thử vài lần để có offset đúng. Đây không phải khoa học chính xác, nên -13.7 hoặc -13.55 cũng hoạt động tốt. Trong trường hợp tôi, offset là âm.
- Cuối cùng, tôi chỉ định input stream, file subtitle gốc, dùng no codec (copy), vì tùy chọn này không có ý nghĩa lớn cho SRT, và cuối cùng file output, sẽ trở thành subtitle đúng vị trí tôi dùng với phim (cùng tên).
Và xong, Bob thực sự là chú của bạn!
Kết luận
Dùng Linux đôi khi khó khăn. Nhưng cũng có lúc nó là phước lành. Nói chung, nếu bạn có các tác vụ bảo trì, đặc biệt quanh file media, nó cung cấp kho công cụ, tiện ích dễ truy cập để làm việc. Không cần lang thang vô thức tải chương trình ngẫu nhiên từ web lạ, đặc biệt không phải thời đại Internet-giả-mạo này.
Nếu bạn tiêu thụ media toàn cầu và không chỉ tiếng Anh đơn thuần, đôi khi bạn gặp một vài phim không hiểu bản địa, và cần subtitle. Bạn muốn subtitle khớp với叙事. Nếu không, ffmpeg dễ dàng giải quyết. Hàm offset đơn giản, nhanh, thanh lịch. Một hai giây [sic], và xong. Đó là tất cả cho hôm nay, các anh em.
Cheers.