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




subtitle srt (9)

سأقدم إجابة بسيطة وعامة تعمل مع أي عدد من الترجمات الصوتية والصوتية واحترام البيانات الوصفية التي قد تشمل حاوية 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" مع الحد الأقصى من المعلومات المدرجة.

أحاول إضافة ترجمة نصية إلى حاوية .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


استخدم مكتبة 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.


مثال بسيط:

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

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


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 بأي ترتيب.


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

تدعم حاوية 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

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


ffmpeg - تقليم ملف الصوت دون إعادة ترميز

استخدم ffmpeg لقص ملف صوت دون إعادة ترميزه.

يبدأ التقليم من 10 ثوانٍ وينتهي في 16 ثانية (إجمالي الوقت 6 ثوان)

ffmpeg -i input.mp3 -ss 10 -t 6 -acodec copy output.mp3

الاقتطاع من 00: 02: 54.583 إلى نهاية الملف

ffmpeg -i input.mp3 -ss 00:02:54.583 -acodec copy output.mp3

الاقتطاع من 00: 02: 54.583 لمدة 5 دقائق (ويعرف أيضًا بـ 300 ثانية)

ffmpeg -i input.mp3 -ss 00:02:54.583 -t 300 -acodec copy output.mp3




ffmpeg mp4 subtitle srt