کانتینرها و کدک ها

درک هرمان
Derek Herman
جو مدلی
Joe Medley

برای پشتیبانی از چندین مرورگر، باید از FFmpeg برای تبدیل فایل .mov خود به دو کانتینر مختلف استفاده کنید: یک ظرف MP4 و یک کانتینر WebM. در عمل واقعی، احتمالاً یک کدک را در همان زمان مشخص می کنید. در حال حاضر، ما به FFmpeg اجازه می دهیم از پیش فرض های خود استفاده کند.

اگر این مفاهیم برای شما جدید است، قبل از ادامه مطلب باید اصول فایل Media را بخوانید. علاوه بر این، اگر FFmpeg را نصب نکرده‌اید، اصول برنامه Media را بخوانید تا آن را با Docker راه‌اندازی کنید.

ما از نصب پیشنهادی Docker و فایل glocken.mov از فایل‌های رسانه‌ای آماده برای وب اضافه شده در فهرست media استفاده می‌کنیم. برای تمام دستورات این قسمت از FFmpeg نسخه 4.3.2 استفاده کردیم.

ظروف

ابتدا باید دو کانتینر خود را از فایل .mov با پسوندهای .mp4 و .webm با هر دو جریان صوتی و تصویری در داخل فایل ایجاد کنیم. اگر تفاوت بین آنها را نمی دانید برای اطلاعات بیشتر در مورد کانتینرها و جریان ها ، اصول فایل رسانه را مرور کنید.

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

ایجاد WebM بیشتر از MP4 طول می کشد. وقتی به نتایج نگاه می کنید تعجب آور نیست. در حالی که MP4 به حدود 83% از اندازه فایل اصلی فشرده می شود، WebM به 78% از اندازه فایل اصلی کاهش می یابد، اما می تواند بسیار کوچکتر باشد. نتایج شما متفاوت خواهد بود. لازم به ذکر است که FFmpeg 4.2.2 نرخ بیت پیش‌فرض ویدیو را روی 200k تنظیم می‌کند و در 4.3.2 نرخ بیت پیش‌فرض را تنظیم نمی‌کند. بنابراین ویدیو دیگر تنها 4% از نسخه اصلی نیست. می‌توانید با استفاده از دستور ls -a bash در پوشه‌ای که فایل‌های رسانه‌ای شما در آن قرار دارند، این را برای خودتان ببینید.

مثلا:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

برای دریافت یک فایل کوچک، به جای آن این کار را انجام دهید:

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

کارتو چک کن

برای تأیید نتایج، از FFmpeg و Shaka Packager همانطور که قبلاً در اصول Media Application نشان داده شده است استفاده کنید:

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

کدک ها

بعد، کدک. همانطور که در اصول فایل Media گفته شد، یک کدک با یک ظرف (نوع فایل) یکسان نیست . دو فایل از یک نوع کانتینر می توانند داده ها را با استفاده از کدک های مختلف فشرده نگه دارند. برای مثال، فرمت WebM اجازه می دهد تا صدا با استفاده از Vorbis یا Opus رمزگذاری شود. برای تغییر کدک از FFmpeg استفاده می کنیم. به عنوان مثال، این دستور یک فایل .mkv را با یک کدک صوتی vorbis و یک کدک ویدیویی av1 خروجی می دهد.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

در این مثال، پرچم -c:a و -c:v به ترتیب برای تعیین کدک های صوتی و تصویری هستند.

صفحه تبدیل رسانه دستورات لازم برای تبدیل کدک ها را فهرست می کند. جداول زیر کتابخانه های مورد استفاده در FFmpeg را برای انجام تبدیل کدک برای فایل های WebM و MP4 خلاصه می کند. اینها فرمت هایی هستند که به ترتیب برای DASH و HLS توصیه می شوند.

ویدئو

کدک افزونه کتابخانه
av1 WebM، mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

سمعی

کدک افزونه کتابخانه
aac MP4 aac
اپوس WebM لیبوپوس
گرداب WebM libvorbis

در مرحله بعد، ما به شما نشان خواهیم داد که چگونه نرخ بیت فایل های تازه ایجاد شده خود را تغییر دهید.