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

ديريك هيرمان
ديريك هيرمان
جو ميدلي
جو ميدلي

لإتاحة استخدام عدة متصفحات، يجب استخدام أداة 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% من الفيديو الأصلي. يمكنك الاطّلاع على ذلك بنفسك باستخدام أمر bash ls -a في المجلد الذي تتوفّر فيه ملفات الوسائط.

مثال:

/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 وShka 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
عمليّ WebM ليبوبوس
فوربيس WebM ليبفوربيس

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