۱۳۹۰ اسفند ۲۷, شنبه

حل مشکل زیرنویس‌ها در لینوکس!

درود
چندوقتی هست که تمام کارام رو به نزدیک‌ترین راه ممکن (البته برای تنبلی!) انجام می‌دم و سراغ راه‌حل اصلی نمی‌رم!
این پست فکر می‌کنم راه‌حل خوبی برای حل مشکل زیر‌نویس‌ها در گنو/لینوکس‌ها باشه، چراکه اکثر زیرنویس‌های تولید شده بر روی شبکه اینترنت با encodingهای غیرقابل قبولی درست میشن و این مشکل رو برای کاربرای لینوکسی ایجاد می‌کنه!
برای تبدیل encoding یه نوشته به چیز دیگری باید ابتدا توع اولیه اون مشخص بشه و بعد نوع مقصد، سپس میشه با یه ویدیوپلیر خوب که در لینوکس کم هم نیستند برای نمونه vlc استفاده کرد و فیلم رو با زیرنویس فارسی تماشا کرد! فقط نکته مهم در این‌جا اینه که باید در تنظیمات اون مدیاپلیر نوع زیرنویس‌های ورودی رو به utf8 یا هر چیز دیگری که مد نظرتون هست تغییر بدید.

 برای شروع باید نوع encoding فایل ورودی رو بدونیم، با دستور زیر :
$file -ib [file-name]
برای خروجی معمولا یکی از فرمت‌های ویندوزی رو میشه دید در این صورت اون نوع رو به یاد داشته باشید ، در غیر این صورت یعنی زمانی‌که نوع خروجی برای charset چیزی شبیه این هست :
charset=unknown-8bit
 بهتره اون رو WINDOWS-1256 در نظر بگیرید.
حالا برای تبدیل encoding باید بریم سراغ دستور iconv که برای نمونه چیزی شبیه زیر رو باید استفاده کنیم :
$iconv -f WINDOWS-1256 -t utf8 [file-name]
برای ویژگی f- باید نوع ورودی که قبلا مشخص شده رو وارد کرده و برای t- نوع خروجی رو .
این دستور به شکل بالا چیزی رو در نوشته شما تغییر نمیده ‌بلکه فقط اون رو با نوع encoding خروحی نمایش میده. برای این‌که بشه اون رو روی یه فایل دیگه داشت میشه از دستور زیر استفاده کرد:
$iconv -f WINDOWS-1256 -t utf8 [input-file-name] > [output-file-name]
فایل نهایی رو بدید به مدیاپلیرتون ، ok,کار تمام هست.

هیچ نظری موجود نیست:

ارسال یک نظر