উত্তর:
আপনার স্ট্রিমগুলি চয়ন করতে -map
বিকল্পটি ব্যবহার করুন । ডিফল্ট স্ট্রিম নির্বাচন কেবল প্রতিটি স্ট্রিম প্রকারের মধ্যে একটি বেছে নেবে, এজন্যই -map
ব্যবহার করতে হবে।
ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
0:v
- 0
প্রথম ইনপুট যা বোঝায় তা বোঝায় video.mkv
। এর v
অর্থ "ভিডিও স্ট্রিম প্রকার নির্বাচন করুন"।
0:a:0
- 0
প্রথম ইনপুট যা বোঝায় তা বোঝায় video.mkv
। এর a
অর্থ "অডিও স্ট্রিম প্রকার নির্বাচন করুন"। শেষটি 0
এই ইনপুট থেকে প্রথম অডিও স্ট্রিমকে বোঝায়। যদি কেবল 0:a
ব্যবহৃত হয় তবে সমস্ত ভিডিও স্ট্রিম ম্যাপ করা হবে।
1:a
- 1
দ্বিতীয় ইনপুট যা বোঝায় তা বোঝায় audio.mp3
। এর a
অর্থ "অডিও স্ট্রিম প্রকার নির্বাচন করুন"।
-codec copy
এনকোডের পরিবর্তে অনুলিপি (পুনরায় ম্যাক্স) প্রবাহিত করবে । আপনার যদি কোনও নির্দিষ্ট অডিও কোডেকের প্রয়োজন হয় তবে আপনার নির্দিষ্ট করা উচিত -c:v copy
(ভিডিওটি রাখতে) এবং তারপরে, উদাহরণস্বরূপ, -c:a libmp3lame
অডিও স্ট্রিমটি এমপি 3 এ পুনরায় এনকোড করা উচিত।
-shortest
সংক্ষিপ্ত ইনপুট শেষ হলে আউটপুটটি শেষ হবে।
ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
amerge
ফিল্টারটি এখানে ব্যবহৃত হয়, সুতরাং অডিওটি এই উদাহরণে অনুলিপি করা যায় না।-codec copy
, তবে আমি এটি ঠিক করেছি (ffmpeg এর বিভিন্ন সংস্করণ), আমি যে অন্যান্য সমস্যাটি নিয়েছিলাম তা ছিল -map
, এটি প্রবাহের ভুল সংখ্যা সম্পর্কে অভিযোগ করেছিল।
-map 0:v -map 1:a
। আমি ধরে নিই এর অর্থ প্রথম ফাইল (ভিডিও.mkv) থেকে ভিডিও নেওয়া এবং তারপরে আউটপুট.এমকেভি তৈরি করতে দ্বিতীয় ফাইল (অডিও.এমপি 4) থেকে অডিও নেব ... কী -map 0:a:0
জন্য তা নিশ্চিত তা নয় । আমি এটিকে বাদ দিয়েছি এবং আমি যে ফলাফল চেয়েছি তা পেয়েছি।