# 1 एक साथ / बाहर ऑडियो फीका करने के लिए:
ffmpeg -i clip.mp4 -vf 'fade=in:0:30,fade=out:960:30'
-af 'afade=in:st=0:d=1,afade=out:st=32:d=1'
-c:v libx264 -crf 22 -preset veryfast fadeInOut.mp4
उतने समय सेकंड में हैं ।
# 2 स्वचालित रूप से? नहीं, लेकिन नीचे वर्कअराउंड देखें
आप पहली बार अवधि प्राप्त करने के लिए ffprobe चला सकते हैं।
ffprobe -i clip.mp4 -show_entries stream=codec_type,duration -of compact=p=0:nk=1
आपको कुछ इस तरह मिलेगा:
video|13.556000
audio|13.816000
फिर आप अपने फ़ेड को लगाने के लिए उपरोक्त का उपयोग कर सकते हैं। ये समय सेकंडों में है।
वैकल्पिक हल
ffmpeg -i clip.mp4 -sseof -1 -copyts -i clip.mp4 -filter_complex
"[1]fade=out:0:30[t];[0][t]overlay,fade=in:0:30[v];
anullsrc,atrim=0:2[at];[0][at]acrossfade=d=1,afade=d=1[a]"
-map "[v]" -map "[a]" -c:v libx264 -crf 22 -preset veryfast -shortest fadeInOut.mp4
FFmpeg में एक sseof
विकल्प है जो किसी को अंत से इनपुट प्राप्त करने की अनुमति देता है। हम अपने लक्ष्य को पूरा करने के लिए इसका उपयोग कर सकते हैं। तो हम इनपुट को दो बार खिलाते हैं, 2 बार के साथ केवल अंतिम सेकंड में प्रवेश करते हैं। हम FFmpeg को टाइमस्टैम्प को संरक्षित करने के लिए कहते हैं, ताकि ffmpeg इस टेल हिस्से की अस्थायी स्थिति को बनाए रखे।
हम इस पूंछ के लिए एक फीका लागू करते हैं और फिर पूर्ण इनपुट पर परिणाम ओवरले करते हैं। चूंकि वे एक ही मीडिया फ़ाइल हैं, अग्रभूमि पूरी तरह से पृष्ठभूमि को कवर करती है, और जब copyts
से लागू किया गया था, ओवरले पृष्ठभूमि इनपुट में इसी समान फ्रेम पर होता है।
ऑडियो के लिए, हम 2 सेकंड की अवधि का एक रिक्त डमी ऑडियो बनाते हैं, और फिर मुख्य ऑडियो से इस डमी ऑडियो पर एक ऑडियो क्रॉसफ़ेड लागू करते हैं। चूंकि दूसरा ऑडियो रिक्त है, इसलिए यह मुख्य इनपुट के लिए फीका-आउट है। -shortest
डमी ऑडियो के कुछ भागों बाहर छोड़ने के लिए के बाद crossfade आ गई है जोड़ा गया है।