পাঠ্য সাবটাইটেলগুলি [বন্ধ] যুক্ত করতে ffmpeg ব্যবহার করুন


122

আমি ffmpeg ব্যবহার করে .mp4 ধারকটিতে পাঠ্য সাবটাইটেলগুলি যুক্ত করার চেষ্টা করছি:

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

আমি যখন এই লাইনটি চালানোর চেষ্টা করছি তখন এটি আমাকে একটি ত্রুটি দেয়:

স্ট্রিম ম্যাপের সংখ্যার অবশ্যই আউটপুট স্ট্রিমের সংখ্যার সাথে মেলে।

যদি আমি এমপিথিকে এমকেভিতে পরিবর্তন করার চেষ্টা করি (যদিও এমপি 4 পাঠ্য সাবটাইটেলগুলিকে সমর্থন করে) তবে এটি:

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

এটি স্ট্রিমগুলি সঠিকভাবে মানচিত্র করে তবে একটি ত্রুটি দেয়:

এনকোডার (কোডেক আইডি 94210) আউটপুট স্ট্রিম # 0.2 এর জন্য পাওয়া যায় নি

আমি যখন চালু

ffmpeg -codecs

আমি দেখতে পাচ্ছি যে এসআরটি কোডেক ডিকোডার এবং এনকোডার হিসাবে সমর্থিত, তবে এমপি 4 এবং এমকেভি সাবস এনকোডিংয়ের জন্য কী ব্যবহৃত হয় তা আমি নিশ্চিত নই এবং আমার এটির স্যুইচ করতে হবে বা আলাদাভাবে সংকলন করতে হবে কিনা তা নিশ্চিত।

উত্তর:


196
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. সাবটাইটেল: মুভ_টেক্সট

আপনি যদি এগুলির বিপরীত হন তবে আপনি এফএফপিপেগকে বলছেন:

  1. সাবটাইটেল: মুভ_টেক্সট
  2. ভিডিও: অনুলিপি, অডিও: অনুলিপি, উপশিরোনাম: অনুলিপি

বিকল্পভাবে আপনি কেবল যে -c:v copy -c:a copy -c:s mov_textকোনও ক্রমে ব্যবহার করতে পারেন ।


13
এই পদ্ধতিটি
স্ট্রিমগুলির মধ্যে

1
এর অর্থ কী সাবটাইটেলটি উপলভ্য, তবে ভিডিওতে পোড়া নয়? আমি চাইলে দেখাতে পারি?
সূর্য

3
হ্যাঁ @ sunk818 এর অর্থ এটি। এটি সাবটাইটেলটিকে ট্র্যাক হিসাবে যুক্ত করেছে যা প্লেয়ারের যতক্ষণ না সমর্থন করে ততক্ষণ সক্ষম বা অক্ষম করা যায়। মিঃ হাইড এবং পল এফফেম্পেগ নিজেই ভিডিওর শীর্ষে উপশিরোনাম যুক্ত করতে পারেন এবং সেই ক্ষেত্রে আপনি ফন্ট এবং অবস্থানের মতো বিষয়গুলি নিয়ন্ত্রণ করতে পারবেন।
বোশলে

1
.srt ফাইলগুলি অবশ্যই -c:s copyনা দিয়ে আমদানি করতে হবে -c:s mov_text
getFree

82

দ্রষ্টব্য: এই সমাধানটি ভিডিওতে "সাবটাইটেলগুলি জ্বালিয়ে দেয়", যাতে ভিডিওটির প্রতিটি দর্শক তাদের দেখার জন্য বাধ্য হয়।

libassলাইব্রেরিটি ব্যবহার করুন (কনফিগারেশনে আপনার ffmpeg ইনস্টলের লাইব্রেরি রয়েছে তা নিশ্চিত করুন --enable-libass)।

প্রথমে সাবটাইটেলগুলিকে .assবিন্যাসে রূপান্তর করুন :

ffmpeg -i subtitles.srt subtitles.ass

তারপরে ভিডিও ফিল্টার ব্যবহার করে এগুলি যুক্ত করুন:

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

40
এটি ভিডিওটিকে "জ্বালিয়ে" দেবে, এর অর্থ আপনি প্লেয়ারে এগুলি বন্ধ করতে পারবেন না। এগুলি তাদের সাবটাইটেল স্ট্রিম হিসাবে যুক্ত করা আলাদা যা প্লেয়ার দ্বারা পড়তে পারে এবং দর্শক যদি সেগুলি চায় তবে প্রদর্শিত হতে পারে।
stib

1
এই সমাধানের জন্য অনেক ধন্যবাদ। অক্ষরের আকার নির্দিষ্ট করার জন্য কি এখনও আছে?
ব্যবহারকারী 1319182

1
এই উত্তরটি একবার দেখুন: stackoverflow.com/questions/21363334/… । আপনি সম্ভবত সাবটাইটেল ফাইলটিতে হরফ সেট করতে চাইবেন, অন্যথায় সাবটাইটেল ফিল্টারটি ব্যবহার করে আপনি বাধ্যতামূলক স্টাইলটি
HdN8

ইনস্টাগ্রামের মতো কোথাও ভিডিওগুলির জন্য সাবটাইটেল যুক্ত করার সময় এটি দরকারী হবে। কোথাও ইনস্টাগ্রাম দর্শকের মতো যে ব্যবহারকারীর শব্দ শোনার ক্ষমতা বা ভিডিও অন্য ভাষায় নেই, তারপরে ব্যবহারকারী তার পরিবর্তে উপশিরোনামটি পড়তে পারেন
5 -MMREzO

1
libassডেবিয়ান সিস্টেমগুলিতে `অ্যাপটি আপডেট && এ্যাপ্ট লিবাস-দেব" এ অনুপস্থিত থাকলে এক্সটেনশানগুলি ইনস্টল করুন
সোপালাজো ডি অরিরিজেজ

53

আপনি একটি সাবটাইটেল স্ট্রিম হিসাবে সাবটাইটেলগুলি mux করার চেষ্টা করছেন। এটি সহজ তবে এমপি 4 (বা এম 4 ভি) এবং এমকেভির জন্য বিভিন্ন সিনট্যাক্স ব্যবহৃত হয়। উভয় ক্ষেত্রে আপনাকে অবশ্যই ভিডিও এবং অডিও কোডেক নির্দিষ্ট করতে হবে, বা আপনি যদি কেবল সাবটাইটেল যুক্ত করতে চান তবে কেবল স্ট্রিমটি অনুলিপি করতে হবে।

আছে 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

3
একাধিক সাবটাইটেল যুক্ত করা কি সম্ভব? এই সফটসব কি ভাষা অজানা হিসাবে স্বীকৃত হবে?
প্যাট্রিক

1
হ্যাঁ, তাই আমি স্রেফ এটি এমকেভি-র জন্য পরীক্ষা করেছি:
ডোটোকিজা

7
প্রথমে অন্য একটি ইনপুট যুক্ত করুন: -i ইনপুট 2.এসআরটি। দ্বিতীয়ত, মানচিত্রটি ২ য় প্রবাহ হিসাবে: -ম্যাপ 2: 0। শেষ অবধি, ২ য় সাবটাইটেল স্ট্রিমের জন্য এনকোডারটি নির্বাচন করুন (প্রথমটির মতো একই): -সি: এস এসআরটি। সম্পূর্ণ উদাহরণ \ ffmpeg -i input.mp4 -f srt -i input.srt -i input2.srt s-ম্যাপ 0: 0 -ম্যাপ 0: 1-ম্যাপ 1: 0 -ম্যাপ 2: 0 -সি: ভি অনুলিপি - সি: একটি অনুলিপি c -সি: এসআরটি-সি: এসআরটি আউটপুট.এমকেভি
ডোটোকিজা

8
এবং ভাষা মেটাডেটা যুক্ত করতে (আউটপুট ফাইলের আগে সন্নিবেশ করান) "-মেতাডেটা: গুলি: 0 ভাষা = ইঞ্জিন"
প্যাট্রিক

মূল ফাইলের সাবটাইটেলগুলি কীভাবে বাদ পড়বে যখন আমি এমকিভি ফাইলগুলিকে এমপি 4 ফাইল (ffmpeg -i film.mkv -vcodec copy -acodec copy film.mp4) হিসাবে "পুনরায় মুছে ফেলুন" ?? মূল এমকেভিতে সাবটাইটেল রয়েছে তবে এমপি 4 ফর্ম্যাটে আউটপুট দেয় না। কি হচ্ছে? আমি সঠিকভাবে কি করছি না?
ওল্ডবয়

9

এমকেভি কনটেইনার ভিডিও এবং অডিও কোডেকগুলিকে ভার্চুয়ালি কিছু সমর্থন করে এবং সাবটাইটেল এবং ডিভিডি মেনুগুলিকে সমর্থন করে। সুতরাং আপনি কেবল ইনপুট ভিডিও থেকে সাবটাইটেল সহ এমকেভি ধারক সহ আউটপুট ভিডিওতে কোডেক অনুলিপি করতে পারেন। প্রথমে আপনার এসআরটি এএসএস সাবটাইটেল ফর্ম্যাটে রূপান্তর করা উচিত

ffmpeg -i input.srt input.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

ভিএমডাব্লু ফাইলের সাথেও কাজ করেছেন।

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

উইকি পৃষ্ঠাটি দেখুন ধারক বিন্যাসের তুলনা


1
এইচভি সত্যিই প্রাসঙ্গিক নয়, এটির চেয়ে আরও বেশি সমাধান দেখতে সর্বদা স্বাগত।
জেসনএক্সএ

8

ffmpeg mov_textসাবটাইটেল এনকোডারকে সমর্থন করে যা এমপি 4 ধারকটিতে সমর্থিত এবং আইটিউনস, কুইকটাইম, আইওএস ইত্যাদি দ্বারা প্লেযোগ্য play

আপনার লাইন পড়তে হবে:

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


5

আমি এই কাজের জন্য এমপি 4বক্স ব্যবহার করার চেষ্টা করেছি, তবে এটি যে এম 4 ভি নিয়ে আমি মোকাবিলা করছি তা এটি পরিচালনা করতে পারে না। নিম্নলিখিত কমান্ড লাইনের সাথে 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

আপনার মত আমাকে একটি এমকেভি আউটপুট ফাইল ব্যবহার করতে হয়েছিল - আমি এম 4 ভি ফাইল তৈরি করতে পারিনি।


3

আমি একটি সহজ এবং সাধারণ উত্তর যে অডিও এবং যে কোন সংখ্যার সঙ্গে কাজ করে প্রদান করবে SRT সাবটাইটেল এবং শ্রদ্ধা মেটাডেটা যে অন্তর্ভুক্ত হতে পারে MKV ধারক। সুতরাং এটি ম্যাট্রোস্কা সংযুক্তি হিসাবে অন্তর্ভুক্ত থাকতে পারে এমন চিত্রগুলি যোগ করবে (যদিও অন্য ধরণের এএফআইকে নয়) এবং এগুলি ট্র্যাকগুলিতে রূপান্তরিত করে; আপনি দেখতে সক্ষম হবেন না তবে তারা সেখানে থাকবে (আপনি এগুলি ডিম্যাক করতে পারেন)। আহ, আর যদি MKV অধ্যায়গুলির হয়েছে MP4 খুব।

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

যেহেতু আপনি দেখতে পারেন, এটা সম্পর্কে সব -map 0, যে বলে FFmpeg সব ট্র্যাক যোগ করার জন্য, যা মেটাডাটা, অধ্যায়, সংযুক্তি ইত্যাদি যদি একটি অচেনা "ট্র্যাক" হয় (অন্তর্ভুক্ত MKV সংযুক্ত করতে পারবেন কোন ধরনের ফাইল), এটা করবে না একটি ত্রুটি দিয়ে শেষ

আপনি এমকেভি হিসাবে একই নামের mkv2mp4.batএকটি এমপি 4 তৈরি করতে আপনি সাধারণত এটি করেন তবে আপনি একটি সাধারণ ব্যাচ তৈরি করতে পারেন । এটি ত্রুটি নিয়ন্ত্রণ, আলাদা আউটপুট নাম ইত্যাদির সাহায্যে ভাল হবে তবে আপনি পয়েন্টটি পান।

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

এখন আপনি কেবল চালাতে পারেন

mkv2mp4 "Video with subtitles etc.mkv"

এবং এটি অন্তর্ভুক্ত সর্বাধিক তথ্যের সাথে "সাবটাইটেলগুলি সহ এমপি 4" তৈরি করবে।



-3

এই কারণেই এমকেভি খুব ভাল ধারক, বিশেষত এখন এটি পরিপক্ক:

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

3
আপনার দৃষ্টিভঙ্গি কেন ওপির সমস্যাটি সমাধান করবে?
এমজুয়ারেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.