تبلیغات
لینوکس و من - مطالب ابر واترمارک
لینوکس و من

یک اسکریپت برای ایجاد واترمارک روی ویدیو

نویسنده : امین | تاریخ: 1395/05/16

نیاز داشتم به اینکه یک واترمارک روی یک سری ویدیوهای آموزشی قرار بدم. سرچ کردم و روشش رو با ffmpeg پیدا کردم. منتها اگه میخواستی برای هر ویدیو اون دستور طولانی رو اجرا کنی سخت میشد! برای همین از دوستان انجمن فارسی آرچ کمک گرفتم تا یک اسکریپت داشته باشم برای اینکار. آقای Arcush زحمت کشیدن و این اسکریپت رو ساختن.

اول اینکه دستور اولی به این شکل بود:
ffmpeg -i '/PATH/TO/INPUT.flv'  -i /PATH/TO/wm.png -filter_complex '[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
یا
ffmpeg -i '/PATH/TO/INPUT.flv' -i /PATH/TO/wm.png -filter_complex "overlay=15:10" -preset veryfast output.mp4



دستور بالا واترمارکی که در مسیر مشخص شده قرار گرفته روی فایلی که مورد نظر ماست قرار میده و اون رو با نام output.mp4 در پوشه home کاربر میسازه. چیز جالبیه. اما راحت نیست. 15:10 هم یعنی ۱۵ واحد از سمت چپ و ۱۰ واحد از سمت بالا فاصله داشته باشه.
#!/bin/bash 
for k in $(ls *.wmv); do ffmpeg -i "$k" -i ~/wm.png -filter_complex '[0:v][1:v]overlay=15:10[outv]' -map [outv] -map 0:a -c:a copy -c:v libx264 -crf 22 -preset veryfast "new-$k"; done
یا
for k in $(ls *.wmv); do ffmpeg -i "$k" -i ~/wm.png -filter_complex "overlay=15:10" -preset veryfast "new-$k"; done




اگه ما دستور بالا رو به این شکل در بیاریم، و اون رو در یک اسکریپت مثلا با نام addwmall قرار بدیم، و اون رو در پوشه ای که فیلمهای ما قرار دارند اجرا کنیم، فایل wm.png که باید در فولدر ویدیوها موجود باشه به تمام  فایل‌های wmv در پوشه ای که اسکریپت در اون ایجاد میشه اضافه میشه. که این هم خوبه، ولی چیزی که میخواستم اسکریپت پایینی بود که دوست خوبم در انجمن آرچ اون رو نوشت:
#!/bin/bash

path_of_first_file=$(dirname "$1")
name_of_first_file=$(basename "$1")

new_name="new-$(echo "$name_of_first_file.mp4")"
new_output=$(echo "$path_of_first_file/$new_name")

ffmpeg -i "$1"  -i "$2" \
-filter_complex "overlay=15:10" -preset veryfast "$new_output"

echo
echo "New video saved in: " "$path_of_first_file"\/$new_name
با اسکریپت بالا میتونیم دو مقدار فایل ویدیویی و فایل واترمارک رو بهش بدیم، تا یک فایل حاوی واترمارک با نام جدید در کنار فایل ویدیوی قبلی ایجاد بشه. مثلا:
addwm /PATH/TO/INPUT.flv /PATH/TO/wm.png

طبق تجربه ای که در کار با اسکریپت داشتم دریافتم که فایلهای flv وقتی روشون واترمارک میذاریم با کیفیت بدی ذخیره میشن. اگه اونها پسوند mp4 داشته باشن درست میشه. برای همین در اسکریپت بالا اون mp4. رو که برنگ سبز مشخص کردم اضافه کردم تا همه ی فایلهای واترمارک شده mp4 باشن اصلا! بنابراین میتونین اون new_ هم که با نارنجی مشخص کردم حذف کنین. چون مثلا فایلی به اسم video.flv به فایلی به اسم video.flv.mp4 تبدیل میشه و نیازی به new_ نیست.