आपके पास शायद 3 सेकंड के मार्क पर कीफ़्रेम नहीं है। क्योंकि गैर-कीफ़्रेम अन्य फ़्रेमों से अंतर को एन्कोड करते हैं, उन्हें पिछले कीफ़्रेम से शुरू होने वाले सभी डेटा की आवश्यकता होती है।
Mp4 कंटेनर के साथ एक संपादन सूची का उपयोग करके पुन: एन्कोडिंग के बिना एक गैर-कीफ़्रेम में कटौती करना संभव है। दूसरे शब्दों में, यदि 3s से पहले निकटतम कीफ्रेम 0 s पर है तो यह 0 से शुरू होने वाले वीडियो की नकल करेगा और 3 सेकंड में खेल शुरू करने के लिए खिलाड़ी को बताने के लिए एक संपादन सूची का उपयोग करेगा।
यदि आप git मास्टर से नवीनतम ffmpeg का उपयोग कर रहे हैं, तो यह आपके द्वारा प्रदान की गई कमांड का उपयोग करते हुए संपादित सूची का उपयोग करते हुए करेगा। यदि यह आपके लिए काम नहीं कर रहा है, तो आप शायद ffmpeg के पुराने संस्करण का उपयोग कर रहे हैं, या आपका खिलाड़ी संपादन सूचियों का समर्थन नहीं करता है। कुछ खिलाड़ी संपादन सूची की उपेक्षा करेंगे और हमेशा शुरुआत से अंत तक फ़ाइल में सभी मीडिया को चलाएंगे।
यदि आप एक गैर-कीफ़्रेम पर शुरू होने वाली कटौती को ठीक से करना चाहते हैं और चाहते हैं कि यह एक ऐसे खिलाड़ी पर वांछित बिंदु पर शुरू हो, जो संपादन सूचियों का समर्थन नहीं करता है, या यह सुनिश्चित करना चाहता है कि कट हिस्सा वास्तव में आउटपुट फ़ाइल में नहीं है (उदाहरण के लिए) यदि इसमें गोपनीय जानकारी होती है), तो आप ऐसा कर सकते हैं कि पुन: एन्कोडिंग द्वारा ताकि वांछित प्रारंभ समय में एक कीफ़्रेम ठीक हो जाए। यदि आप निर्दिष्ट नहीं करते हैं तो पुन: एन्कोडिंग डिफ़ॉल्ट है copy
। उदाहरण के लिए:
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4
जब पुन: एन्कोडिंग आप अतिरिक्त गुणवत्ता से संबंधित विकल्प या एक विशेष AAC एनकोडर को शामिल करना चाह सकते हैं। विवरण के लिए, वीडियो के लिए ffmpeg का x264 एन्कोडिंग गाइड और ऑडियो के लिए AAC एन्कोडिंग गाइड देखें ।
इसके अलावा, -t
विकल्प एक अवधि निर्दिष्ट करता है, अंत समय नहीं। उपरोक्त कमांड 3s पर शुरू होने वाले 8s वीडियो को एन्कोड करेगा। 3s पर शुरू करने और 8s उपयोग पर समाप्त करने के लिए -t 5
। आप ffmpeg आप भी जगह ले सकता है के वर्तमान संस्करण उपयोग कर रहे हैं -t
के साथ -to
निर्दिष्ट समय पर समाप्त करने के लिए उपरोक्त आदेश में।