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


Answers

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




يدعم 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




حاولت استخدام 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.




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

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