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




5 Answers

ffmpeg -i infile.mp4 -i infile.srt -c copy -c:s mov_text outfile.mp4

-vf subtitles=infile.srt لن يعمل مع -c copy

ترتيب -c copy -c:s mov_text مهم. أنت تقول FFmpeg:

  1. الفيديو: نسخة ، صوت: نسخ ، عنوان فرعي: نسخة
  2. العنوان الفرعي: mov_text

إذا عدلتهم ، فأنت تخبر FFmpeg:

  1. العنوان الفرعي: mov_text
  2. الفيديو: نسخة ، صوت: نسخ ، عنوان فرعي: نسخة

بدلاً من ذلك ، يمكنك فقط استخدام -c:v copy -c:a copy -c:s mov_text بأي ترتيب.

أحاول إضافة ترجمة نصية إلى حاوية .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 ، وما إذا كنت بحاجة إلى تشغيله أو تحويله بشكل منفصل.




أنت تحاول ترجمات mux كبث عنوان فرعي. إنها سهلة ولكن تستخدم بنية مختلفة لـ MP4 (أو M4V) و MKV. في كلتا الحالتين ، يجب تحديد برنامج ترميز الفيديو والصوت ، أو مجرد نسخ الدفق إذا كنت ترغب فقط في إضافة ترجمة مصاحبة.

MP4:

ffmpeg -i input.mp4 -f srt -i input.srt \
-map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy \
-c:s mov_text output.mp4

MKV:

ffmpeg -i input.mp4 -f srt -i input.srt \
-map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy \
-c:s srt  output.mkv



يدعم ffmpeg ترميز العنوان الفرعي mov_text الذي يدور حول الوحيد الذي يدعم في حاوية MP4 mov_text للتشغيل بواسطة iTunes و Quicktime و iOS إلخ.

سوف يقرأ السطر الخاص بك:

ffmpeg -i input.mp4 -i input.srt -map 0:0 -map 0:1 -map 1:0 -c:s mov_text output.mp4




سأقدم إجابة بسيطة وعامة تعمل مع أي عدد من الترجمات الصوتية والصوتية واحترام البيانات الوصفية التي قد تشمل حاوية mkv . حتى أنه سيضيف الصور التي قد تتضمنها matroska كمرفقات (على الرغم من عدم وجود أنواع أخرى AFAIK) وتحويلها إلى مسارات ؛ لن تكون قادرًا على المشاهدة ولكن سيكون هناك (يمكنك نزعها). آه ، وإذا كان MKV لديه فصول mp4 أيضا.

ffmpeg -i <mkv-input> -c copy -map 0 -c:s mov_text <mp4-output>

كما ترون ، كل شيء عن -map 0 ، الذي يخبر FFmpeg لإضافة جميع المسارات ، والتي تشمل البيانات الوصفية ، الفصول ، المرفقات ، إلخ. إذا كان هناك "مسار" غير معروف (يسمح mkv بإرفاق أي نوع من الملفات) ، سوف ينتهي بخطأ.

يمكنك إنشاء mkv2mp4.bat دفعة بسيطة إذا كنت تفعل هذا عادة لإنشاء mp4 بنفس الاسم مثل mkv . سيكون من الأفضل مع التحكم في الخطأ ، اسم إخراج مختلف ، وما إلى ذلك ، وضع لك نقطة.

@ffmpeg -i %1 -c copy -map 0 -c:s mov_text "%~n1.mp4"

الآن يمكنك ببساطة تشغيل

mkv2mp4 "Video with subtitles etc.mkv"

وسوف يخلق "فيديو مع ترجمة الخ. MP4" مع الحد الأقصى من المعلومات المدرجة.




هذا هو السبب في أن MKV هو عبارة عن حاوية جيدة ، خاصة الآن أنها ناضجة:

mkvmerge -o output.mkv video.mp4 subtitle.srt



Related

ffmpeg mp4 subtitle srt