Wednesday, August 19, 2015

اصول پایه‌ای Expression در افترافکت







Expression یک از ابزارهای بسیار قدرتمند افترافکتِ برای ایجاد حرکت در افتر بدون کی‌فریم! Expression زبانیِ که براساس زبان JavaScript شکل گرفته و برای اتوماتیک کردن برخی کارها در افتر طراحی شده  و همچنین مهم‌ترین کارش انجام دادن کارهایی در افتر است که به نحو دیگر نمی‌شود انجام داد، یعنی غیرممکن است!
کدنویسی تو افتر اونقدرها هم که فکر می‌کنید سخت نیست، درواقع بیشتر اوقات شما نیازی به دست به کیبرد شدن ندارید! ابزارهایی مثل کمند و یا کتابخانه کدهای آماده در افترافکت بیشتر کارها رو میتوانند انجام بدهند. اما درک منطق برنامه‌نویسی به طور کلی و همچنین کمی دانش ریاضی می‌تواند دریچه‌های جدیدی بروی‌تان در افتر باز کند!
خب پس خیالتون رو راحت کنم، قرار نیست اینجا من بهتون JavaScript آموزش بدم، قراره یه سری اصول اولیه کار با Expression رو تو افترافکت بررسی کنیم. اولین چیزی که باید در مورد Expression بدونیم اینه که اصلا از کجا بیاریمش؟! اگر بر روی آیکون Stopwatch [کرونومتر] که کنار هر Property [ویژگی] در افتر قرار داره، با نگه داشتن کلید Alt کلیک کنید، به جای کی‌فریم، قسمت Expression اون ویژگی رو باز میکنه، که میشه یه چیزی مثله این:


 Parent کردن ویژگی یک لایه به لایه دیگر:

یکی از اولین کارهایی میشه با این ابزار انجام داد، Parent کردن دو تا ویژگی یکسان از دوتا لایه‌ی مختلف به همدیگره. برای اینکار بایستی از ابزار کمندی که در قسمت Expression قرار داره استفاده کنید. با این کار میشه هرچند تا لایه رو که میخواین به یک لایه parent کنید تا با تغییر مقدار ویژگی اون لایه‌ی parent بقیه لایه‌ها هم ویژگی‌شون تغییر کنه.


خود افترافکت به صورت اتوماتیک این کد رو تولید میکنه:
thisComp.layer("Null 1").transform.scale
 پس می‌بینید که نیازی به نوشتن ندارید، خب بذارید ببینیم چی نوشته، این خط کد میگه که از همین کامپ، از لایه‌ی "Null 1" از قسمت Transform مقدار ویژگی Scale رو بده به Scale لایه‌ی Sample. اوکی؟ فقط توجه داشته باشید که ساختار  JavaScript به بزرگی و کوچیکی حروف حساس هستش و اصطلاحا case-sensitive هستش. یعنی JavaScript بین thisComp و thiscomp تفاوت قائله، پس حواستون حسابی جمع باشه.

Parent کردن دو ویژگی متفاوت از دو لایه متفاوت:

فرقی با حالت قبلی نداره، یعنی شما میتونید به جای scale، مثلا Point of interest دوربین افتر رو به Position یک لایه دیگه وصل کنید. اینجوری هرجایی که اون لایه بره، دوربین هم به همون سمت میچرخه. این کاریِ که بدون Expression نمیشه انجام داد.

 خب اگه بخواهیم مثلاً Scale یک لایه رو به Opacity یه لایه‌ی دیگه وصل کنیم چی؟ آدمیزاده دیگه، لازمش میشه! اینجا یه مقدار قصه فرق میکنه. مثله قبل با استفاده از کمند، scale رو وصل می‌کنیم به opacity:
temp = thisComp.layer("Null 1").transform.opacity;
[temp, temp]
می‌بینید که کد یه مقدار فرق کرد، چرا؟ برای اینکه شما می‌خواهید ویژگی که یک مقدار داره رو به ویژگی‌ای متصل کنید که دو مقدار داره. در مثال ما opacity دارای مقدار 0 تا 100 است اما ویژگی scale دارای دو مقدار x و y است. پس افتر برای انجام این دستور ابتدا مقدار opacity را در یک متغیر [Variable]  به نام temp ذخیره میکنه و بعد اون رو با استفاده از [temp, temp] به هر دو مقدار scale میده. تو این کد دو تا temp داخل کروشه، نمایانگر x و y هستند. یعنی اگه من بیام کد رو تغییر بدم و به این شکل دربیارم:
 temp = thisComp.layer("Null 1").transform.opacity;
[100, temp]
 تو این حالت مقدار opacity فقط تو محور y تأثیر میذاره و مقدارِ محور x همون 100 میمونه. حالا اگه بخواین مقدار x ویژگی scale، همونی باشه که خودش داره میتونید از این کد استفاده کنید:
temp = thisComp.layer("Null 1").transform.opacity;
[scale[0], temp]
 تو این حالت دارم از یک آرایه [َArray] استفاده میکنم. آرایه‌ها تو JavaScript میتونند چند تا مقدار رو تو خودشون نگه دارند و بعدش هرجا که خواستیم میتونیم با اشاره به عدد، یکی از مقدارهای ذخیره شده در آرایه رو فراخوانی کنیم. اینجا هم scale یه آرایه‌اس که افتر به صورت پیش‌فرض اونو میسازه و دو تا مقدار x و y (و اگه کارتون سه‌بعدی باشه، مقدار z) رو توش ذخیره میکنه. فقط باید حواستون باشه که این شمارش از صفر شروع میشه، یعنی scale[0]   میشه x و scale[1]   میشه y.
این حالت رو مثلاً وقتی که بخواین یک ویژگی رو فقط به یکی از محورهای position بدین متوجه میشین:
thisComp.layer("Null 1").transform.position[1]
 الان اینجا مقدار position[1] رو که همون y باشه به opacity یه لایه‌ی دیگه وصل کردم.

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

پ.ن1: برای اطلاعات بیشتر و همچنین یادگیری  JavaScript میتونید به سایت w3schools مراجعه کنید.
 پ.ن2: وبسایت aescripts یکی از غنی‌ترین پایگاه‌ها برای اسکریپت افترافکتِ. تقریبا واسه هرچیزی یه کدی توش پیدا میشه!

Wednesday, July 29, 2015

دانلود ویدئوهای محدودشده‌ی RTMP

هه، تیتر یه ذره ترسناک شد، قضیه اما ساده‌تر از تیتر مطلبه، شما میخواین یه ویدئو رو از یه سایت دانلود کنید، اما نمیشه! روش‌های مختلفی برای جلوگیری از دانلود ویدئو در اینترنت وجود داره، تکنولوژی RTMP هم یکی از اون خفن‌هاست. ویدئو کم‌کم رو سیستم شما لود میشه، اصطلاحاً بافر میشه، بنابراین حتی IDM هم نمیتونه این نوع پروتکل رو ساپورت کنه. برای اطلاعات بیشتر میتونید به این صفحه‌ی ویکی پدیا مراجعه کنید. اما یه فلسفه‌ای هست تو اینترنت که میگه: هرچیزی که میتونی ببینی، میتونی دانلودش هم بکنی!
این پست، در ادامه پست‌های نحوه دانلود ویدئو هستش که تو سایت قرار دادم. علت اینکه اینقدر این مسئله برام مهمه اینه که دیدن ویدئو برای یه موشن دیزاینر، از نون شب واجب‌تره، خب یکی ممکنه این جمله رو بخونه و بگه خب داداش بشین ببین، دانلودت چیه دیگه؟! اوکی، اگه سرعت اینترنت معقول بود، نیازی به دانلود نبود، میشستی میدیدی و خلاص، اما ما تو ایران زندگی میکنیم و با این اینترنت فقط میشه... بماند.
سایت‌های زیادی از این تکنولوژی استفاده میکنند. تقریبا اکثر سایت‌های معروف مثله آمازون، ادوب و این مورد خاص که ما باهاش کار داریم، سایت کریتیویتی آنلاین. من مشترک خوراک این سایت هستم و گهگداری ویدئوهاشو نگاه میکنم. اما امروز نتونستم، چون اینترنتم ترکیده بود. قبلن بیخیال میشدم اما ایندفعه گفتم برم ببینم چجوری میشه، که شد و اینم راه‌حل من:


مرحله یک: دانلود دو تا نرم‌افزار اوپن سورس
اولی بیس هستش واسه کارمون، اما چون تو محیطه داس برنامه اجرا میشه و نیاز به کدنویسی داره، نرم‌افزار دوم اینکار رو واسمون انجام میده، همونجور که از اسمش بر میاد.
rtmpdump
این واسه ویندوز هستش، ورژن های دیگش اینجاس.
RTMPDumpHelper v1.21

مرحله دوم : صفحه‌‌ای که ویدئوی توش با این تکنولوژی هست رو باز میکنیم. این صفحه مثلن.
مرحله سوم: داخل او فایل زیپی که دانلود کردی چند تا فایل exe هستش که فایل اصلی rtmpdump.exe هستش که نیاز به کد نویسی داره. تو سایت خودش کلی توضیح میده. اما واسه ما زیادی حرفه‌ایه! پس فایل rtmpsrv.exe رو باز میکنیم و بعدش از اون یکی فایل زیپ، فایل RTMPDumpHelper.exe رو باز میکنیم. میبینید که هم rtmpsrv رو شناخته، هم مرورگر رو.

مرحله چهارم: Play! همین!

به محض اجرای اون ویدئو، نرم‌افزار اونو شناسایی میکنه و شروع میکنه به دانلود. سرعت اینترنت رو دارین؟! 17 کیلوبایت!

پس از کمی صبر، دانلود میشه همونجایی که فایل rtmpsrv.exe قرار داره. باقی بقایتان. لذت ببرید.

پ ن 1: گویا اگه صفحه رو ببندی هم دانلود ادامه داده میشه.
پ ن 2: تو اسکرین شات اول نوشته که ارتباط برقرار نشد! مشکل از بندس، دو تا تصویر مال یه لحظه نیسن! فوتوشاپن! ببخشید.



Tuesday, March 10, 2015

فیلم های خارجی در صداو سیما، چطور سانسور می‌شوند؟


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

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

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

اینم لینک خبر تو سایت ایران وایر

پ . ن :
ـ باید اینو بگم که تکنیک روتوسکوپی* فقط واسه سانسور نیست و تو خیلی از شبکه‌ها، مخصوصا خبری، واسه پوشوندن لوگویی که تو بک‌گراند مجری دیده میشه استفاده میشه. به  دلیل عدم تبلیغات اون لوگوی خاص؛ یا تغییر قسمتی از تصویر بدون اینکه محسوس باشه به هر دلیلی.
ـ اینم یه آموزش خوب واسه روتوسکوپی از اندرو کریمر از سایت بی‌نظیر ویدئو کوپایلوت:
http://www.videocopilot.net/tutorials/assisted_suicide/

*روتوسکوپی به مجموعه روش‌هایی که با استفاده از اون بر روی یک ویدئو به صورت فریم به فریم اصلاحاتی انجام میدن گفته میشه. برای اطلاعات بیشتر میتونید به این صفحه ویکی‌پدیا مراجعه کنید. و یا در گوگل واژه‌ی rotoscoping رو سرچ کنید.