FFmpeg [डुप्लिकेट] के साथ आरंभ स्थिति से अंत स्थिति तक वीडियो फ़ाइल से हिस्सा काटें


143

इस सवाल का पहले से ही यहाँ एक जवाब है:

मेरे पास 30 मिनट की एक वीडियो फ़ाइल है, लेकिन मैं 00:09:23 से 00:25:33 तक एक वीडियो निकालना चाहता हूं।

मैं स्टार्टअप के साथ परिभाषित कर -ssसकता हूं, लेकिन मैं अंतिम स्थिति के लिए एक नहीं खोज सका। कृपया कोई मदद?

जवाबों:


244

Ffmpeg स्थापित करें

सुनिश्चित करें कि आप हाल के संस्करण को डाउनलोडffmpeg करते हैं, और अपने वितरण के साथ आने वाले (जैसे Ubuntu) का उपयोग न करें। विभिन्न वितरणों से पैक संस्करण अक्सर पुराने होते हैं और अपेक्षा के अनुरूप व्यवहार नहीं करते हैं।

या इसे स्वयं संकलित करें

री-एन्कोडिंग के बिना, वीडियो कैसे काटें

से वीडियो में कटौती करने के लिए इसका उपयोग करें [start]के लिए [duration]:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4

यहां, विकल्पों का मतलब निम्न है:

  • -ssप्रारंभ समय निर्दिष्ट करता है, उदाहरण के लिए ( 00:01:23.000या 83सेकंड में)
  • -t क्लिप की अवधि निर्दिष्ट करता है (समान प्रारूप)।
  • हाल के ffmpegसमय के साथ अंतिम समय की आपूर्ति करने के लिए एक ध्वज भी है -to
  • -c copyपहले वीडियो, ऑडियो और सबटाइटल बिटस्ट्रीम को इनपुट से आउटपुट फाइल में बिना री-एन्कोडिंग के कॉपी करता है। यह गुणवत्ता को नुकसान नहीं पहुंचाएगा और सेकंड के भीतर कमांड रन करेगा।

री-एन्कोडिंग के साथ, वीडियो कैसे काटें

यदि आप -c copyविकल्प छोड़ देते हैं , ffmpegतो अपने द्वारा चुने गए प्रारूप के अनुसार आउटपुट वीडियो और ऑडियो को स्वचालित रूप से फिर से एनकोड करेंगे। उच्च गुणवत्ता वाले वीडियो और ऑडियो के लिए , क्रमशः x264 एन्कोडिंग गाइड और एएसी एन्कोडिंग गाइड पढ़ें ।

उदाहरण के लिए:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4

1
Ubuntu 12:10 पर, -c: v और -c: एक काम नहीं किया। मुझे इसके बजाय "-acodec copy और -vcodec copy" का उपयोग करना पड़ा।
शमूएल लांपा

1
@ शमूएल तब आप एक पुराने संस्करण का उपयोग कर रहे हैं, जो कि असली FFmpeg भी नहीं है, लेकिन लिबव फोर्क। देखें: stackoverflow.com/a/9477756/1109017
slhck

इसके लिए धन्यवाद! यदि आप एक अवधि निर्दिष्ट नहीं करते हैं, तो क्या यह अंत तक जाएगा?
जेफ

@ जेफ़ हाँ! (चरित्र न्यूनतम)
slhck

3
@Prateek जब वीडियो बिटस्ट्रीम (पुनः एन्कोडिंग के बजाय) को कॉपी, आप केवल में कटौती कर सकते हैं मुख्य-फ़्रेम । यदि सेकंड 1, 2 और 3 पर कीफ्रेम हैं, लेकिन आप दूसरे 1.5 में कटौती करना चाहते हैं, तो ffmpeg दूसरी 2 तक इंतजार करेगा जब तक कि यह कटना शुरू नहीं कर सकता। जो इसे गलत बनाता है।
slhck

26

मुझे लगता है कि अब आप निम्नलिखित कमांड का उपयोग कर सकते हैं।

ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile

एक नज़र Ffmpeg Doc या इस विकी पेज पर भी देखें


6
ffmpeg -i inputFile -c copy -ss 00:09:23 -to 00:25:33 outputFileसरल संस्करण
nwgat

3
मुझे ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4संस्करण (साथ -copyts) का उपयोग करना था , अन्यथा यह गलत तरीके से कट गया (शुरुआत में काली स्क्रीन के साथ)। हालांकि 2 लिंक के लिए धन्यवाद।
नेक्रोनोमिक्रॉन

यह महान है, आखिरी चीज जो मैं चाहता था वह समापन बिंदु से अवधि की गणना कर रहा था।
टॉमस गैंडर

-To विकल्प उस प्रश्न का उत्तर देता है जो वास्तव में पूछा गया था। शेष उत्तर या तो अपूर्ण या अप्रचलित हैं।
जेम्स बोवेरी

12

यह अजीब है कि किसी ने trim फिल्टर का सुझाव नहीं दिया ।

इनपुट के दूसरे मिनट को छोड़कर सब कुछ छोड़ दें:

ffmpeg -i INPUT -vf trim=60:120

केवल पहले दूसरे को रखें:

ffmpeg -i INPUT -vf trim=duration=1

दूसरे 13 से दूसरे 58 को छोड़कर सब कुछ छोड़ दें:

ffmpeg -i INPUT -vf trim=13:58 OUTPUT

8
हाँ, अच्छा उल्लेख करने के लिए trimऔर atrim। मैं आमतौर पर फ़िल्टर करते समय इनका उपयोग करता हूं, लेकिन उपयोगकर्ताओं को ध्यान देना चाहिए कि फ़िल्टरिंग को फिर से एन्कोडिंग की आवश्यकता होती है
ल्लगन

आप मेरे हीरो हैं। मुझे बुरी तरह से एक फिल्टर की जरूरत थी जिसने ऐसा किया।
फशादश

5

आप इन दो तरीकों का उपयोग कर सकते हैं जो विंडोज और लिनक्स के लिए काम करते हैं।

Ffmpeg द्वारा वीडियो फ़ाइलों को विभाजित करने के दो तरीके हैं। पहले वाला अपने आप में अच्छा है, इससे अधिक - यह तेज है, लेकिन कभी-कभी कुछ खामियों के साथ आउटपुट फाइल बनाता है। तो उन मामलों के लिए वीडियो फ़ाइलों को विभाजित करने का दूसरा तरीका है: यह काफी धीमा है, आउटपुट फाइलें बड़ी हैं, लेकिन ऐसा लगता है कि वे हमेशा उसी गुणवत्ता के स्तर के होते हैं जैसे कि इनपुट फ़ाइलों का उपयोग किया जाता है।

रास्ता 1:

ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi

रास्ता 2:

ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
  • <start>- वीडियो ffmpeg के हिस्से की शुरुआत काटनी है। प्रारूप: 00:00:00.0000अर्थ घंटे: मिनट: सेकंड: मिलीसेकंड।

  • <duration>- वीडियो ffmpeg के हिस्से की अवधि काटनी है। ऊपर के समान प्रारूप।

उदाहरण:

ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi

ffmpeg 1 घंटे 19 मिनट 0 सेकंड से शुरू होने वाली वीडियो फ़ाइल के एक भाग को काट देता है। कट आउट वीडियो अनुक्रम की अवधि 5 मिनट 0 सेकंड है।


ठीक है, thnx डॉक्स की जांच करेंगे और इसे कल आजमाएंगे।
juGGaKNot

3
-sameq"समान गुणवत्ता" का मतलब नहीं है और इसे ffmpeg से हटा दिया गया है। -codec copyइसके बजाय उपयोग करें । इसके अलावा, -toविकल्प के बारे में मत भूलना ।
ललगन

मैंने आपके उद्धरण में आदेशों को सही किया, क्योंकि वे काफी पुराने थे। कृपया इसे ठीक से उद्धृत किए बिना जानकारी को कॉपी-पेस्ट न करें।
slhck

-1

आप इसका उपयोग कर सकते हैं

ffmpeg -sameq -ss clip_start -t duration  -i  original.ogg  clip.ogg

यहां आपको वीडियो की अवधि देनी होगी। अर्थात। 00: 25: 33-00: 09: 23


1
जैसा कि मैंने अन्य उत्तर पर उल्लेख किया है: आपके आदेश के साथ, आप फ़ाइल को फिर से एन्कोडिंग कर रहे हैं, जो बिल्कुल आवश्यक नहीं है और कम गुणवत्ता और बढ़ी हुई प्रसंस्करण समय में परिणाम है।
स्लैक

-2

मैं ffmpef के साथ वीडियो काटने के लिए निम्न सिंटैक्स का उपयोग करता हूं:

ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]

-यह सेकंड में अवधि निर्धारित करने के लिए उपयोग किया जाता है - आप अंतिम समय निर्दिष्ट नहीं कर सकते हैं लेकिन यह आपके लिए काम करना चाहिए।


1
आप फ़ाइल को फिर से एनकोड करने के लिए FFmpeg क्यों सेट कर रहे हैं? ध्यान दें कि -sameq"समान गुणवत्ता" का मतलब बिल्कुल भी नहीं है।
स्लैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.