विभिन्न कोडेक्स के साथ स्रोत फ़ाइलों का उपयोग करना trim
औरconcat
इसके लिए, सुनिश्चित करें कि आपकी व्यक्तिगत फ़ाइलों में एक ही रिज़ॉल्यूशन है, और आदर्श रूप से समान फ़्रैमरेट और क्रोमा सबसैंपलिंग आदि। यह कॉन्टेक्टेशन के दौरान त्रुटियों या ग्लिट्स को रोक देगा।
आप फ़ाइल trim
और विभाजन का उपयोग किए बिना सब कुछ एक ही बार में कर सकते हैं concat
:
ffmpeg -i edv_g24.mp4 -i short-video.mp4 -filter_complex "\
[0:v]trim=0:10,setpts=PTS-STARTPTS[v0]; \
[1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; \
[0:v]trim=15:30,setpts=PTS-STARTPTS[v2]; \
[v0][v1][v2]concat=n=3:v=1:a=0[out]" \
-map "[out]" output.mp4
यहां, trim
इनपुट वीडियो स्ट्रीम ( 0:v
, 1:v
) के व्यक्तिगत भागों को निर्दिष्ट करने के लिए उपयोग किया जाता है जिसे आप बाद में संक्षिप्त करना चाहते हैं। इन भागों के v0
माध्यम से नाम दिया गया है v2
। ( setpts
फ़िल्टर इन व्यक्तिगत भागों के टाइमस्टैम्प्स को 0 पर रीसेट करता है, जो कि सहमति के लिए आवश्यक है)। बाद में, हम तीन भागों को समेटते हैं।
यदि आप एक निश्चित टाइमस्टैम्प से अंत तक ट्रिम करना चाहते हैं, trim=start=15
तो रेंज निर्दिष्ट करने के बजाय उपयोग करें ।
यदि आपकी फ़ाइलों में ऑडियो हैं, तो आपको उन धाराओं को अलग से ट्रिम करना होगा:
ffmpeg -i edv_g24_2.mp4 -i short-video.mp4 -filter_complex "\
[0:v]trim=0:10,setpts=PTS-STARTPTS[v0]; \
[0:a]atrim=0:10,asetpts=PTS-STARTPTS[a0]; \
[1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; \
[1:a]atrim=0:5,asetpts=PTS-STARTPTS[v1]; \
[0:v]trim=15:30,setpts=PTS-STARTPTS[v2]; \
[0:a]atrim=15:30,asetpts=PTS-STARTPTS[a2]; \
[v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
ध्यान दें कि इस मामले में वीडियो और ऑडियो को फिर से एनकोड किया जाएगा - उचित आउटपुट गुणवत्ता लक्ष्य (जैसे -crf
x264, x265 या libvpx-vp9 के लिए) निर्दिष्ट करना सुनिश्चित करें । आप इसके बारे में FFmpeg Wiki, जैसे VP9 या H.264 पर पढ़ सकते हैं ।
व्यक्तिगत खंडों का उपयोग करना
यदि आप क्लिप को विभाजित करना चाहते हैं और बाद में उन्हें फिर से इकट्ठा करते हैं:
ffmpeg -i edv_g24.mp4 -ss 0 -to 10 -c copy part1.mp4
ffmpeg -i edv_g24.mp4 -ss 10 -to 15 -c copy part2.mp4
ffmpeg -i edv_g24.mp4 -ss 15 -c copy part3.mp4
ffmpeg -i part1.mp4 -i short-video.mp4 -i part3.mp4 -filter_complex \
"[0:v][1:v][2:v]concat=n=3:v=1:a=0[outv]" \
-map "[outv]" -t 30 output.mp4
यदि फ़ाइलों में ऑडियो है, तो ऊपर दिए गए समान दृष्टिकोण का उपयोग करें:
ffmpeg -i part1.mp4 -i short-video.mp4 -i part3.mp4 -filter_complex \
"[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" -t 30 output.mp4
यह फिर से वीडियो स्ट्रीम को फिर से एनकोड करेगा। यह थोड़ा अधिक सीधा है, लेकिन अन्यथा उपरोक्त विधि के बराबर होना चाहिए।
concat
डिमूक्सर का उपयोग करना
आप सिद्धांत रूप में भी कंसट्रक्शन को फिर से एनकोड करने के लिए कंसट्रेट डिमॉक्सर का उपयोग करके उन्हें पुन: एन्कोडिंग करने का प्रयास कर सकते हैं। नामक एक फ़ाइल बनाएँ concat.txt
और निम्नलिखित प्रविष्टियाँ जोड़ें (ऊपर बनाई गई वीडियो क्लिप के अनुसार):
file 'part1.mp4'
file 'short-video.mp4'
file 'part3.mp4'
फिर इन व्यक्तिगत फ़ाइलों को संक्षिप्त करें:
ffmpeg -f concat -i concat.txt -c copy output.avi
हालाँकि इसके लिए आपके क्लिप को समान कोडेक, रिज़ॉल्यूशन, फ्रैमरेट आदि की आवश्यकता होती है - इसलिए यह सभी प्रकार के विषम स्रोतों के साथ काम नहीं करता है।
concat
प्रोटोकॉल का उपयोग करना
उपरोक्त प्रकार के फ़ाइल-स्तर के संयोजन को concat
प्रोटोकॉल का उपयोग करके प्राप्त किया जा सकता है , ऊपर (समान कोडेक, संकल्प, आदि) के समान बाधाओं के साथ:
ffmpeg -i "concat:part1.avi|part2.avi|part3.avi" -c copy output.mp4
संघटन के बारे में अधिक जानकारी के लिए, संबंधित FFmpeg Wiki पृष्ठ पढ़ें ।