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/

Lấy link và tải bài hát nhạc hot trong tháng của mp3.zing.vn

Cách đây vài ngày, bác Huỳnh Kỳ Anh có gửi một bài lên Freesoft ( http://viettug.org/blogs/show/322 )về việc lấy link cũng như nghe nhạc từ mp3.zing.vn. Bắt nguồn từ ý tưởng trên, tớ viết thêm và tạo thành một script để có thể tự động tải các bài hát hot trong tháng từ  mp3.zing.vn với nội dung sau:

#!/bin/bash
#===============================================================================
#
#          FILE:  getnhachotzing.sh
#
#         USAGE:  ./getnhachotzing.sh
#
#   DESCRIPTION:
#
#       OPTIONS:  —
#  REQUIREMENTS:  —
#          BUGS:  —
#         NOTES:  —
#        AUTHOR:  Le Anh Tuan (tuantub@web.de),
#       COMPANY:
#       VERSION:  1.0.3
#       CREATED:  10/03/2009 08:27:04 PM CEST
#      REVISION:  —
#===============================================================================month=$(date +%m)
TDIR=”$HOME/Downloads/Thang$month”
#TDIR=$HOME
TEMPF=$(mktemp)

if [ ! -f $TDIR ]
then
mkdir -p $TDIR
fi

if [ `which lynx` ]
then
lynx -dump http://mp3.zing.vn/mp3/nghe-album/album-hot/nhac-viet.html | \
sed ’s/^.*\(http.*\)/\1/g’ | \
awk -F ‘[? =]‘ ‘/\.mp3$/ {print $1,$3}’ >$TEMPF
else
wget -O – -q http://mp3.zing.vn/mp3/nghe-album/album-hot/nhac-viet.html | \
awk -F ‘[<"?= >]‘ ‘/dl.mp3/ {print $5,$7}’ >$TEMPF
fi

while read line
do
fname=$(echo $line | awk ‘{print $2}’)
if [ ! -f  $TDIR/$fname ]
then
getcmd=$(echo $line | awk -v tdir=”$TDIR” ‘{printf “wget -q %s -O %s/%s”,$1,tdir,$2}’)
echo “”
echo Downloading $fname …
eval “$getcmd”
else
echo “$TDIR/$fname is already downloaded!”
fi
done <$TEMPF
rm $TEMPF

echo “”
echo ================================================
echo You can find your downloaded files now in $TDIR!
echo ================================================
echo “”

Script khi được chạy sẽ tự  động tải các bài hát trong tháng của mp3.zing.vn về thư mục được chỉ định (trong script này là $HOME/Downloads/Thang$n với n là số thư tự từ 1-12), tuỳ vào người sử dụng có thể chỉnh lại để dùng.

Tạm dừng bài viết và … ngồi nghe nhạc :) .

tuantub.

PS:  Định dạng trong này làm méo mó script nếu copy/paste —> ai có nhu cầu có thể tải script từ:

http://cs.tu-berlin.de/~tuantub/tools/getnhachotzing.sh

Ngày hội Tự do Phần mềm 2009 tại Tp. HCM

Thân chào các bạn độc giả của blog Projekt Antos!

Sắp tới đây, mình cùng nhóm Saigon Linux User Group (SaigonLUG) sẽ phổi hợp cùng khoa Toán – Tin trường ĐH Sư phạm để tổ chức Ngày hội Tự do Phầm mềm 2009 tại Thành phố Hồ Chí Minh (Saigon Software Freedom Day 2009).

Trang web chính thức: http://sfd.saigonlug.org/

Thông cáo báo chí http://sfd.saigonlug.org/press-release/

Đăng kí tham gia: http://sfd.saigonlug.org/registration/

Rất mong các bạn đến tham gia!

Sau đây mình xin giới thiệu đôi nét về ngày hội:

A. Giới thiệu chung:

Ngày hội Tự do Phần mềm 2009 tại Tp. HCM là sự hưởng ứng theo phong trào tổ chức Software Freedom Day trên toàn thế giới. Software Freedom Day là một ngày hội khởi xướng từ năm 2004, được tổ chức mỗi năm một lần với mục đích quảng bá cho Phần mềm Tự do Mã nguồn mở (sau đây gọi tắt là FLOSS) và các chuẩn định dạng mở đến với mọi người dùng máy tính cũng như các doanh nghiệp, cơ quan, tổ chức.

Năm nay, Software Freedom Day 2009 sẽ được tổ chức đồng loạt vào ngày thứ bảy, 19 tháng 9 tại hơn 400 thành phố thuộc hơn 100 quốc gia và vùng lãnh thổ. Để hiểu được sự lớn mạnh của phong trào, bạn có thể tham khảo bản đồ các đội tại :

http://cgi.softwarefreedomday.org/2009/map.shtml Đọc tiếp »

Script để copy/convert nhạc từ Imeem sang file.mp3

Nhiều anh em chắc cũng đã từng nghe nhạc trên imeem và muốn lưu lại bài hát mình thích nhưng … từ lâu rồi thằng Imeem nó không cho download thoải mái nữa mà bắt phải giả tiền =)) . Script sau cho phép copy và convert sang file.mp3 rồi lưu lại những bài hát đang được nghe trên FF. Đọc tiếp »

Phân biệt các khái niệm UNIX, UNIX-Based và UNIX-Like

Đối với những ai tham gia vào thế giới của các hệ điều hành thuộc dòng họ UNIX (mà thường được gọi chung là các hệ điều hành *nix) như  GNU/Linux, GNU, FreeBSD, NetBSD, OpenBSD, Solaris, Open Solaris, IBM AIX, HP-UX, Mac OSX thì ắt hẳn sẽ có đôi khi còn có những sự nhập nhằng khi hiểu về 3 khái niệm thường dùng để chỉ các nhánh khác nhau trong gia đình *nix đó là UNIX, UNIX-LikeUNIX-Based. Bài viết của mình sau đây có mục đích gạn lọc và làm sáng tỏ hơn về vấn đề này. Đọc tiếp »