টিএল; ডিআর সংস্করণ:
এই উদাহরণটি শুধুমাত্র ভিডিও সম্পাদন করে, উভয় ভিডিও ক্লিপগুলি একই রেজল্যুশন, ফ্রেম রেট ইত্যাদি বলে মনে করে। এটি ফেইডআউট্লিপ এবং ফেডিনক্লিপের মধ্যে 1-সেকেন্ড ফেইড তৈরি করবে। অনুমান করুন যে fadeoutclip 10 সেকেন্ড দীর্ঘ। উল্লেখ্য যে এটি স্বচ্ছতার জন্য বিন্যস্ত করা হয়েছে: এটি সত্যিই কোডের একটি লাইন।
ffmpeg -i fadeoutclip.mp4 -i fadeinclip.mp4 -an \
-filter_complex "\
[0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[firstclip]; \
[1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip]; \
[0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc]; \
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc]; \
[fadeinsrc]format=pix_fmts=yuva420p, \
fade=t=in:st=0:d=1:alpha=1[fadein]; \
[fadeoutsrc]format=pix_fmts=yuva420p, \
fade=t=out:st=0:d=1:alpha=1[fadeout]; \
[fadein]fifo[fadeinfifo]; \
[fadeout]fifo[fadeoutfifo]; \
[fadeoutfifo][fadeinfifo]overlay[crossfade]; \
[firstclip][crossfade][secondclip]concat=n=3[output] \
" \
-map "[output]" <add in encoding part here>
"কি খারাপ অবস্থা?" সংস্করণ:
এখানে এই সম্পর্কে কি একটি ব্যাখ্যা আছে:
ইনপুট স্পেসিফিকেশন ... স্পষ্ট
ffmpeg -i fadeoutclip.mp4 -i fadeinclip.mp4 -an
একটি তৈরি filter_complex: আপনি ইতিমধ্যে ফিল্টার কমপ্লেক্স বুঝতে অনুমান:
-filter_complex
প্রথম আমরা দুটি স্ট্রিম দুটি ব্যবহার করে দুই টুকরা মধ্যে বিরতি ছাঁটাই ফিল্টার : কন্টেন্ট এবং ক্রস বিবর্ণ বিভাগ। ফেইড আউট বিষয়বস্তু এবং বিবর্ণ অংশে বিভক্ত করা হয়, যখন বিবর্ণ বিবর্ণ অংশ এবং কন্টেন্ট মধ্যে কাটা হয়। চার বিভাগের মোট।
উল্লেখ্য যে কঠোরভাবে কথা বলা, আমরা না আছে ক্রস ফেইড বিভাগগুলি ভাঙতে: আমরা কেবল দুটি ফেইড ক্লিপের জন্য ফেইড আউট এবং ফেইড নির্দিষ্ট করতে পারি। যাইহোক, এই কাজ করে, আমরা:
- সাধারণত জিআইআই ভিডিও সম্পাদকদের দ্বারা ব্যবহৃত পদ্ধতি অনুসরণ করুন
- এর হতাশাজনক জটিলতা এড়াতে
overlay ফিল্টার এর ব্যবহার
- সমাধানটি যতটা সম্ভব সাধারণ (i.e. পুনঃব্যবহারযোগ্য কোড) নিশ্চিত করুন
- আমাদের ক্রসফ্যাড বিভাগকে পূর্ব-প্রক্রিয়া এবং পোস্ট-প্রক্রিয়া করার অনুমতি দেয় (এখানে সম্পন্ন না)
এই চারটি বিভাগের প্রতিটি নির্দিষ্ট করে: সময় শুরু (সেকেন্ড), শেষ সময় (সেকেন্ড), এবং রহস্যময় setpts=PTS-STARTPTS ছাঁকনি যা মূলত প্রতিটি ভিডিও উপclip 0 সেকেন্ডে শুরু করে তোলে। তাদের recomposing যখন এই অত্যাবশ্যক হবে।
উল্লেখ্য যে s=0 স্পেসিফিকেশন অকার্যকর হয়, এবং setpts জন্য ফিল্টার s=0 বেশী অকার্যকর হয়। যাইহোক, উভয় ফিল্টার জটিল বিরতি ছাড়া 0 থেকে শুরু সময় পরিবর্তন করার অনুমতি অকার্যকর উল্লেখ করা হয়। এছাড়াও, দ্বিতীয় কন্টেন্ট ক্লিপ শেষ পর্যন্ত, তাই e= অংশ (শেষ =) নির্দিষ্ট করা হয় না।
[0:v]trim=s=0:e=9,setpts=PTS-STARTPTS[firstclip];
[1:v]trim=s=1,setpts=PTS-STARTPTS[secondclip];
[0:v]trim=s=9:e=10,setpts=PTS-STARTPTS[fadeoutsrc];
[1:v]trim=s=0:e=1,setpts=PTS-STARTPTS[fadeinsrc];
পরবর্তী, আমরা বিবর্ণ এবং বিবর্ণ আউট উল্লেখ: আমরা প্রথমে দুটি ফেইড বিভাগে আলফা (স্বচ্ছতা) চ্যানেল যুক্ত করি একটি পিক্সেল বিন্যাস উল্লেখ yuva420p। আপনি আসলে একটি আলফা চ্যানেল প্রদান করে যে কোন বিন্যাস ব্যবহার করতে পারেন।
পরবর্তীতে এই ফিল্টার সাবক্রপ্লেক্সে আমরা ফেইড আউট করতে, এবং এক বিবর্ণ করতে নির্দিষ্ট করেছি। দ্য alpha=1 মানে ভিডিওটি অন্ধকার হবে না, শুধুমাত্র স্বচ্ছতা পরিমাণ "বিবর্ণ" হবে। st মানে শুরু, d মানে সময়কাল।
[fadeinsrc]format=pix_fmts=yuva420p,
fade=t=in:st=0:d=1:alpha=1[fadein];
[fadeoutsrc]format=pix_fmts=yuva420p,
fade=t=out:st=0:d=1:alpha=1[fadeout];
এটা কি?: দ্য fifo ছাঁকনি ফিল্টার কমপ্লেক্সে বাফার স্পেস উপলব্ধ রয়েছে তা নিশ্চিত করে। আশ্চর্যজনক, এই ডিফল্ট নয়। যদি আপনি এটি না করেন, উপরের স্তরটির আউটপুট নীচের ওভারলে ফিল্টারকে অতিক্রম করে যদি ক্রসফ্যাড ব্যর্থ হয়। হ্যাঁ, আমি এখন আপনি কি চিন্তা করছেন জানি। এটি আসলে একটি FFMPEG বাগ ।
[fadein]fifo[fadeinfifo];
[fadeout]fifo[fadeoutfifo];
এখন, দুটি বিবর্ণ বিভাগগুলি ওভারলে করুন: দুই ক্রসফ্যাড সেকশন একই আকার নিশ্চিত করে, আমরা চিন্তা করতে হবে না বরং কদর্য বিকল্প ওভারলে ফিল্টার লাগে (এবং তাই আমরা এখানে তাদের উপেক্ষা):
[fadeoutfifo][fadeinfifo]overlay[crossfade];
অবশেষে, আমরা আমাদের তিনটি অংশ লাইন আপ কনট্যাট ফিল্টার ব্যবহার করে ।
[firstclip][crossfade][secondclip]concat=n=3[output]
এবং এখন, আপনার ভিডিও উৎস হিসাবে আউটপুট প্যাড মানচিত্র।
ভুলে যেও না আপনি সাধারণত ব্যবহার করেন কি পিক্সেল বিন্যাস সেট করতে (সাধারণত yuv420p ), ক্রসফ্যাড বিভাগ এটি সেট করা হবে yuv420 আউটপুট চ্যানেলে! (আমরা এটি উল্লেখ না করে, আপনি ওভারলে আর্গুমেন্ট ব্যবহার করতে পারেন) অবশ্যই তুমি যদি চাও yuv420, তারপর আপনি ভাল আছেন :-)
-map "[output]" <add your normal encoding part here>
তারপরে আপনি পরে অডিও পুনর্বিবেচনা করতে পারেন (এই প্রশ্ন & amp; A এর সুযোগের বাইরে)