जब FFmpeg किसी वीडियो के एक हिस्से को काटता है, तो कटे हुए वीडियो का पहला भाग जम जाता है


3

मैं एक MP4 फ़ाइल से एक हिस्सा काटने के लिए इसका उपयोग करता हूं:

ffmpeg -i input.mp4 -vcodec copy -acodec copy -ss 00:36:18 -to 00:39:50 output.mp4

यह अच्छा काम करता है लेकिन वीडियो की छवि हमेशा शुरुआत में 1 सेकंड के लिए फ्रीज हो जाती है।

इससे कोई फर्क नहीं पड़ता कि मैं किस वीडियो फ़ाइल की कोशिश करता हूं और उसमें से एक हिस्सा काट देता हूं, वीडियो शुरू होने से पहले 1 सेकंड का समय लगता है।

एक उदाहरण है मैं क्या देख रहा हूँ।

जवाबों:


2

मुद्दा यह हो सकता है कि वीडियो केवल मुख्य फ़्रेमों के आधार पर कटौती करने का प्रयास कर रहा है न कि इन-इन फ़्रेम और आपके शुरुआती समय के बीच 00:36:18 कीफ्रेम से कुछ सेकंड आगे है। इसका उपयोग करने के लिए समाधान होना चाहिए -copyinkf विकल्प जिसे मैनुअल में वर्णित किया गया है :

स्ट्रीम कॉपी करते समय, कॉपी किए गए नॉन-की फ्रेम भी मिलते हैं   इसकी शुरुआत हुई।

तो आपकी आज्ञा जो इस प्रकार दिखती है:

ffmpeg -i input.mp4 -vcodec copy -acodec copy -ss 00:36:18 -to 00:39:50 output.mp4

तब इस तरह से देखने के लिए समायोजित करने की आवश्यकता होगी -copyinkf इसमें मिलाया:

ffmpeg -i input.mp4 -vcodec copy -acodec copy -copyinkf -ss 00:36:18 -to 00:39:50 output.mp4

1

जिस टाइमस्टैम्प से आप कॉपी कर रहे हैं, वह मुख्य फ़्रेमों के बीच है, -vcodec कॉपी का उपयोग हमेशा इस व्यवहार में होता है यदि इंटर फ्रेम कोडेक की प्रतिलिपि बनाई जाती है और आपका इनपुट कुंजी फ़्रेम पर प्रारंभ नहीं होता है।

आपके विकल्प हैं कि या तो एक पूर्ण एनकोड करें (यानी। नहीं-पीवीसीकोड कॉपी) या तलाश के लिए एक अलग टाइमस्टैम्प चुनें। आप ffprobe उदा का उपयोग करके सभी प्रमुख फ़्रेमों का स्थान पा सकते हैं।

ffprobe -select_streams v -show_frames -print_format csv -show_entries frame=key_frame,pkt_dts_time input.mp4  | grep "frame,1"

तीसरे कॉलम में सभी प्रमुख फ़्रेमों के टाइमस्टैम्प्स (सेकंड में) शामिल हैं, आप अपने लक्ष्य टाइमस्टैम्प के बाद एक निकटतम चाहते हैं, लेकिन नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.