এটির cat
মতো ব্যবহার অনাকাঙ্ক্ষিত সমস্যা তৈরি করতে পারে। ভাগ্যক্রমে, ffmpeg সহ ফাইলগুলি সংযুক্ত করার জন্য দুটি কার্যকর উপায় আছে।
CONCAT ডিমাক্সার
আপনার সমস্ত ইনপুট যদি একই ধরণের ফাইল (একই কোডেক ইত্যাদি) হয় তবে আপনি কনক্যাট ডেমাক্সারটি ব্যবহার করতে পারেন। এটি সম্ভবত আপনার প্রশ্নের আরও কার্যকর উত্তর, যেহেতু এটি -c অনুলিপিটির সাথে সামঞ্জস্যপূর্ণ (এবং সুতরাং এটি নিখুঁত হওয়া উচিত এবং এটি সম্পূর্ণরূপে প্রায় তুচ্ছভাবে স্বল্প সময়ের প্রয়োজন)।
প্রথমে inputs.txt
নিম্নলিখিত ফাইল যুক্ত একটি ফাইল তৈরি করুন :
file '/path/to/input1.flv'
file '/path/to/input2.flv'
file '/path/to/input3.flv'
file '/path/to/input4.flv'
তারপরে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
ffmpeg -f concat -i inputs.txt -c copy output.flv
যদি এটি কাজ না করে বা আপনি বিভিন্ন ধরণের ভিডিও একত্র করতে চান তবে আপনি এটি ব্যবহার করতে পারেন
কনক্যাট ফিল্টার
ffmpeg -i input1.flv -i input2.flv -i input3.flv -i input4.flv \
-filter_complex '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] [3:0] [3:1] concat=n=4:v=1:a=1 [v] [a]' \
-map '[v]' -map '[a]' -c:v libx264 -crf 22 -preset veryfast -c:a libfdk_aac -vbr 3 -afterburner 1 output.mp4
এই উদাহরণটি আমার পছন্দসই এনকোডিং সেটিংস ব্যবহার করে, আপনি যা চান তা ব্যবহার করার জন্য স্পষ্টতই শেষ লাইনটি পরিবর্তন করুন।
এটি অনুসরণ করা আরও সহজ করার জন্য আমি-ফিল্টার_কম্পলেক্স বিভাগটি বিচ্ছেদ করব।
'[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] [3:0] [3:1]
এই টুকরাটি ffmpeg কে কনক্যাট ফিল্টারে প্রবাহিত করতে প্রবাহিত করে; এই ক্ষেত্রে, ইনপুট 0 থেকে 0 এবং 1 টি স্ট্রিম করে (ffmpeg 0 থেকে গণনা শুরু করে, তাই এটি প্রথম ইনপুট ফাইল থেকে প্রথম এবং দ্বিতীয় স্ট্রিম, ইনপুট 1.flv এই উদাহরণে) এবং প্রতিটি ইনপুট থেকে 0 এবং 1 টি স্ট্রিম পর্যন্ত চতুর্থ (ffmpeg অনুযায়ী ইনপুট 3, যা 0 থেকে গণনা শুরু করে)।
concat=n=4:v=1:a=1 [v] [a]'
এটি নিজেই কনক্যাট ফিল্টার। n = 4 ফিল্টারকে বলছে যে এখানে চারটি ইনপুট ফাইল রয়েছে; v = 1 এটি বলছে যে এখানে একটি ভিডিও স্ট্রিম থাকবে; a = 1 এটি বলছে যে এখানে একটি অডিও স্ট্রিম থাকবে (আমি জানি আমি বলেছি যে ffmpeg 0 থেকে গণনা শুরু করে, তবে দৃশ্যত এই ফিল্টারটির লেখক এটি পরিবর্তে এটি করার সিদ্ধান্ত নিয়েছেন)।
[v] এবং [a] হ'ল বাকি ffmpeg লাইনটি কনক্যাট ফিল্টারের আউটপুট ব্যবহার করার অনুমতি দেওয়ার জন্য আউটপুট স্ট্রিমগুলির নাম। আমি মনে করি তাদের যথেচ্ছ নাম থাকতে পারে; কোনটি ভিডিও এবং কোনটি অডিও সম্ভবত তাদের সম্পর্কিত অবস্থানগুলি দ্বারা নির্ধারিত হয়েছে, তবে আমি এটি পরীক্ষা করে দেখিনি।
নোট করুন যে পুরো ফিল্টার বিভাগের চারপাশে একক উদ্ধৃতি '' প্রয়োজনীয়।
-map '[v]' -map '[a]'
এটি ffmpeg কে সরাসরি ইনপুট ফাইলগুলি থেকে স্ট্রিমের চেয়ে কনক্যাট ফিল্টারের ফলাফলগুলি ব্যবহার করতে বলে tells
নোট করুন যে ফিল্টারগুলি স্ট্রিম অনুলিপিটির সাথে বেমানান; আপনি এই পদ্ধতিতে -c অনুলিপি ব্যবহার করতে পারবেন না। আমি এটিও মনে করি যে এটি নরম সাবটাইটেলগুলি পরিচালনা করতে পারে না, যদিও আমি এটি পরীক্ষা করে দেখিনি: ডকুমেন্টেশনে এটি সম্পর্কে কোনও ইঙ্গিত নেই, তবে ffmpeg ডকুমেন্টেশন প্রায়শই অসম্পূর্ণ বা আবদ্ধ হয়, সুতরাং এটি কোনওভাবেই একটি নিশ্চিত লক্ষণ নয়।
এটি বিভিন্ন ফর্ম্যাটে এনকোডযুক্ত ফাইলগুলি সংযুক্ত করতে পারে (আমি একটি h264 / aac MP4 এবং একটি vpx / vorbis WEBM দিয়ে পরীক্ষা করেছি, পুরোপুরি কাজ করেছি), যদিও তাদের একই ভিডিও ফ্রেমের আকার এবং অডিও গভীরতা হওয়া দরকার (এবং সম্ভবত অন্যান্য জিনিসগুলি) need
এখানেও দেখুন ।
intermediate_all.mpg
?