ffmpeg কমান্ড লাইনে ffmpeg সহ দুটি এমপি 4 ফাইলগুলিতে যোগদান করুন


29

নিম্নলিখিত কমান্ডটি ব্যবহার করে আমি সফলভাবে একাধিক ফাইলগুলিতে যোগদান করতে পারি:

ffmpeg -f concat -i input.txt -codec copy output.mp4

এই কমান্ডটির সাথে একমাত্র সমস্যাটি হ'ল নিম্নলিখিত লিখিত সামগ্রীর সাথে আপনাকে ইনপুট. txt নামক পাঠ্য ফাইল থেকে ফাইলপথগুলি পড়তে হবে :

file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'

কোনও ফাইল থেকে ফাইলপথগুলি না পড়ে একই লক্ষ্য অর্জনের কোনও উপায় আছে কি? আমি ভাগ্য ছাড়াই নিম্নলিখিতগুলি চেষ্টা করেছি:

ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4

আমার কি আলাদা কমান্ড ব্যবহার করতে হবে?


উত্তর:


37

2019 আপডেট:

মন্তব্যে উল্লিখিত হিসাবে, স্ট্যাক ওভারফ্লোতে কনক্যাটেনেশনের জন্য উপলব্ধ বিকল্পগুলির দুর্দান্ত বর্ণনা রয়েছে, পাশাপাশি আপনি যে ধরণের ফাইল ব্যবহার করছেন তার উপর নির্ভর করে কোন পদ্ধতিটি ব্যবহার করবেন তা নিয়ে আলোচনা রয়েছে:

FFmpeg ব্যবহার করে দুটি এমপি 4 ফাইল কীভাবে সংযুক্ত করতে হয়?

আসল ২০১ Answer উত্তর:

ফাইলগুলি একত্রিত করার জন্য আপনার কনক্যাট প্রোটোকল পদ্ধতিটি ব্যবহার করতে সক্ষম হওয়া উচিত :

ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4

তদতিরিক্ত, এফএফপ্পেগ ম্যানুয়ালটি এমপি 4 ফাইলগুলির জন্য বিশেষত কোনও পদ্ধতিটি দোষহীনভাবে কনটেন্টেট করার জন্য আলোচনা করে তবে আপনাকে অস্থায়ী ফাইল (বা নামযুক্ত পাইপগুলি) তৈরি করতে হবে:

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output.mp4

1
প্রথম কমান্ড আমার জন্য মাখনের মতো কাজ করেছে..এটি আমার 6 এমপি 4 ফাইলগুলিকে আউটপুট ফাইলে (239 এমবি আনুমানিক) কনক্ট করতে 2 থেকে 3 সেকেন্ড সময় নিয়েছিল।
শচীন

22
প্রথম কমান্ড আমার পক্ষে কাজ করে নি। এটি সবে প্রথম ফাইলটি অনুলিপি করেছে।
লুইস এ ফ্লোরিট

3
এটি কাজ করে না, এটি প্রথম ফাইলটি অনুলিপি করেছে output.mp4
ক্রম্পিকো

2
ফাইল-স্তরের কনটেনটেশন এমপি 4 এর জন্য কাজ করে না, সুতরাং এই বিন্যাসের জন্য কনক্যাট প্রোটোকল বাঞ্ছনীয় নয় এবং সাধারণত কাজ করবে না।
লগন

1
@ ব্রাজোফিলো লিঙ্কটির জন্য আপনাকে ধন্যবাদ। এটি দীর্ঘ বিলম্বিত, তবে আমি সেই দিকের লোকদের নির্দেশিত উত্তরটি আপডেট করেছি।
কারসন ডার্লিং

5

আপনি তালিকা আউটপুট করে তালিকাটি এফএফএমপিএগ দ্বারা তালিকাটি stdoutপড়তে এবং ফাইলটি প্রতিস্থাপন করতে পারেন stdin:

(echo file 'a.mp4' & echo file 'b.mp4') | ffmpeg -protocol_whitelist file,pipe -f concat -safe 0 -i pipe: -vcodec copy -acodec copy "result.mp4"

ম্যাক ওএস 10.12.6 এ ffmpeg সংস্করণ 2.4.3-টেসাস ব্যবহার করে, এটি কেবল একটি ত্রুটি ছুঁড়ে ফেলেছে: "অপরিজ্ঞাত বিকল্প 'প্রোটোকল_প্রেমীকরণ তালিকা" "। প্রোটোকল_হ্যাটিলিস্ট বিকল্প ব্যতীত, এটি কেবলমাত্র দ্বিতীয় এমপি 4 ফাইলের একটি অনুলিপি বানাবে বলে মনে হচ্ছে।
জেমস

2

না, কোনও হ্যাক ছাড়াই একক কমান্ড লাইনে ffmpeg কনক্যাট ডেমোক্সার ব্যবহার করার কোনও উপায় নেই বলে মনে হয়। আপনার ফাইলগুলির তালিকা সহ ইনপুট পাঠ্য ফাইল তৈরি করতে হবে। আমি নিজেই এই অদ্ভুত ভেবেছিলাম, সম্ভবত পরে কেউ এফএফএমপেইগ এ যুক্ত করবে।

এই প্রশ্নের স্বীকৃত উত্তরটি কনট্যাট প্রোটোকল ব্যবহার করে, কনট্যাট ডেমোক্সার নয়, যা ওপি বলেছিল।


1
আসলে আছে। stdin।
কিওয়ারটি

কনক্যাট প্রোটোকল এমপি 4 বা অন্য কোনও ফর্ম্যাটের সাথে ব্যবহার করা উচিত নয় যার জন্য একটি গ্লোবাল শিরোনাম প্রয়োজন।
লগন

1

আপনি কমান্ডটি পরিবর্তন না করে স্ক্রিপ্টে এখনও এটি করতে পারেন। কিছুটা এইরকম:

echo "file fname1" >$$.tmp    #single redirect creates or truncates file
echo "file fname2" >>$$.tmp   # double redirect appends
echo "file fname3" >>$$.tmp   # do as many as you want.

ffmpeg -f concat -i $$.tmp -codec copy output.mp4

rm $$.tmp  # just to clean up the temp file. 
           # For debugging, I usually leave this out.

কমান্ডটি চালিত শেলের পিডে $$ প্রসারিত হয়, সুতরাং প্রতিবার চালানোর পরে ফাইলটির নাম আলাদা হবে। তাই আপনি পছন্দ করলে t। txt ব্যবহার করতে পারেন। অথবা অন্য কিছু...

এছাড়াও, আপনি ফাইলগুলিতে একটি গুচ্ছ ডেটা যোগ করতে এখানে ফাইলগুলি ব্যবহার করতে পারেন:

cat <<EOF >$$.tmp
file fname1
file fname2
file fname3
EOF

ব্যাশ ভেরিয়েবল প্রতিস্থাপন কাজ করে, তাই আপনি প্রোগ্রামের মাধ্যমে ফাইলের বিষয়বস্তু নির্ধারণ করতে পারেন, এটি ঠিক করতে হবে না। আমি এই ধরণের জিনিসগুলি সর্বদা লুপের মধ্যে এম্বেড করি। অবশেষে, পুনঃনির্দেশটি উপরের মতো একইভাবে কাজ করে, তাই> t। Tmp ছাঁটাইয়া পরে লিখেন, >> $$। Tmp সংযোজন।


2
প্রশ্নটি জিজ্ঞাসা করে, "কোনও ফাইল থেকে ফাইলপথগুলি না পড়ে একই লক্ষ্য অর্জনের কোনও উপায় আছে?" আপনারা যা কিছু করেছেন তা হ'ল ফাইলপথগুলি ফাইলগুলিতে লেখার একটি উপায় সরবরাহ করা (ফাইল থেকে ফাইলপথগুলি পড়ার আগে)। এটি প্রশ্নের উত্তর দেয় না।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.