کدک‌ها و پلیرها در لینوکس

اصولا ویدئوها (منظورم دنباله‌ای از تصاویر است و کاری به صدا ندارم) توسط دوربین در حالت آنالوگ ذخیره میشن (این که چه جوری این‌کار رو انجام میدن برمیگرده به ساخت اولین دوربین‌ها که قدمت ۳۰۰ ، ۴۰۰ ساله داره!) بعد دوربین اون رو با یه مبدل آنالوگ به دیجیتال تبدیل می‌کنه به داده‌های صفر و یک که به درد دنیای دیجیتالی کامپیوترها می‌خوره. این‌که این ویدئو خام رو برای استفاده روزمره به کار ببریم اصلا ایده خوبی نیست چون باید برای هر پیکسل از فریم تصویر (که خودش شامل Contrast و رنگ هست و این رنگ هم خودش از ترکیب رنگ‌های پایه به وجود میاد و تازه هر ثانیه از فیلم ممکنه تا ۶۰ فریم داشته باشه!) باید داده‌ای در نظر گرفت در نتیجه حجم فوق‌العاده بالایی داره (مثلا ۳۰۰ گیگابایت برای ۱ ساعت فیلم) و به‌درد ذخیره روی دیسک و فرستادن روی اینترنت نمی‌خوره. این‌جا بود که روش‌های مختلفی برای فشرده‌سازی ویدئو به وجود آمد که هرکدوم از تکنیک‌های مختلف ریاضی و مهندسی استفاده می‌کنن و اهداف مختلفی هم دارند. مثلا با جدا کردن رنگ‌ها و فشرده سازیشون و یا حذف قسمتی از تصویر که تو فریم‌های مختلف ثابت است. به هرحال این متدها باید بتونن تعادل مناسبی رو بین حجم و کیفت و پیچیدگی روش برقرار کنن.
چون این روش‌ها متفاوت هستند پس می‌تونن ویدئوها با فورمت‌های متفاوتی ایجاد کنن که این خودش باعث عدم هماهنگی اون‌ها میشه. یه سری فرمت که اطلاعات در موردشون آزاد بود یا از نظر فشرده‌گی بهینه بودند کم کم تبدیل به استاندارد شدن. مثل MPEG-4 Part2 یا H264 . ما برای اجرا (Decode) یا ساختن این فرمت‌ها (Encode) به کدک نیاز داریم.

Up Screenshot

کدک: کدک یه سخت‌افزار یا برنامه است که برای کدگذاری و/یا کدگشایی یک جریان اطلاعاتی ویدئویی به کار میره. از این تعریف مشخص هست که کاراهایی که یک کدک انجام میده زیاد هستند مثل کدکردن یه جریان اطلاعاتی برای ارسال اون یا ذخیره کردنش روی دیسک یا کدگشایی اون برای پخش و یا تغییر اون.

کدک‌ها فرمت ویدئویی نیستند
نکته مهم این‌جاست که کدک‌ها رو نباید باید فرمت‌های ویدئویی اشتباه گرفت. فرمتی مثل MPEG-4 یه سری اطلاعات هست که مشخصاتش رو توضیح داده یا یه فایل ویدئویی که بر اساس اون ساخته شده. کدک برنامه‌ای هست که اون فایل رو می‌خونه یا ایجاد می‌کنه. کدک‌هایی که بر اساس یه فرمت نوشته میشن با هم سازگارن. مثلا ویدئویی که با کدک Xvid نوشته میشه به راحتی توسط کدک DivX Pro خونده میشه چون دوتاشون بر اساس MPEG-4 Part 2 هستند. ولی ممکن هست تصویر خام یکسانی که با این دو کدک Encode میشه کاملا متفاوت باشه از نظر کیفیت!

کدک‌ها رو میشه به دو دسته کلی تقسیم کرد:

Lossy

این کدک‌ها بر اساس فرمتی هستند که مقداری از داده اولیه رو حذف می‌کنن برای کمتر کردن حجم فایل ولی جوری که این افت کیفیت به چشم نیاد. کمتر کردن حجم فایل مزایای زیادی داره مثلا میشه صوت و تصویر بیشتری رو روی دیسک ذخیره کرد و این‌جوری هزینه‌ها رو کاهش داد. فرمت‌های مطرحی مثل MPEG-1/2 Audio Layer 3 (همون MP3) و H.264 از نوع Lossy هستند.

Lossless

این فورمت‌ها سعی می‌کنن تمام اطلاعات موجود در جریان داده اصلی رو در قالبی فشرده ذخیره کنن که هیچ جزئیاتی از دست نره. خوب معمولا از این فرمت‌ها برای نگهداری آرشیو استفاده میشه یا کلا کسی که بخواد یه صوت یا ویدئو رو با بهترین کیفیت داشته باشه. مثالی که الان به ذهنم میرسه ازش فرمت آزاد Flac هست.

فرمت حامل یا Container format : فرمتی هست که شامل ویدئو و صوت و metadata های مختلفی از جمله اطلاعات Sync صدا و تصویر هست. از Container format مطرح می‌توان به AVI و Matroska اشاره کنم که حتما فایل‌هاشو با پسوند MKV دیدید.

کدک‌ها و پلیرها در لینوکس
توی لینوکس به مقدار بسیار زیادی برنامه و فریم‌ورک و کدک برای پخش فایل‌های صوتی و تصویری وجود داره که من سعی می‌کنم مهمترین‌شون معرفی کنم.

GStreamer Logo

GStreamer

GStreamer یک فریم ورک چند رسانه‌ای هست که به زبان C نوشته شده. فکر کن می خوای یه برنامه پخش موسیقی بنویسی. در اون صورت باید Decoderهای مناسب را بشناسی و فایل رو به اون بدی بعد هم کار با ALSA رو بلد باشی تا صدا به اسپیکر بره. ولی اگر تو برنامه از GStreamer استفاده کنی تمام این مراحل جهنمی رو GStreamer انجام میده و شما می‌تونید رو قسمت‌های دیگه برنامه تمرکز کنی. این فریم ورک خودش کدکی نداره و کدک‌هاش از طریق پلاگین‌ها روش نصب میشن. ۳ پلاگین Good و Bad و Ugly هر کدوم شامل کدک‌های خاصی هستند. GStreamer به طور عمده تو میزکار Gnome استفاده میشه و برنامه‌های معروفی مثل Totem ، Rhythmbox و Songbird ازش استفاده می‌کنند.

MPlayer

به نظر من که Mplayer معروف‌ترین و بهترین پلیر لینوکس هست. این برنامه که به OSهای زیاد دیگه‌ای هم از جمله M$ Windows و Mac پورت شده، فرمت‌های زیادی رو به بهترین نحو ممکن باز می‌کنه. این برنامه رابط گرافیکی (GUI) نداره و از طریق کامند لاین باید باش کار کرد. البته GUI های زیادی براش نوشتن مثل SMplayer ولی هیچ کدوم کار کردن مستقیم با خودش اونم با کامند لاین نمیشه! :)

xine

کسین هم یکی دیگه دیگه پلیرهای جالب تو لینوکس هست که استارت‌ش سال ۲۰۰۰ خورده. این یکی هم GUI نداره مثل MPlayer و Frontend های مختلفی براش نوشتن. یه ویژگی جالب این برنامه که همیشه ازش یاد میشه اصلاح هماهنگی صدا و تصویر تو ویدئو هست. استفاده عمده Xine توی KDE هست. (KDE از Phonon استفاده می‌کنه و Phonon هم از Xine )

کدوم از همه بهتره؟
این رو به یادت داشته باش که تو برنامه‌های آزاد اضافه کاری اشتباه است و میشه برای انجام کاری از قسمتی از برنامه‌ای که موجود هست استفاده کنیم. پلیرهایی که نام بردم اکثرا از اجزای مشترک استفاده می‌کنن. مثلا Xine و Mplayer از libavcodec استفاده می کنن که یه کتاب‌خانه برای Encode و Decode کرد اکثر فرمت‌هاست و از پروژه FFMPEG اومده. جالب هست که بدونید کدک‌های فوق‌العاده عالی fddshow هم از این کتاب‌خانه استفاده می‌کنن (اگر K-lite Codec Pack رو نصب کرده باشید دیدی‌شون). فرق عمده این‌ها در خورده کاری‌هاست مثل پخش زیرنویس و مدریت پلی لیست و … (البته زیاد هم خورده کاری نیست!) موضوع دیگه که پخش فایل‌های ویدئویی با روزلوشون بالا هست که برای کارایی بهتر باید برن رو GPU (پردازنده گرافیکی) Decode یا Encode بشن. برنامه‌ها باید بتونن از API های درایورهای موجود برای این امر استفاده کنن. وارد جزئیات نمی‌خوام بشم ولی Mplayer و نسخه‌ آخرین نسخه VLC تو این ضمینه عالی هستند. به هر حال باید باشون کار کنید تا ببنید با کدومشون بیشتر حال می‌کنید.

Posted in لینوکس | Tagged , , , , , | 1 Comment

پی‌سی گیمز؛ تجربه وب۲ از سایت‌های بازی

بازی‌های ویدئویی در ایران با توجه به محدود بودن رسانه‌های دیگه در چند سال اخیر خیلی مورد توجه قرار گرفته و به یکی از سرگرمی‌های اصلی نوجوانان و جوانان کشور تبدیل شده. (البته از هر نظر هم بهش نگاه کنیم خیلی از تفریحات امروزی سالم‌تره!) این میزان مخاطب باعث به وجود آمدن سایت های زیادی (البته باید بگیم Forumهای زیادی!) و هم چنین فروشندگان زیادی شده که این مخاطبان رو به خودشون جذب کنن. حالا این وسط همه هم فقط به فکر پول هستن و اصلا خود بازی این وسط فراموش شده. این وسط سایتی رو هم می‌بینیم که یه چیز ساختگی به نام کاربران Premium ساخته و داره یه مشت نوجوان ساده دل رو تیغ می‌زنه! بسیاری از این سایت ها از نظر فنی هم بسی ضعیف هستند و از وب۲ که هیچی وب۱ هم بویی نبردند. تمام مطالب بالا رو گفتم که سایت P30games.ir رو معرفی کنم. سایتی که وب۲ رو به خوبی فهمیده و از سیستم مدریت محبوب وردپرس استفاده می‌کنه. فید کاملی از مطالبش ارائه میده و حتی در توییتر هم حساب داره. نسخه جدید انجمن هاش هم به تازگی راه اندازی شده. خوب پس دیگه منتظر چی هستید؟ برید سایت رو ببیند و نظرتون رو بگید. اگر هم دوست داشتید مشترک فیدش بشید. :)

سایت پی‌سی گیمز

فید مطالب پی‌سی گیمز

فوتو بلاگ پی‌سی گیمز

پی‌سی گیمز در توییتر

انجمن‌های پی‌سی گیمز

Posted in وب و اینترنت | Tagged , , , , | 7 Comments

بازگردانی جای سیستم اعلان کارمیک به جانیتی

یکی از موارد آزار دهنده در نسخه جدید اوبونتو جای سیستم اعلان هست که خیلی فاصله با پنل بالایی داره و یه جورایی اصلا خوش ترکیب نیست. برای این‌که مکان اون رو به جای قبلیش در اوبونتو ۹.۰۴ ببرید کافیه فقط یه پکیج نصب کنید. :)

نسخه ۳۲ بیتی
نسخه ۶۴ بیتی

Posted in لینوکس, متن باز | Tagged , | 1 Comment

لیبل‌ها و برچسب‌های کارمیک

چند روز بیشتر به انتشار کوالای دنیای لینوکس نمونده. سایت Ubuntu Geek در پستی مجموعه ای از لیبل‌ها و برچسب‌های کارمیک کوالا رو معرفی کرده که توسط طراحان طرفدار اوبونتو طراحی شده که در ادامه می‌بینیم.

Karmic CD Labels

مجموعه اول شامل ۲۵ لیبل سی‌دی برای نسخه‌های مختلف اوبونتو به همراه فایل های خام اون هاست.

http://www.box.net/shared/qdi15ndbg7

مجموعه ۴ لیبل برای سی‌دی و دی‌وی‌دی‌های Ubuntu 9.10

http://www.box.net/shared/hj4iqi4ne3

مجموعه ۱۲ استیکر از ۱۲ توزیع مختلف

http://www.box.net/shared/jhu90h9qir

Posted in لینوکس, متن باز | Tagged , , | Leave a comment

راه آسان اضافه کردن مخازن PPA در کارمیک

اگر اوبونتو کار هستید حتما از مخازن PPA – مخازن شخصی که جدا ازمخازن رسمی اوبونتو هستند – استفاده کرده اید. مثلا برای نصب آخرین نسخه چغوک در اوبونتو باید مخازن شخصی آن را به لیست مخازن خود اضافه کنید.

در اوبونتو کارمیک، برای اضافه کردن این گونه مخازن کافیست از دستور add-apt-repository استفاده کنید. برای مثال برای اضافه کردن مخازن مرورگر Chromium کافیست خط زیر را در ترمینال بزنید:

sudo add-apt-repository ppa:chromium-daily

Posted in لینوکس, متن باز | Tagged , , | 2 Comments