الحاويات وبرامج الترميز

Derek Herman
Derek Herman
Joe Medley
Joe Medley

لتتوافق مع متصفّحات متعددة، عليك استخدام FFmpeg لتحويل ملف .mov إلى حاويتَين مختلفتَين: حاوية MP4 وحاوية WebM. في الممارسة الفعلية، من المرجّح أن تحدّد برنامج ترميز في الوقت نفسه. في الوقت الحالي، نسمح لبرنامج FFmpeg باستخدام الإعدادات التلقائية.

إذا كانت هذه المفاهيم جديدة بالنسبة إليك، عليك قراءة أساسيات ملفات الوسائط قبل المتابعة. بالإضافة إلى ذلك، إذا لم يكن لديك FFmpeg مثبّتًا، يمكنك الاطّلاع على أساسيات تطبيق الوسائط لإعداده باستخدام Docker.

نستخدم عملية تثبيت Docker المقترَحة وملف glocken.mov من مقالة إعداد ملفات الوسائط للويب المُضافة داخل دليل media. لقد استخدمنا الإصدار 4.3.2 من FFmpeg لجميع الأوامر الواردة في هذا القسم.

الحاويات

أولاً، علينا إنشاء حاويتَين من ملف .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 # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

برامج الترميز

بعد ذلك، ترميز الفيديو. كما هو موضّح في أساسيات ملفات الوسائط، فإنّ ترميز الفيديو ليس هو نفسه الحاوية (نوع الملف). يمكن أن يحتوي ملفان من نوع الحاوية نفسه على بيانات مضغوطة باستخدام برامج ترميز مختلفة. على سبيل المثال، يتيح تنسيق 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
opus WebM libopus
vorbis WebM libvorbis

سنوضّح لك بعد ذلك كيفية تغيير معدل نقل البيانات للملفات التي أنشأتها حديثًا.