قائمة الأجزاء المترجمة من السلسلة:
- الطبخ (أنت هنا)
- ترجمة مع المخطوطات
- تحويل افي إلى mp4
من هذا الجزء سوف تتعلم:
- لماذا كل هذا ضروري؟
- كيفية ترجمة FFmpeg في عامل الميناء
لماذا كل هذا ضروري؟
المهام الرئيسية لسلسلة المنشورات هي كما يلي:
- قم بإنشاء برنامج تعليمي حول استخدام Emscripten لتجميع مكتبات C / C ++ في JavaScript (أكثر تفصيلًا ومفيدًا مما كتب سابقًا)
- مذكرة شخصية
لماذا ffmpeg؟
FFmpeg هو مشروع مجاني مفتوح المصدر ، ويتألف من مجموعة واسعة من المكتبات والبرامج لمعالجة ملفات الفيديو والصوت وملفات الوسائط المتعددة / البث. (من ويكيبيديا)
مكتبة جافا سكريبت التي من شأنها أن توفر مثل هذه القدرات ببساطة غير موجودة. إذا كنت google "ffmpeg.js" ، فستجد عدة حلول مماثلة لما سنفعله:
بالطبع ، يمكن استخدام هذه المكتبات ، لكن بها عيوبها:
- يتم إهمال الإصدارات المستخدمة من FFmpeg و Emscripten
- المشاريع غير مدعومة لفترة طويلة
في البداية ، كنت أخطط لتقديم الدعم لإحدى المكتبات ، ولكن نظرًا لتراكم العديد من التغييرات على مر السنين ، قررت أن أفعل كل شيء من البداية ، وأنشئ في الوقت نفسه برنامجًا تعليميًا حول استخدام برنامج Emscripten لتجميع مكتبة C / C ++ كبيرة.
كيفية ترجمة FFmpeg في عامل الميناء
أولاً ، نقوم باستنساخ مصادر FFmpeg ، وبما أنه يتم استخدام الفرع الرئيسي للتطوير ، فسنختار الفرع بإصدار محدد.
في وقت كتابة البرنامج التعليمي ، كان أحدث إصدار من FFmpeg هو 4.1.4 ، لذلك سوف نستخدمه.
$ git clone --depth 1 --branch n4.1.4 https://github.com/FFmpeg/FFmpeg
- يعتبر الرقم 1 اختياريًا ، ولكن هذا سيزيد من سرعة الاستنساخ نظرًا لأننا لسنا بحاجة إلى تنزيل جميع الإلتزامات.
بعد الاستنساخ الناجح ، قم بتجميع المصادر باستخدام gcc للتأكد من أن كل شيء يعمل.
بالطبع ، يمكنك تخطي هذه الخطوة ، لكن تجربتي تقول إنه من الجيد دائمًا لمس نظام الإنشاء أولاً. (تستخدم FFmpeg ماركة قياسية ، وهي أسهل في النقل من Bazel)
يمكن العثور على إرشادات ترجمة FFmpeg وتثبيته في ملف INSTALL.md الموجود في الدليل الجذر:
# تثبيت FFmpeg:
1. اكتب `. / تكوين` لإنشاء التكوين. يمكن الحصول على قائمة خيارات التكوين من خلال تنفيذ `config - help`.
يمكن تكوين `config` من دليل آخر غير مصدر FFmpeg. للقيام بذلك ، مرر المسار المطلق للتهيئة ، على سبيل المثال `/ ffmpegdir / ffmpeg / configra`.
2. الآن اكتب `make` لبناء FFmpeg. ستحتاج إلى GNU Make 3.81 أو أعلى.
3. اكتب `make install` لتثبيت الثنائيات والمكتبات.
إشعار
- - -
- يتم تعطيل التبعيات بخلاف النظام (مثل libx264 ، libvpx) افتراضيًا.
بما أننا لن نقوم بتثبيت FFmpeg ، فلن يلزمك سوى الخطوتين الأولين.
عند التجميع باستخدام gcc ، سنستخدم Docker لإنشاء بيئة من شأنها عزل العملية بأكملها وتحقيق توحيدها على أجهزة مختلفة.
لنقم بإنشاء نص برمجي bash- مع docker.sh في الدليل الجذر بالمحتويات التالية:
#!/bin/bash docker pull gcc:4 docker run -it \ -v $PWD:/usr/src \ gcc:9.1 \ sh -c 'cd /usr/src && ./configure --disable-x86asm && make -j4'
- يجب أن يضاف -disable-x86asm كما يطلب ffmpeg ذلك
قم بتشغيل البرنامج النصي:
$ chmod +x build-with-docker.sh $ ./build-with-docker.sh
بناءً على سرعة اتصالك بالإنترنت والأجهزة الخاصة بك ، سيستغرق التجميع حوالي 10-30 دقيقة.
لاحظ أنك سترى العديد من التحذيرات ، لأن gcc 9.1 أكثر صرامة من الإصدارات السابقة. هذا طبيعي.
إذا تم إكمال كل شيء بنجاح ، يمكنك تجربة تشغيل ffmpeg :
$ ./ffmpeg
أو
$ docker run -it -v $PWD:/usr/src gcc:9.1 /usr/src/ffmpeg
سترى شيء مثل:
إصدار ffmpeg n4.1.4 حقوق النشر 2000-2010 لمطوري FFmpeg
بنيت مع مجلس التعاون الخليجي 9.1.0 (دول مجلس التعاون الخليجي)
التكوين: - تعطيل x86asm
libavutil 56.22.100 / 56.22.100
libavcodec 58.35.100 / 58.35.100
libavformat 58.20.100 / 58.20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
فرط سريع الصوت والفيديو التشفير
الاستخدام: ffmpeg [خيارات] [[خيارات infile] -أنا infile] ... {[خيارات outfile] outfile} ...
استخدم -h للحصول على المساعدة الكاملة أو ، على نحو أفضل ، تشغيل "man ffmpeg"
في الجزء التالي ، سنبدأ في تجميع FFmpeg باستخدام Emscripten.