تبدیل فرمت تعداد زیادی ویدیو با ffmpeg

استاندارد

قضیه از اینجا شروع شد که من یه فایل زیپ حاوی ۵۰ تا ویدیو دانلود کردم ، ولی‌ فرمت هیچ کدوم با فرمتی که من نیاز داشتم نمیخوند ! پس طبیعتا تنها راهی‌ که برام میموند این بود که ویدیو‌ها رو convert کنم . ۲ تا راه برای اینکار وجود داشت راه غیر منطقی‌ و کند این بود که یه اپلیکیشن برای این کار پیدا کنم، نصبش کنم و بشینم دونه دونه ویدیو‌ها رو convert کنم و راه حال منطقی‌ و سریع ، که یه پکیج خوب برای انجام این کار پیدا کنم و برم سر وقت ترمینال . من راه سریع رو انتخاب کردم ، بعد یه سرچ کوچیک به پکیج ffmpeg رسیدم که علاوه بر کاری که من ازش میخواسم کلی‌ کارای جذاب دیگرو هم انجام میداد .

پس قدم اولم این بود که این پکیج رو نصب می‌کردم ، من واسه نصب این بسته روی مک از پکیج منیجر HomeBrew استفاده کردم ، اگه HomeBrew رو ندارید می‌تونید اون رو با این دستور نصب کنید.

دستور نصب HomeBrew :

دستور نصب ffmpeg برای مک :

brew install ffmpeg

خوب حالا تو مرحله بعد باید میرفتم سراغ convert ویدیو‌ها . از دستور زیر برای تبدیل ویدیو از یک فرمت به فرمت دیگه استفاده می‌شه .

خب من ۵۰ تا ویدیو رو باید convert می‌کردم و اصلا دوست نداشتم که بشینم پای لپتاب و این دستور رو ۵۰ بر اجرا کنم ، پس دستور زیر رو نوشتم که تمام ویدیوها با فرمت avi توی دایرکتوری رو به فرمت mpg تغییر میده .

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

کار یا دشمن سلامتی !

استاندارد

چند وقت پیش من یه Activity Tracker خریدم ، که باهاش می‌شه فعالیت‌های روزمره رو اندازه گرفت ، یکی‌ از اطلاعات جالبی‌ که این گدجت بهتون میده اینکه مثلا طی‌ِ یه بازه زمانی خواست چقدر فعالیت مفید داشتید ، این فعالیت مفید قرار نیست الزاماً ورزش یا کار خیلی‌ سختی باشه بلکه حتی میتونه یه قدم زدن ساده باشه .

نکته جالبی‌ که بعد از استفاده چند هفته‌ای و بررسی میزان فعالیت‌های روزانم بهش برخوردم این بود که ، من در زمان حضورم در محیط کاری که چیزی نزدیک به ۶-۷ ساعت هست فعالیت من به طور میانگین ۷ دقیقه بود !!! که اگه نخوام بگم فاجعه است میتونم بگم اصلا دلگرم کننده نیست . همچنین باید بگم طبق مطالبی که من خوندم سازمان بهداشت جهانی به هر فرد بالغ توصیه میکنه که حداقل ۳۰ دقیقه در روز فعالیت مفید داشته باشه . البته با این که تقریبا هممون میدونیم کم فعالیتی تو دراز مدت میتونه چه اثرات مخرب و بدی روی سلامتیمون داشته باشه ، ولی کمتر پیش میاد که این موضوع رو جزو مسائل و دقدقه‌های پر اهمیت روزانمون قرار بدیم .

Screenshot_2016-01-11-23-51-25

پس اگه شما‌ هم کارتون مثل من محدود می‌شه به نشستن پشت میز و کارکردن با کامپیوتر و فعالیت فیزیکی چشمگیری در حین کارتون ندارید . باید کمی‌ نگران باشید . ولی‌ نکته مثبت اینه که می‌تونیم با تغییرات کوچیک توی سبک زندگیتومون هم به اون حداقل ۳۰ دقیقه فعالیت روزانه برسیم و هم از روزمون  لذت بیشتری ببریم . مثلا میشه توی راه رفت یا برگشت به محل کار یه مسیریو پیاده روی کرد که هم از پیاده روی لذت ببریم و هم به سلامتیمون کمک کنیم .

و در آخر اینکه حواسمون باشه چیزای خیلی‌ مهمتر از کار هم هست . مثلا یکیش سلامتی .

سونامی داده‌های ویدیویی

استاندارد

این پست در واقع بخشی از مقدمه‌‌ پروژه کارشناسیم هست ( البته با کمی تغییر توی لحن و خود مقدمه ) که چون خودم به موضوعش علاقمندم و به نظرم جالبه گفتم اینجا هم بنویسمش .

در زمان نه چندان دور بخش عمده تولید محتواهای ویدیویی محدود میشد به بخش کوچکی از جامعه که شامل تولیدکنندگان فیلمهای سینمایی ، تولیدکنندگان برنامه های تلوزیونی و تبلیغات و … میشد . اما شروع رشد انفجاری شبکه‌های اجتماعی و ظهور تلفن‌های هوشمند با امکان ضبط تصاویر با کیفیت ، باعث شد تا هرکسی با یک گوشی هوشمند و دسترسی به اینترنت بتونه به یک تولیدکننده نسبتا بزرگ محتوا تبدیل بشه.

تا حالا شده فکر کنید که این خیل عظیم تولیدکنندگان محتوا در روز چه حجم از داده‌های ویدیو‌ای رو میتونند تولید کنند؟

از فیلم‌های هالیوودی و بالیوودی گرفته تا فیلم‌های خودمونی‌ (مثل دامسمش‌ها :دی) که با تلفن‌های هوشمندمون ضبط می‌کنیم و راهی شبکه‌های اجتماعیمون می‌کنیم و حتی تصاویر در حال ضبط به وسیله دوربین‌های مدار بسته و امنیتی و …  همه و همه داده‌های ویدیویی هستند که همه روزه توسط ما تولید میشن .

برای اینکه معیاری از این موضوع داشته باشیم بد نیست بدونید که در هر دقیقه به طور میانگین ۱۰۰ ساعت فیلم بروی سایت YouTube آپلود می‌شه !

Youtube-stats

خب حالا با توجه به این که این عدد فقط مقدار ویدیو‌های آپلود شده روی یک سایت هست میشه حدس زد که موضوع جستجو ، تحلیل ، بررسی و طبقه‌بندی این سونامی عظیم از داده‌های ویدیویی چقدر میتونه ترسناک باشه .

حالا راه حل برای کمتر ترسناک کردن این موضوع چیه ؟
بهترین‌ترین روشی‌ و راهکاری که میتونه این اتفاق رو از حالت ترسناک بودن در بیاره خلاصه سازیه ، البته مسلما نه به صورت دستی ، بلکه به صورت اتوماتیک و به وسیله الگوریتم‌های که تا حد ممکن می‌تونن این کار رو با دقت بالایی انجام بدن .
وقتی ما خلاصه‌ای با کیفیت از هر ویدیو مورد برسی داشته باشیم مسلما موضوعاتی مثل جستجو ، تحلیل ، بررسی و طبقه‌بندی این داده‌ها به شکل چشمگیری سریعتر و راحتر خواهد شد .

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

 

آنالیز پیکج‌ها TCP توی os x

استاندارد

اگه یه زمانی لازم داشتید پکیج‌های TCP ای ارسالی و دریافتیتون رو روی مک تحلیل کنید میتونید از روش زیر واسه این کار استفاده کنید .

۱ .  دستور زیر رو اجرا کنید تا لیستی از interface های شبکتون رو ببینید .

۲. چون من از طریق wifi به اینترت متصل هستم برسیم رو روی en0  انجام میدم . کد زیر رو تو تزمینال اجرا کنید تا listen کردن package ها شروع بشه .

حالا شما باید پیغام tcpdump: listening on رو ببیند . از الان تمام package های شما توی فایل dump تون توی Desktop با اسم  TestDump ذخیره میشه .

۴. برای به اتمام رسوندن listen کردن کافی توی ترمینال cntrl + C رو فشار بدین .

حال برای تحلیل میتونید این فایل رو داخل برنامه‌هایی مثل wireshark باز کنید یا میتونید توی ترمینال اون رو با دستور زیر باز کنید .

 

 

پنج تا از بهترین کتابخونه‌هایی که تو توسعه اندروید باید حتما بشناسیم

استاندارد

همونطور که میدونید تو چند سال اخیر شاهد رشد روزافزون استفاده از تلفن‌های هوشمند بین مردم بودیم که این موضوع باعث افزایش تقاضا و به تبع اون افزایش تولید اپلیکیشن‌های این پلتفورم شده . محبوب‌ترین و پرکاربرترین سیستم‌عامل مورد استفاده توی گوشیهای هوشمند اندروید هست .چیزی که این محبوبیت و تعداد زیاد دولوپررهای اندروید به همراه داشته، بوجود اومدن و توسعه تعداد زیادی کتابخونه‌ متن باز بوده(که اتفاق خیلی جذابی هم هست :دی) ،البته این وسط نباید از نقش استفاده از زبان جاوا برای توسعه اپلیکیشن‌های اندرویدی هم چشم پوشی کنیم .

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

من اینجا میخوام ۵ تا از پر کاربردترین کتابخونه‌های اندرویدی رو براتون بنویسم که میتونند توی برنامه نویسی اندروید خیلی به ما کمک کنند و زندگی رو واسمون شیرین‌تر بکنن  .

01082013AndroidSupportLibrary

GSON .۱

gson کتابخونه‌ای هست که توسط google معرفی شده و به شما این امکان رو میده که به راحتی موجودیت‌های جاوایی خودتون رو به json تبدیل کنید و بالعکس .
اگه توی اپلیکیشنتون درگیر کار با Api ها باشید حتما gson خیلی به کارتون میاد .

همچنین این کتابخونه dependency خیلی از کتابخونه‌های دیگه‌ای هست که شاید استفاده میکنید .

 

RETROFIT

خود توسعه دهندهاش راجع به اون میگن: با retrofit شما میتونید REST API هاتون رو تبدیل به Java interface بکنید .

یکی از راه حل‌های بسیار خوب برای مرتب و تمیز کردن فراخوانی متدهای API ها استفاده از retrofit هست . retrofit به ما اجازه میده که با استفاده از annotation ها بتونیم نوع متدهای مورد استفاده و url هرکدوم رو مشخص کنیم و body مربوط به requestهامون و پارامترهای مربوط به Query رو خیلی راحت اضافه کنیم . همینطور خیلی ساده میتونیم به request مون header اضافه کنیم . همه این امکانات باعث میشه کدهامون خیلی تمیزتر و خواناتر بشن که خیلی نکته مهمی هم هست .

 

 

SUGAR ORM

sugerOrm یه ORM مخصوص اندروید هست ، همونطور که میدونید ORM مخفف Object-relational mapping هست و همونطور که از اسمش معلومه، کاری که orm انجام میده اینکه object های ما رو به نوع داده‌ای قابل ذخیره تو Relational Databaseها تبدیل میکنه و بلعکس . با استفاده از orm میتونیم کارهایی که با استفاده از دستورات طولانی sql انجام میشند رو خیلی ساده انجام بدیم . کد زیر رو در نظر بگیرید .

همونطور که میبینید با ORM میتویند خیلی ساده‌تر عملیات create, read, update و delete رو انجام بدید .

 

PICASSO

Picasso رو هم که حتما باهاش اشنا هستید . این کتابخونه امکان دانلود تصاویر و cache کردن اونها روی memory و دیسک رو میده . همچنین به شما امکانتی مثل resize کردن، برش و امکان تایین فرمت ذخیره سازی هر کدوم از پیکسل‌ها توی حافظه ( ALPHA_8  ARGB_4444 , RGB_565 )و … رو به شما میده که به واسطه اونها میتونید حجم مصرفی memory توسط اپلیکیشنتون رو کاهش بدین .

 

EVENTBUS

این کتابخونه قراره برقراری ارتباط بین بخش‌های مختلف اپلیکیشن رو برای ما ساده‌تر کنه. فرض کنید که میخواید یه متغیری رو از Activity تون به یه سرویس که در حال اجرا هست بفرستید یا یه ارتباط ساده بین fragmentهای موجود تو برناممون ایجاد کنیم. تو مثال پایین وقتی اتصال اینترنت قطع میشه به وسیله eventbus میتونیم هر activity رو که میخوایم از این موضوع باخبر کنیم .

 

همه کتابخونه‌هایی که تو بالا معرفی شد، متن باز هستند و شما میتونید کد مربوط به هرکدوم رو بخونید .