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




mp4 subtitle (6)

أنت تحاول ترجمات 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

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


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

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

ffmpeg -i subtitles.srt subtitles.ass

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

ffmpeg -i mymovie.mp4 -vf ass=subtitles.ass mysubtitledmovie.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 . حتى أنه سيضيف الصور التي قد تتضمنها 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

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