استخدم ffmpeg لإضافة ترجمات نصية


Answers

استخدم مكتبة libass (تأكد من أن تثبيت ffmpeg يحتوي على المكتبة في التكوين --enable-libass ).

أولاً تحويل الترجمة إلى تنسيق .ass :

ffmpeg -i subtitles.srt subtitles.ass

ثم أضفهم باستخدام فلتر فيديو:

ffmpeg -i mymovie.mp4 -vf ass=subtitles.ass mysubtitledmovie.mp4
Question

أحاول إضافة ترجمة نصية إلى حاوية .mp4 باستخدام ffmpeg:

ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4

عندما أحاول تشغيل هذا الخط ، يعطيني خطأ:

يجب أن تطابق Nmber من خرائط الدفق عدد تدفقات الإخراج.

إذا حاولت تغيير mp4 إلى mkv (على الرغم من أن mp4 تدعم الترجمة النصية) ، على النحو التالي:

ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv

فإنه يعيّن التدفقات بشكل صحيح ، لكنه يعطي خطأً:

لم يتم العثور على برنامج الترميز (كود الترميز 94210) لتيار المخرجات رقم 0.2

عندما أطلق

ffmpeg -codecs

أستطيع أن أرى أن ترميز srt مدعوم كجهاز فك التشفير والترميز ، لكنني لست متأكداً من ما هو مستخدم للتشفير الفرعي mp4 و mkv ، وما إذا كنت بحاجة إلى تشغيله أو تحويله بشكل منفصل.




تدعم حاوية MKV برامج ترميز الفيديو والصوت تقريبًا أي شيء وأيضًا تدعم ترجمات وقوائم DVD. حتى تتمكن من نسخ برامج الترميز من إدخال الفيديو إلى إخراج الفيديو مع حاوية MKV مع ترجمات. أولا يجب عليك تحويل SRT إلى ASS تنسيق العنوان الفرعي

ffmpeg -i input.srt input.ass

وتضمينها ترجمات ASS للفيديو

ffmpeg -i input.mp4 -i input.ass -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 1:0 -y out.mkv

عملت أيضا مع ملف VMW.

ffmpeg -i input.wmv -i input.ass -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 1:0 -y out.mkv

راجع صفحة الويكي مقارنة بين تنسيقات الحاويات




حاولت استخدام MP4Box لهذه المهمة ، لكنه لم يستطع التعامل مع M4V كنت تتعامل مع. نجحت في تضمين SRT كترجمات لينة مع ffmpeg باستخدام سطر الأوامر التالي:

ffmpeg -i input.m4v -i input.srt -vcodec copy -acodec copy -scodec copy -map 0:0 -map 0:1 -map 1:0 -y output.mkv

مثلك اضطررت لاستخدام ملف إخراج MKV - لم أتمكن من إنشاء ملف M4V.




مثال بسيط:

videoSource=test.mp4
videoEncoded=test2.mp4
videoSubtitle=test.srt
videoFontSize=24
ffmpeg -i "$videoSource" -vf subtitles="$videoSubtitle":force_style='Fontsize="$videoFontSize"' "$videoEncoded"

فقط استبدال المتغيرات لينكس




Links