إنّ العمل مع الوسائط غالبًا يتطلب تغيير خصائص ملفات الوسائط مثل معدل نقل البيانات أو درجة الدقة يمكن أن يؤدي العثور على طريقة مباشرة للبدء مخيفًا جدًا. في هذه الصفحة، ستتعرف على الأدوات المستخدمة وكيفية لتثبيتها بسرعة.
أولاً، سنوضّح الاستخدام الأساسي لأداتَي مساعدة شائعتَين للوسائط من سطر الأوامر: Shaka Packager وFFmpeg وسنساعدك في تثبيت الأدوات بسرعة. ما أهمية تغطية تطبيقين؟ في حين أن كلاهما قوي ومفيد في حد ذاته، فضلاً عن ذلك، لم تعد كل الأشياء اللازمة لإعداد الوسائط على الويب. أنشأنا أيضًا مخطط تحويل الوسائط وتشفير الوسائط الصفحات التي تعرض العديد من العمليات الأكثر شيوعًا باستخدام هذين التطبيقين.
هذه التطبيقات ليست الخيارات الوحيدة المتاحة لمهام معالجة الملفات، لكنهما من أكثر الأدوات شيوعًا وقوة. تشمل الخيارات الأخرى واجهة المستخدم الرسومية التطبيقات Miro وHandBrake وVLC هناك أيضًا ترميز/تحويل ترميز خدمات مثل Zencoder وAmazon Elastic Encoder وGoogle Transcoder API.
شاكا باجر
Shaka Packager هي حزمة SDK مجانية لتغليف الوسائط. إذا كنت تستخدم مشغّل وسائط على موقعك، فإن Shaka Packager هو ما ستستخدمه لإعداد الملفات. أُنشأها جون هنتر، الذي كان متخصصًا يدعم التحويل بروتوكولي بث الفيديو الأكثر شيوعًا: الديناميكي البث المباشر التكيُّفي عبر HTTP (DASH) أو البث المباشر عبر HTTP (HLS) شاكا يدعم Packager ميزات الأمان الرئيسية: التشفير الشائع وتقنيات Widevine الرقمية إدارة الحقوق (DRM). ويمكنه أيضًا معالجة أحداث البث المباشر والفيديو عند الطلب.
رغم ما ورد في الحزمة، فإن هذه الأداة تُستخدم لأكثر من C++ المطورين. ويمكنك استخدامها كمكتبة لإنشاء برامج وسائط وكمية أداة سطر أوامر لإعداد ملفات الوسائط لتشغيلها على الويب. إنها والقدرة الأخيرة التي تفيدنا هنا. في الواقع، بالنسبة إلى منشئي الوسائط على الويب Shaka Packager هي الطريقة الوحيدة لأداء بعض المهام دون إنفاق أموال على التجارية باهظة الثمن.
فيما يلي النمط الأساسي لأمر Shaka Packager:
packager stream_descriptor [stream_descriptor-2 [stream_descriptor-n]] [flags]
ليس هذا تمامًا ما يظهر لك عند كتابة packager -help
. هذا المثال هو
أسهل في الاستنتاج، وهذا يعكس الأمثلة الموجودة في
مستندات Shaka Packager: يُرجى العلم أنّ هناك العديد من أنواع stream_descriptor
.
العناصر في النمط. على الرغم من أنّنا لا نعرض هذا العنوان، يمكنك التلاعب بالفيديو.
وعمليات البث الصوتي لملف بشكل منفصل في أمر واحد.
قارن هذا النمط الأساسي مع استخدام بسيط يعرض خصائص الملف. في المثال، وضعنا الأجزاء المكافئة في مصفوفة.
packager stream_descriptor [stream_descriptor-n] [flags]
packager input=glocken.mp4 --dump_stream_info
ينتج عن الأمر ما يلي:
File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
codec_string: avc1.640028
time_scale: 30000
duration: 300300 (10.0 seconds)
is_encrypted: false
codec: H264
width: 1920
height: 1080
pixel_aspect_ratio: 1:1
trick_play_factor: 0
nalu_length_size: 4
Stream [1] type: Audio
codec_string: mp4a.40.2
time_scale: 48000
duration: 481280 (10.0 seconds)
is_encrypted: false
codec: AAC
sample_bits: 16
num_channels: 2
sampling_frequency: 48000
language: eng
seek_preroll_ns: 20833
البحث عن الخصائص التي تمت مناقشتها في أساسيات ملفات الوسائط ولاحظت بعض الأشياء. الارتفاع والعرض صحيحان للدقة الكاملة، تعتبر برامج ترميز الصوت والفيديو من برامج الترميز المفضلة لأنواع الحاويات، الترميز المتقدّم للصوت وH264 للفيديو. لاحظ أيضًا أنه يتم تحديد مجموعات البث باستخدام الأرقام. وهي مفيدة للعمليات التي تعالج الصوت والفيديو على حدة.
يُرجى العلم أنّ النتائج أعلاه لا تعرض معدل نقل البيانات. وبالرغم من ما هو مفقود، فإن هذا الإخراج أسهل في القراءة، لذا نستخدمه كلما استطعنا. عندما نحتاج التي لا يستطيع Shaka Packager الحصول عليها، مثل معدل نقل البيانات، فإننا نستخدم FFmpeg.
FFmpeg
FFmpeg هي أيضًا تطبيق مجاني للتسجيل والتحويل والبث. وملفات الوسائط. إنّ إمكاناته ليست أفضل أو أسوأ من إمكانات Shaka Packager. إنهما مختلفان تمامًا.
يبدو النمط الأساسي لأمر FFmpeg كما يلي:
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
وكما هو الحال مع Shaka Packager، يمكن لهذا التطبيق التعامل مع عمليات بث متعددة. سيتم تضمين يتم استخدام الخيارات في مواقع متعددة وتتعامل مع إخراج الملف بشكل مختلف حسب مكان وجودهم في الأمر. انتبه إلى هذا الأمر راجِع أسئلة FFmpeg على Stack Overflow ومواقع إلكترونية مشابهة.
سنقارن مرة أخرى النمط الأساسي بمثال عرض الملف وسماتها الشخصية.
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
ffmpeg -i glocken.mp4
بالإضافة إلى المعلومات التي طلبناها، تظهر رسالة خطأ أيضًا. كما هو موضح في المثال أدناه. هذا لأن هذا الأمر غير صحيح من الناحية الفنية استخدام FFmpeg. ونحن نستخدم هذه المعلومات لأنه يعرض معلومات تهمّنا.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.17.100
Duration: 00:01:47.53, start: 0.000000, bitrate: 10715 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 10579 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
تثبيت التطبيقات باستخدام Docker
إذا كنت تخطط للمتابعة وتجربة أوامرنا، فيمكنك إما تثبيت الأدوات المطلوبة يدويًا، أو اتخاذ المسار السهل واستخدام Docker. نقترح استخدام Docker، لأنّ هذا سيوفّر لك الكثير من الوقت. بالإضافة إلى ذلك، قمنا قد قدمت التعليمات لإعدادك بسرعة.
ابدأ بإنشاء دليل جديد في مكان ما على جهاز الكمبيوتر باسم
media-tools
؛ يمكنك استخدام أي اسم تريده، ولكن يُرجى ملاحظة أن التعليمات التالية لنفترض أنّك تستخدمmedia-tools
كاسم للدليل.أنشِئ الدليل
docker
وmedia
داخلmedia-tools
. سيؤدي ذلك إلى الحفاظ على دليلmedia
خارج سياق الإصدار. هذا مهم لأنّmedia
هو المكان الذي يتم فيه تخزين الملفات التي نخطّط لإجراء عمليات عليه، وبعضها قد يكون كبيرًا جدًا. جارٍ وضعDockerfile
مباشرةً في سيعملmedia-tools
على إبطاء بناء الصورة إذا أعدت بنائها في أي وقت — ربما تغيير الإصدارات المثبتة.أنشئ
/media-tools/docker/Dockerfile
، وأضِف تعليمات الإصدار التالية:FROM google/shaka-packager:release-v2.4.3 as packager FROM jrottenberg/ffmpeg:4.3.2-alpine38 COPY --from=packager /usr/bin /usr/bin ENTRYPOINT ["sh"]
إنشاء الصورة:
docker build -t media-tools ./docker
شغِّل الصورة كواجهة تفاعلية. في نظام التشغيل Linux:
docker run -w /media -v ${PWD}/media:/media -it --rm media-tools /media #
في نظام التشغيل Windows:
docker run -w /media -v %cd%/media:/media -it --rm media-tools /media #
أثناء تشغيل الصورة، يمكنك التحقق من إصدارات كل من FFmpeg وShka Packager
للتحقّق من أنّ كل شيء ناجح من خلال تشغيل ffmpeg -version
packager --version
من المفترض أن تبدو النتيجة على النحو التالي:
/media # ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
/media # packager --version
packager version v2.4.3-dd9870075f-release
الآن بعد أن جربت استخدام Shaka Packager وFFmpeg، يمكنك المتابعة للتعرّف على المفاهيم الأساسية، سننتقل إلى الخطوة التالية أساسيات بث الوسائط.