برنامه نویسی

تنظیم وضوح ویدیوی اصلی در زنگ زدگی با FFMPEG در 3 دقیقه

مقدمه

تنظیم وضوح ویدیویی یک کار معمول در پردازش فیلم است. این که آیا شما در حال تغییر اندازه یک فیلم برای پخش در دستگاه های مختلف-مانند تلفن ها ، تبلت ها یا تلویزیون-یا کاهش اندازه پرونده برای ذخیره ذخیره و پهنای باند هستید ، تنظیم وضوح یک مهارت ضروری است. FFMPEG ابزاری برای این کار است ، اما رابط کاربری خط فرمان آن می تواند با گزینه های بی پایان و نحو پیچیده خود احساس غرق کند. برای توسعه دهندگان زنگ زدگی ، ادغام FFMPEG به طور مستقیم در یک پروژه نیز می تواند کاملاً مشهور و مستعد خطاها باشد. بنابراین ، چگونه می توانید این روند را در زنگ زدگی ساده کنید؟ در این مقاله ، من یک روش تمیز و کارآمد برای تنظیم وضوح فیلم با حداقل دردسر به شما نشان خواهم داد.


چرا این مشکل است و چگونه زنگ می تواند کمک کند

کار با وضوح ویدیو در Rust اغلب با چند سردرد همراه است:

  • منحنی یادگیری شیب دار: گزینه های خط فرمان FFMPEG و نحو فیلتر ، به ویژه برای تازه واردان زمان لازم است.
  • دستورات مستعد خطا: نوشتن دستورات FFMPEG به صورت دستی می تواند منجر به اشتباهات ، به ویژه با فیلترهای پیچیده شود.
  • یکپارچه سازی: تخم ریزی فرآیندهای خارجی از زنگ زدگی برای اجرای FFMPEG برای مدیریت و رسیدگی به خطاهای نیاز به کد اضافی دارد.

یک رویکرد بهتر؟ از یک کتابخانه زنگ زدگی استفاده کنید که قدرت FFMPEG را در یک API ساده و سازگار با توسعه دهنده قرار می دهد. این به شما امکان می دهد به جای کشتی گیری با Quirks FFMPEG ، روی منطق پروژه خود تمرکز کنید.


شروع سریع: تغییر اندازه یک ویدیو در زنگ زدگی

بیایید بگوییم که شما در حال ساخت یک برنامه به اشتراک گذاری ویدیویی هستید. یک کاربر بارگذاری می کند test.mp4، و شما باید آن را به عرض 1280 پیکسل تغییر دهید و در حالی که نسبت ابعاد را دست نخورده نگه دارید و آن را ذخیره کنید output.mp4بشر این یک نیاز متداول به سازگاری دستگاه یا بهینه سازی پرونده است. در اینجا نحوه انجام آن در زنگ زدگی آورده شده است:

مرحله 1: FFMPEG را نصب کنید

ابتدا اطمینان حاصل کنید که FFMPEG روی سیستم شما نصب شده است. در اینجا نحوه تنظیم آن آورده شده است:

مگس:

brew install ffmpeg
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ویندوز:

# Using vcpkg
vcpkg install ffmpeg
# Tip: Set the VCPKG_ROOT environment variable if you’re new to vcpkg
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: وابستگی زنگ زدگی را اضافه کنید

در شما Cargo.toml، این وابستگی کتابخانه را درج کنید:

[dependencies]
ez-ffmpeg = "*"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 3: کد را بنویسید

ایجاد a main.rs پرونده و اضافه کردن این:

use ez_ffmpeg::FfmpegContext;

fn main() {
    FfmpegContext::builder()
        .input("test.mp4")          // Input video file
        .filter_desc("scale=1280:-1") // Resize to 1280px width, auto-height
        .output("output.mp4")       // Output file
        .build().unwrap()           // Create the processing context
        .start().unwrap()           // Kick off the process
        .wait().unwrap();           // Wait for it to finish
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کد را اجرا کنید ، و voilà – تغییر اندازه شما output.mp4 آماده است در مقایسه با دستورات RAW FFMPEG ، این کوتاه تر ، تمیزتر و کمتر احتمال دارد که شما را به سمت بالا سفر کند.


چگونه کار می کند

در اینجا یک شکست سریع کد وجود دارد:

  • .input("test.mp4"): ویدیوی منبع را تنظیم می کند.
  • .filter_desc("scale=1280:-1"): این فیلم را با عرض 1280 پیکسل تغییر می دهد ، با -1 محاسبه خودکار ارتفاع برای حفظ نسبت ابعاد.
  • .output("output.mp4"): تعریف می کند که نتیجه به کجا می رود.
  • روش های زنجیره ای: .build()با .start()وت .wait() تنظیم ، اجرای و تکمیل را در یک جریان مرتب انجام دهید.

برای مرجع ، دستور FFMPEG معادل آن است ffmpeg -i test.mp4 -vf scale=1280:-1 output.mp4بشر با زنگ زدگی ، شما از فرماندهی دستی استفاده می کنید و یک راه حل قابل حفظ تر دریافت می کنید.


نمونه های دنیای واقعی

ترفندهای وضوح در انواع پروژه ها ارائه می شود. در اینجا چند سناریو و نحوه رسیدگی به آنها وجود دارد:

1. وضوح ثابت (به عنوان مثال ، 640×480)

برای یک اندازه خاص ، مانند نصب یک دستگاه قدیمی تر:

.filter_desc("scale=640:480")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Heads-up: اگر نسبت ابعاد مطابقت نداشته باشد ، این فیلم را کشیده یا کدو می کند.

2. تغییر اندازه تک بعدی با نسبت ابعاد

برای تنظیم ارتفاع به 720 پیکسل و حفظ نسبت ها:

.filter_desc("scale=-1:720")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

عرض به طور خودکار تنظیم می شود – بدون تحریف.

3. مقیاس متناسب

برای کوچک کردن فیلم به نیمی از اندازه اصلی آن:

.filter_desc("scale=iw*0.5:ih*0.5")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اینجا iw (عرض ورودی) و ih (ارتفاع ورودی) به شما اجازه می دهد بر اساس منبع به صورت پویا مقیاس شود.

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


چرا این مهم است

استفاده از FFMPEG به طور مستقیم در پروژه های زنگ زدگی می تواند یک شعار باشد – در کنار گذاشتن نحو ، دستورات اشکال زدایی و مدیریت فرآیندها زمان لازم است. یک کتابخانه زنگ زدگی مانند این فیلمنامه را تلنگر می زند:

  • صرفه جویی در وقت: دیگر با پارامترهای قوسی روبرو نیست.
  • خطاها را کاهش می دهد: روشهای زنجیر شده دستورات نوع دستی را ضرب و شتم کنید.
  • انعطاف پذیر می ماند: با حداقل ترفندها به نیازهای شما تنظیم می شود.

این که آیا شما در حال تهیه یک ابزار رمزگذاری ، آماده سازی فیلم ها برای پخش متقابل دستگاه یا کاهش هزینه های ذخیره سازی هستید ، این رویکرد شما را سریعتر می کند.

🔗 بررسی کنید: ez-ffmpeg در GitHub

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا