Phụ đề tiếng Việt trên linux với mplayer

Là một người thích sử dụng mplayer để xem film cũng như nghe nhạc, điều trở ngại nhiều nhất đối với tớ là khi tải được một bộ phim về, gõ lệnh chạy với mplayer và được nó thông báo một dòng rất đẹp như sau:

SUB: Could not determine file format

Với những tệp tin phụ đề .srt như thế này thì trước đây tớ chỉ đành ngậm ngùi nhờ thằng bạn vlc để xem😦.

Mới hôm rồi, lại có dịp sờ vào cái này nên tớ cũng bỏ chút công sức dòm ngó coi sao, sau một hồi google thì cũng có kết quả:

http://maiminhhoang.net/wp/ph%E1%BB%A5-d%E1%BB%81-ti%E1%BA%BFng-vi%E1%BB%87t-tren-ubuntu/

Nhưng đối với tớ đây chưa phải là giải pháp hoàn thiện cho vấn đề gặp phải vì:

1. Phải đụng đến wine và phần mềm chạy trên windoof.

2. Tớ không xem phim và cũng không xem được trên ephim nên định dạng và chuyển dạng trên đó tớ không quan tâm.

hmmm… đành phải tự thân vận động vậy🙂

Mục tiêu:

a. Phải tìm ra bảng mã được sử dụng để tạo cái tệp tin đó là gì.

b. Dùng chương trình nào để chuyển về utf-8 cho thằng mplayer nó hiểu được.

c. Tất cả công cụ sử dụng phải được *nix hỗ trợ! (rất quan trọng với *nix users😉 )

Nghịch với hai ngón tay mổ cò bàn phím:

*Dò đường:

a. Thử gõ:

vim file.srt

thì có tệp tin mở được, có tệp tin nó lại thông báo là đó là một binary file ?????

b. Như với nhiều tệp tin không xác định khác (về tên và phần phụ), hai ngón tay tiếp tục mổ cò vào bàn phím:

file file.srt
file.srt: Little-endian UTF-16 Unicode character data, with CRLF, CR line terminators

Voila! hai thông tin được bôi đậm ở trên là gì nhỉ? Đúng, nó được tạo ra và lưu lại với bảng mã UTF-16, cái mà thằng mplayer nó … chịu chết🙂 ( tò mò tìm hiểu thêm thì tớ mới biết là bọn windoof nó dùng bảng mã mặc định từ Windoof NT 4.0 là UTF-16, có lẽ là nguyên nhân từ đây). Ngoài ra có thông tin nữa là ký tự ngắt dòng trong tệp tin được sử dụng là của windoof chớ không phải của *nix🙂.

*Chuyển mã:

Sau một vài phút mổ cò bàn phím chơi với google, tớ tìm được hướng dẫn dùng lệnh rất đơn giản để chuyển mã của *nix, đó là tiện ích iconv (trên debian thì nó nằm trong gói lib6c )

Bắt tay vào công việc, tớ gõ thử :

iconv -f UTF-16 -t UTF-8 old_file.srt > new_file.srt

Tiếp đó là thử chạy với mplayer:

mplayer -sub new_file.srt xxx.avi

Okie, sub đã được nạp và chạy nhưng … chỉ thấy những dấu ???? trong phim, hmmm. Lục trong manual của mplayer thì thấy để ép cho mplayer chạy và hiển thị với bảng mã utf-8 phải thêm lựa chọn -utf8 cho mplayer, tóm lại lệnh sẽ là:

mplayer -utf8 -sub new_file.srt xxx.avi

thì phụ đề hiển thị tốt và xem rất ngon lành🙂.

Với một số phụ đề thì sau khi chuyển mã, vẫn phải tiếp tục đổi ký tự xuống dòng từ của dos sang *nix mới có thể nạp được sub, có thể thay lệnh để chuyển mã được nếu trước đó thành lệnh :

iconv -f UTF-16 -t UTF-8 old_file.srt | sed -i ‘s/ ^M\+//g’  > new_file.srt

(ký tự ^M được tạo ra với việc nhấn tổ hợp ctrl+v và ctrl+m liên tiếp)

Thu hoạch:

1. Có thể thoải mái ngồi nhấm nháp cà phê với một bộ phim nước ngoài với mplayer🙂.

2. Làm quen với công cụ chuyển mã rất mạnh của *nix : iconv

3. Không phải cài thêm một chương trình bắt nguồn từ windoof nào để giải quyết vấn đề.

4. Vấn đề giải quyết rất ngắn gọn bằng một dòng lệnh (cái này quan trọng trong việc nói nên sự mạnh mẽ của dòng lệnh linux).

5. Qua đó học thêm cách sử dụng mplayer cũng như cách mplayer “làm việc” với các tệp tin phụ đề.

6. Hiểu thêm một chút về unicode.
Tham khảo:

http://en.wikipedia.org/wiki/Unicode

http://www.brandonhutchinson.com/DOS_and_UNIX_end-of-line_characters.html

http://maiminhhoang.net/wp/ph%E1%BB%A5-d%E1%BB%81-ti%E1%BA%BFng-vi%E1%BB%87t-tren-ubuntu/

6 phản hồi to “Phụ đề tiếng Việt trên linux với mplayer”

  1. pclouds Says:

    Bonus thêm vnconv (gói x-unikey) để chuyển mã tiếng Việt (iconv khá yếu, chỉ hỗ trợ vài bảng mã Việt nếu nhớ không lầm).

  2. Anh K. Anh Says:

    @pclouds: bonus thêm là uvconv không chạy trên *nix, mà chỉ trên Linux. Xài iconv tạm đủ😀

  3. tuantub Says:

    @pclouds:🙂

  4. sofox Says:

    Không cần fức tạp thế. Chỉ cần dùng Vim là đủ rồi.

    Khi mở bằng Vim nó sẽ tự chuyển sang UTF-8. Copy nội dung đó sang file mới là được.

    Còn chuyển từ CRLF (Windows) sang LF (Linux) thì cũng chỉ cần :set ff=unix

    • tuantub Says:

      Thanks bồ, chuyện vim chơi trò này bồ nói tớ mới biết🙂
      thực ra về phức tạp thì chẳng có gì phức tạp cả vì chỉ gõ một một dòng lệnh thôi😉
      Thân.

  5. Seri Says:

    Vừa phải coi phụ đề Việt trên mplayer xong, nhớ ra cái này và áp dụng luôn, thanks tác giả!

    Bổ sung cho người sử dụng smplayer là bạn sẽ chỉnh subtitle default encoding ở Preferences/Subtitle.


Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: