تبلیغات
لینوکس و من - فیلم برداری از دسکتاپ با ffmpeg (کامل تر شد)
لینوکس و من

فیلم برداری از دسکتاپ با ffmpeg (کامل تر شد)

نویسنده : محسن شایان | تاریخ: 1394/09/7

برای فیلم‌برداری از دسکتاپ نرم‌افزارهای زیادی هست ولی ffmpeg ساده‌ترین راه برای اینکار هست مخصوصاً اگر با alias ها راه‌ترش هم بکنید.
من خودم از این روش استفاده می‌کنم چون دسکتاپ من 1680x1050 هست اینجا هم به همین صورت هست پس تغییرش بدید به اندازه تصویرتون.
برای بدست آوردن نسبت تصویر اگر xrandr در توزیع شما استفاده شده باشه با این دستور به راحتی نمایش میده:
xrandr | grep \* | awk '{print $1}'
   3200x1800


و مقدار اندازه تصویر خودتون رو در دستور زیر قرار بدید:
echo "alias capture='ffmpeg -loglevel panic -video_size 3200x1800 -framerate 25 -f x11grab -i :0 output.mp4'" >> ~/.bashrc

از این پس Terminal رو باز کنید و capture رو بنویسید و اینتر بزنید خودکار شروع به ضبط کردن میشه تا وقتی که q رو بزنید و متوقفش کنید.

اگر میخواید صدا هم همراه فیلم ضبط بشه، برای pulse audio این دستور:
 ffmpeg -loglevel panic -video_size 1366x768 -framerate 25 -f x11grab -i :0 -f pulse -ac 2 -i default output.mkv


و برای ALSA این دستور رو بجای دستور اول قرار بدید.
 ffmpeg -loglevel panic -video_size 1024x768 -framerate 25 -f x11grab -i :0 -f alsa -ac 2 -i hw:0 output.mkv


میتونید یک alias جدا برای ویدیو با صدا مثلا acap و یکی برای بدون صدا مثلا vcap تعیین کنید.

اگر ازffmpeg -loglevel panic استفاده کنید یک ترمینال کاملا پاک خواهید داشت و فقط خطاها نمایش داده میشن.

ویرایش جدید:
میتونیم از این اسکریپت ها استفاده کنیم. برای ضبط بدون صدا:
#!/bin/bash
scr="$(xrandr | grep \* | awk '{print $1}')"
filename="$(date +%F_%H:%M:%S.mp4)"

echo "Capturing screen... Press q to stop."
ffmpeg -loglevel panic -video_size $scr -framerate 25 -f x11grab -i :0 $filename
echo "Video file saved to ~/$filename"



و برای ضبط با صدا:
#!/bin/bash
scr="$(xrandr | grep \* | awk '{print $1}')"
filename="$(date +%F_%H:%M:%S.mp4)"

echo "Capturing screen with audio... Press q to stop."
ffmpeg -loglevel panic -video_size $scr -framerate 25 -f x11grab -i :0 -f pulse -ac 2 -i default $filename
echo "Video file saved to ~/$filename"

توضیح:
یه متغیر به اسم scr تعریف کردیم و بجای رزلوشن قرار دادیم که دیگه لازم نباشه اول با xrandr مقدارش رو پیدا کنید و توی دستور بنویسید. خود اسکریپت این کار رو برای ما میکنه.
و یک متغیر دیگه به نام filename درست کردیم که اسامی ویدیو هایی که ذخیره میشن بر اساس تاریخ و زمان باشن. این خیلی راحت تره تا اینکه همه ویدیو ها هم نام باشن و اگه بخوایم نگهشون داریم تک تک اسمهاشون رو عوض کنیم! با این کار ویدیوها در فایلهای جدا و با اسمهای مختلف ذخیره میشن.

1394/09/7 18:37
فیلم رو کامل ضبط نمیکنه. خیلی کم ضبط کرد!
پاسخ محسن شایان : یعنی چی کامل چه مدتی ضبط کرد ؟ لینک زیر رو ببین شاید بدردت خورد.

https://trac.ffmpeg.org/wiki/Capture/Desktop
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر

برای کپی پیست کردن در متن نظرات کلید shift را نگه دارید و بعد right click کنید.