ترکیب چندین فایل ویدئویی با mencoder

26 03 2012

شاید برای شما هم پیش اومده باشه که بخواین چندین فایل ویدئو رو به  به یک فایل ویدئو تبدیل کنید. مثلن وقتی که فیلم از روی ۲ تا CD کپی شده:

$ ls
Citizen Kane cd1.avi
Citizen Kane cd2.avi

خب به راحتی می‌زنم:

$ mencoder -oac copy -ovc copy -forceidx \
"Citizen Kane cd1.avi" \
"Citizen Kane cd2.avi" \
-o "Citizen Kane.avi"

توضیح هم این که این برنامه‌ی mencoder یک برنامست که MPlayer ایجاد کرده برای انکد کردن محتوا‌های چند رسانه‌ای.

آپشن‌هایی هم که استفاده شده به این معنی هستن:

  • oac: کدک صدای خروجی. copy هم به این معنیه که کدک فایل منبع حفظ بشه.
  • ovc: کدک ویدئوی خروجی. copy هم به این معنیه که کدک فایل منبع حفظ بشه.
  • o: فایل خروجی
  • forceindex: ساخت مجدد فایل index.




FriendFeed در خط‌فرمان

9 08 2008

شاید از مخاطب های وب‌نوشت من کمتر کسی باشه که با FriendFeed آشنا نباشه. اگه اینطوره، شما رو دعوت می‌کنم که اینجا رو مطالعه کنید و بعد به خوندن ادامه‌ی مطلب من بپردازین.

این FriendFeed هم مثل خیلی از وبسایت‌های «Web2» ای، API برای کاربرد های خارج از خودش داره. (شاید در آینده در مورد API یه پست مفصل نوشتم!) این API کمک می‌کنه که برنامه‌هایی برای کار کردن با این وبسایت ساخته بشه، حالا چه تحت مرورگر و چه تحت میزکار (این تحت میزکار رو از خودم درآوردم، اگه معادلی براش بلدین، به من هم یاد بدین). از طرفی کاربر‌های گنو/لینوکس و البته هم خانواده‌هاش خیلی راحت می‌تونن با نوشت برنامه‌های ساده‌ای (معروف به Script) و اجرای اون تحت خط‌فرمان به امکانات جالبی دست پیدا کنن. از جمله‌ی این امکانات می‌شه به ارسال Feed به Friend Feed اشاره کرد. دوستانی که Feed‌های من رو توی FriendFeed دنبال می‌کنن شاید دیده باشن که من عکس‌های زیادی می‌فرستم که البته به جایی پیوند داده نشده، اون ها رو از خط‌فرمان ارسال کردم! فکر کنم مقدمه چینی بس باشه.

آقای Paul Buchheit توی وبلاگشون یک Script جالب برای Friend Feed معرفی کردن که من این رو یکم بیشتر توضیح می‌دم تا همه بتونن از این امکان استفاده کنن. البته من مطلب ایشون رو ترجمه نمی‌کنم و البته یه تغییر کوچولو توی Code ایشون دادم. و اضافه کنم که من توضیح‌های زیر رو بر اساس Ubuntu و البته پارسیکس (که فکر می‌کنم میون کاربر‌ها بیشترین کاربرد رو داره) می‌دم ولی اگه از توزیع دیگه‌ای مثل Fedora یا Suse استفاده می‌کنید و متوجه نمی‌شین که من چکار کردم، بگین تا راهنماییتون کنم. اول از همه بذارین پیش‌نیاز رو معرفی کنم. برنامه‌ی cUrl پیش نیاز این Script هستش. برای Ubuntu می‌تونید با دستور زیر نصبش کنید:
sudo apt-get install curl
و پارسیکسی‌های عزیز هم:
su -c 'apt-get install curl'
و البته بگم که توزیع‌های مبتنی بر Debian همه (البته بهتره بگم اکثرشون) به این شکل هستن. برای کاربر‌هایی که دوست ندارن که از خط فرمان استفاده کنن، عرض کنم که از منوی System برین قسمت Administration و بعد Synaptic Package Manager و از اونجا با ابزار‌های اون برنامه، cUrl رو نصب کنید. (این توضیح برای میز کار Gnome بود.)

خب، از اینجا سند مورد نیازمون رو دریافت کنید. البته می‌تونید (و پیشنهاد می‌کنم) که با دستور زیر این کار رو انجام بدین:
wget http://saarblog.files.wordpress.com/2008/08/ff.odt
خب، از اونجایی که وبسایت wordpress.com اجازه‌ی Upload سند‌های بدون پسوند رو به من نمی‌ده، من یه پسوند به سند اضافه کردم، خواهشاً اون پسوند رو با تغییر نام از انتهای اسم سند بردارین و اون رو به ff تغییر نام بدین، اگه با دستور بالا سند رو دریافت کردین، با دستور زیر خیلی راحت سند رو هم تغییر نام بدین:
mv ff.odt ff
حالا می‌تونید سند رو با یک ویرایشگر متن خام، مثل Gedit یا Vim ویرایش کنید، روی فایل دو بار Click کنید و یا از دستور زیر استفاده کنید:
gedit ff
خط پنجم سند، اینطور چیزی نوشته (که این همون قسمتیه که من ویرایشش کردم):
USER="UserName:RemoteKey"
شما به جای Username و RemoteKey مشخصات خودتون رو وارد کنید، اگه نمی‌دونید RemoteKey شما چیه، به این آدرس برین و اون رو به دست بیارین.

خب تا اینجا عالی بود. سند رو ذخیره کنید. اگه دوست دارین از محیط Graphicی استفاده کنید، روی سند Click راست کنید و Properties رو بزنین، به سر برگ Permissions برین و قسمت Execute رو مارک دار کنید. با این کاراجازه‌ی اجرا شدن به این برنامه می‌دین (قابل توجه کسانی که نمی‌دونن: تا مشخصه‌ی «اجرا شونده» به یک سند داده نشه توی Gnu/Linux، اون سند اجرا نمی‌شه، حتی اگه Firefox باشه و حتی اگه Virus باشه!) پنجره‌ی باز رو ببندین. اما دوستانی که خط‌فرمان رو دنبال می‌کنن، دستور زیر معادل مرحله‌ایه که توضیح دادم:
chmod +x ff
خب تا اینجا کار تمومه و می‌تونید از برنامه استفاده کنید. البته برای این کار باید آدرس برنامه رو ذکر کنید که شاید دلچسب نباشه! بیاین این برنامه رو به دستورهای خط فرمانمون اضافه کنیم. البته برای این کار نیاز به دسترسی Super User داریم. اگه از محیط Graphic استفاده می‌کنید، میان‌بر ALT+F2 رو از روی صفحه‌کلید بزنید تا صفحه‌ی Run Application باز بشه. اونجا تایپ کنید:
gksu nautilus
تا مرورگر اسناد باز بشه. به دنبال سندی که دریافت کردین بگردین و روی اون Click راست Mouse رو بزنید و گزینه‌ی Cut رو بزنید (البته می‌شه Copy رو هم زد). بعد به آدرس زیر برین:
/usr/bin
و اونجا از منوی Edit گزینه‌ی Past رو انتخاب کنید. اما دوستان خط فرمانی می‌تونن دستور زیر رو استفاده کنن،Ubuntu کارها دستور:
sudo cp ff /usr/bin/
و پارسیکسی‌های عزیز:
su -c 'cp /usr/bin/'
و کار تمام شد! خب از این به بعد برای ارسال یک Feed به FriendFeed کافیه یک خط فرمان باز کنید و توش دستور زیر رو بنویسید:
ff -t 'متن ارسالی'
و اگه دوست دارین یک پیوند رو هم در Feed داشته باشین، دستور رو به صورت زیر به کار ببرین:
ff -t 'سار' -l 'http://saarblog.wordpress.com'
البته دقت کنید که «L» کوچیک نوشتم و نه یک!

برای ارسال تصویر (ها) هم می‌تونید آدرس اون تصویر (ها) توی حافظه (و نه اینترنت) رو برنامه ارسال کنید:
ff /address/to/pictures
و در آخر هم بگم که تمام حالاتی که گفته شد انتخابی هستش، منظورم اینه که شما می‌تونید مثلا فقط تصوری ارسال کنید یا تصویر رو با یک متن و یک پیوند یا حتی تنها یک پیوند. البته در صورتی که هیچ چیزی به برنامه ارسال نشه، راهنما نشون داده می‌شه. البته یه توضیح کوچولو هم بدم که برای اجرای برنامه می‌تونیم از خط‌فرمان بهره نگیریم و از Run Application استفاده کنیم.

این هم تصویر نمونه

این هم تصویر نمونه

پ‌ن: توی این مطلب سعی کردم فارسی رو بپاسم!
پ‌ن: اگه به مشکلی برخوردین، من در خدمتم!
پ‌ن: سعی کردم مراحل گرافیکی کار رو هم بگم که دوستان خرده نگیرن که توی گنو/لینوکس نمی‌شه بدون خط‌فرمان زندگی کرد! البته کار رو راحت تر و سریع تر می‌کنه.
پ‌ن:‌ من توی Weblog می‌نویسم گلابی خوشمزست، بعضی‌ها به خودشون می‌گرین و میان می‌گن گلابی خودتی! از دست این جماعت!
بعد نوشت: این مطلب در همین مورد رو بخونید: با فرند فید زندگی آنلاین اجتماعی خود را متمرکز کنید





لینوکس رو دوست دارم چون… نسخه سوم، split

30 01 2008

خط-فرمان Gnu/Linux یکی از کامل ترین مجموعه‌های نرم‌افزاری که من تا حالا دیدم. برنامه ای که قبلا معرفی کردم، یکی از زیر مجموعه‌ی این خط‌فرمانه. البته شاید خیلی درست نباشه این جملات من، چطور بگم، خط‌فرمان یک بستر برای نرم‌افزار هاییه که بهش وابسته هستن. کار کردن با خط فرمان شاید اون اوایل خیلی سخت باشه ولی بعد از یه مدت وقتی که درکش بشه، به قدری شیرین و آسونه که بین برنامه های گرافیکی و متنی، متنی رو ترجیح دیده می‌شه. البته یه موقع فکر نکنید که مثل خط‌فرمان Windows هستش! نه، خیلی کامل تر، آسون تر، زیبا تر و هوشمند تر. قابلیت های خیلی زیادی داره، مثلا لوله‌بندی (لوله کشی!) یا خیلی چیز های دیگه. در وصف سهل بودن این خط‌فرمان همین بس که من بعد از یک ماه می‌تونم بیام در موردش مطلب بنویسم!

حتی اساتید وقتی مثلا می‌خوان یه برنامه از مخازن (حالا به این موضوع هم می‌پردازیم) بگیرن و نصب کنن، به جای این که از ابزار کامل و قدرتمند «Synaptic» استفاده کنن، از دستوری مثل «apt-get» استفاده می‌کنن! واقعا هیجان انگیزه.

در مورد این مخازن قبلا یه نیمچه توضیحی دادم، «مخازن» مخزن های برنامه ها و بسته‌ها هستن! گنو/لینوکس برنامه‌هاش رو خودش هم توزیع می‌کنه و شما لازم نیست هِی گوگل کنید تا یه سایت دانلود گیر بیارین بعد توی اون سایت دانلود یه برنامه پیدا و دریافت کنید و بعد بگردین دنبال Crack! توی گنو/لینوکس کافیه که با یکی از ابزار های قدرتمند مدیریت بسته ها و از جمله یکی از آسون ترینشون، «Add/Remove»، اسم برنامه یا توضیح! رو تایپ کنید و یه لیست بلند بالا براتون میاد که اتفاقاRanking هم داره! کنار اسم برنامه تیک می‌زنید و بعد برنامه دریافت و نصب می‌شه! به همین راحتی، به همین خوشمزگی!

گفتم خوشمزه، یاد این del.icio.us افتادم! آقا این ملت هِی می‌نوشتن «خوشمزه» و من هِی نمی‌فهمیدم منظور چیه! تا این که اَندی پیش نقطه های این del.icio.us رو برداشتم و به کلمه «delicious» به معنی «خوشمزه» رسیدم! ایده‌ی جالبی بود، نه؟! «خوشمزه» من رو می‌تونید توی این آدرس ببینید!

اما این پست! باز هم اَندی پیش متوجه شدم که می‌شه توی خط فرمان یک پرونده‌ی بزرگ رو به چندین پرونده‌ی کوچیک تبدیل کرد! خوراک پرونده های حجیم برای اینترنت یا حمل و نقل پرونده ها با حافظه های کم حجم از جمله Floppy Disk.

کار کردن هم باش خیلی آسونه، در راحت ترین حالت کافیه تایپ کنید split و بعد آدرس پرونده ای رو که می‌خواین قسمت قسمتش کنید بنویسد، در این صورت اون پرونده رو به پرونده هایی که 1000 «سطر» توشه تقسیم می‌کنه. البته «سطر» گفتم نه «Byte»، این حالت یا بهتر بگم، مد کاری، بیشتر برای پرونده‌ های متنی مناسبه ولی البته برای پرونده‌های غیر متنی هم می‌شه ازش استفاده کرد. با مثال جلو برم بهتره، من یک پرونده‌ دارم به اسم «kdewebdev-3.5.8.tar.bz2» با حجم «6055535byte» که البته می‌دونید که نزدیک به 6MB هستش. من توی اون پوشه ای که این پرونده‌ هست، دستور زیر رو می‌نویسم:


split kdewebdev-3.5.8.tar.bz2

خروجی دستور 25 تا پرونده‌، با اسم هایی که با x شرو می‌شه و 2 حرف بعدش ادامه داره، اما از خروجی یک لیست می‌گیرم که متوجه بشین:


6055535 kdewebdev-3.5.8.tar.bz2
231423 xaa
225017 xab
225813 xac
218265 xad
266633 xae
241322 xaf
263471 xag
217687 xah
239489 xai
251063 xaj
268824 xak
250660 xal
272641 xam
247741 xan
261805 xao
239534 xap
241567 xaq
226826 xar
243129 xas
246051 xat
241094 xau
214849 xav
265853 xaw
244498 xax
210280 xay

اعداد اول حجم پرونده‌‌هاست و بعدش هم نام اونها. می‌بینید که پرونده‌‌ها حجم مساوی ندارن. البته فراموش نکنید که ما ساده ترین مد کاری رو آزمایش کردیم! توی همین مد کاری ساده می‌تونیم اسم خروجیمون رو هم که حالت پیشفرض «x» هست رو تغییر بدیم، البته بهتربود می‌گفتم که پیشوند اسم و نه خود اسم. برای این کار کافیه که بعد از دستور split و نام پرونده‌، پیشوند خروجی رو بنویسیم، دستور و خروجیش رو ببینید:


split kdewebdev-3.5.8.tar.bz2 ramin
-----------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
231423 raminaa
225017 raminab
225813 raminac
218265 raminad
266633 raminae
241322 raminaf
263471 raminag
217687 raminah
239489 raminai
251063 raminaj
268824 raminak
250660 raminal
272641 raminam
247741 raminan
261805 raminao
239534 raminap
241567 raminaq
226826 raminar
243129 raminas
246051 raminat
241094 raminau
214849 raminav
265853 raminaw
244498 raminax
210280 raminay

همون طور که می‌بینید پیشوند به «ramin» تغییر کرد. اما پسوند! با سوییچ «a» می‌شه که تعداد اون پسوند رو هم تغییر داد، مثال بالا رو با سوییچ a و بعد 5 ببینید:


split -a 5 kdewebdev-3.5.8.tar.bz2 ramin
----------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
231423 raminaaaaa
225017 raminaaaab
225813 raminaaaac
218265 raminaaaad
266633 raminaaaae
241322 raminaaaaf
263471 raminaaaag
217687 raminaaaah
239489 raminaaaai
251063 raminaaaaj
268824 raminaaaak
250660 raminaaaal
272641 raminaaaam
247741 raminaaaan
261805 raminaaaao
239534 raminaaaap
241567 raminaaaaq
226826 raminaaaar
243129 raminaaaas
246051 raminaaaat
241094 raminaaaau
214849 raminaaaav
265853 raminaaaaw
244498 raminaaaax
210280 raminaaaay

خب می‌بینید که چطور شد؟! اما می‌شه به جای پسوند که از حروف تشکیل شده، اعداد رو به کار بست! من این رو ترجیح می‌دم، سوییچ «d» این کار رو می‌کنه. مثال بالا رو با سوییچ d ببینید:


split -da 5 kdewebdev-3.5.8.tar.bz2 ramin
-----------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
231423 ramin00000
225017 ramin00001
225813 ramin00002
218265 ramin00003
266633 ramin00004
241322 ramin00005
263471 ramin00006
217687 ramin00007
239489 ramin00008
251063 ramin00009
268824 ramin00010
250660 ramin00011
272641 ramin00012
247741 ramin00013
261805 ramin00014
239534 ramin00015
241567 ramin00016
226826 ramin00017
243129 ramin00018
246051 ramin00019
241094 ramin00020
214849 ramin00021
265853 ramin00022
244498 ramin00023
210280 ramin00024

خب، جالب شد! اما اگه یادتون باشه گفتیم که به طور پیشفرض پرونده‌ رو به پرونده‌ هایی حاوی 1000 «سطر» تقسیم می‌کنه. می‌شه با سوییچ «l» و بعد تعداد «سطر» اون 1000 پیشفرض رو تغییر داد، من به 10000 تغییرش می‌دم.


split -da 5 -l 10000 kdewebdev-3.5.8.tar.bz2 ramin
--------------------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
2380183 ramin00000
2498778 ramin00001
1176574 ramin00002

من خیلی با این حالت «سطر» بازی کار نمی‌کنم! یه سوییچ داره که خیلی جالبه! به جای «سطر» پرونده‌ های خروجی رو با تعداد «Byte» ها پر می‌کنه و نه تعداد «سطر» ها و این اون چیزیه که می‌خوایم. سوییچ «b» و بعد حجم پرونده‌ خروجی، آسونه نه؟! همون پرونده‌ رو به قطعاتی با حجم «1000000» تقسیم می‌کنم:


split -db 1000000 kdewebdev-3.5.8.tar.bz2 ramin
-----------------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
1000000 ramin00
1000000 ramin01
1000000 ramin02
1000000 ramin03
1000000 ramin04
1000000 ramin05
55535 ramin06

اما جالب تر بود اگه می‌تونستم حجم هر پرونده‌ خروجی رو دقیقا 1Mega Byte کنم؟! نه؟ کافیه به جای «1000000» بنویسم «1m»، دیدین چه باحاله؟!


split -db 1m kdewebdev-3.5.8.tar.bz2 ramin
-------------------------------------------
6055535 kdewebdev-3.5.8.tar.bz2
1048576 ramin00
1048576 ramin01
1048576 ramin02
1048576 ramin03
1048576 ramin04
812655 ramin05

البته می‌دونم که می‌دونید هر «1048576» Byte، یک Mega Byte هستش! البته به جای اون «m» می‌شه از «k» برای هر کیلو Byte و از «b» برای هر 512 Byte استفاده کرد. اما راه برگش این پرونده‌‌ها! اون هم خیلی آسونه، از دستور «cat» استفاده می‌کنیم! چطور؟ برای آخرین مثال، تمام پرونده های خروجی رو می‌ریزم توی یه پرونده‌ به اسم «saar»:


cat ramin* > saar

البته شاید برای اطمینان چک کردن «md5» هر دو تا پرونده‌ (اولی و آخری) بد نباشه، من برای هر دو دستور «md5sum» رو می‌نویسم:


md5sum saar kdewebdev-3.5.8.tar.bz2
6c17c4b71a4d306da4b81a0cfd3116e1 saar
6c17c4b71a4d306da4b81a0cfd3116e1 kdewebdev-3.5.8.tar.bz2

می‌بینید که هر دوتاشون دقیقا یکی هستن، چون حتی اگه یک Byte هم اختلاف داشتن، «md5» شون یکی نمی‌شد! البته بعدا در مورد این «md5» بیشتر توضیح می‌دم. حالا که از صحت پرونده‌مون اطمینان داریم، می‌تونیم پرونده‌ ها قسمت شده رو پاک کنیم:


rm ramin*

دیدین چقدر خط فرمان لذت داره! به همین راحتی می‌شه با Computer به صورت خیلی کامل کار کرد! البته این قسمت خط‌فرمان اونه و نه محیط گرافیکیش! محیط گرافیکی به شدت کامل و آسونی هم داره! Gnome و KDE این محیط های گرافیکی هستن که محیط بسیار آروم، زیبا و دلچسبی رو براتون فراهم می‌کنن. البته برای این که حرفم رو کامل کنم، باید بگم به جز این دو تا محیط گرافیکی، محیط های دیگه‌ای هم وجود داره.








دنبال‌کردن

هر نوشتهٔ تازه‌ای را در نامه‌دان خود دریافت نمایید.