2015-06-22 6 views
11

में मुख्य-फ़्रेम अंतराल बदलने के लिए मैं 5 सेकंड के लिए एक इनपुट वीडियो की मुख्य फ़्रेम अंतराल सेट करना चाहता था। केवल तभी मैं एफएफएमपीईजी का उपयोग कर एक स्थिर 5 सेकंड एचएलएस विभाजन प्राप्त कर सकता हूं। FFmpeg का उपयोग कर 5 सेकंड तक कीफ्रेम अंतराल को कैसे सेट करें? (एफएफएमपीईजी प्रॉम्प्ट लाइन कोड की सराहना की गई)कैसे ffmpeg

उत्तर

16

आपको फिर से कोड करना होगा। X264 के कीरिंट पैरामीटर को 5 * एफपीएस पर सेट करें और दृश्यकट अक्षम करें। यदि आपकी एफपीएस 24 है उदाहरण के लिए:

ffmpeg -i <input> -vcodec libx264 -x264-params keyint=120:scenecut=0 -acodec copy out.mp4 

यह स्पष्ट रूप से गुणवत्ता के लिए अनुकूल नहीं है लेकिन यह आपकी मांग से मेल खाएगा।

no-scenecut से scenecut=0 को बदलने के लिए संपादित किया गया, श्वास-लड़के के सुझाव के अनुसार।

+1

इस के लिए धन्यवाद ... और आप ठीक है, अधिक बार नहीं की तुलना में कर रहे हैं, मुख्य-फ़्रेम अंतराल के साथ खिलवाड़ गुणवत्ता के साथ खिलवाड़ कर रहा है। –

+0

क्या आपके पास कोई स्रोत है जो कहता है "अगर हम कीफ्रेम अंतराल सेट करते हैं, गुणवत्ता के साथ कुछ बुरा होता है"? –

+1

यह या तो गुणवत्ता या बिटरेट दर्द होता है। स्मार्ट एन्कॉर्ड्स एक दृश्यकट होने पर कीफ्रेम रखेगा ताकि भविष्य के फ्रेम में एक साफ संदर्भ हो। यदि आप अंतराल को मजबूर करते हैं, तो भविष्य के फ्रेम के लिए कीफ्रेम बिल्कुल इष्टतम नहीं होंगे और यह समग्र रूप से स्ट्रीम को नुकसान पहुंचाएगा। – Ely

9

साई।

नो-सीनकट विकल्प के बारे में गलत जानकारी मुझे याद रखने से अधिक समय तक चल रही है। नो-सीनकट के लिए कभी भी कोई मान दर्ज न करें।

दस्तावेज़ीकरण का एक लिंक here पाया जा सकता है।

जी 120 23.976fps सामग्री के लिए एक पांच दूसरा GOP बनाने के लिए 120 फ्रेम के एक GOP परिभाषित करेगा:

FFmpeg के लिए आप निम्न दो स्विच का उपयोग करने की जरूरत है। यह नो-सीनकट विकल्प के संयोजन के साथ काम करता है ..

-x264opts no-scenecut GF मान के अनुसार keyframes को बनाएगा जो FFmpeg का उपयोग करता है। Libx264 के लिए डिफ़ॉल्ट एक दृश्य परिवर्तन का पता लगाने पर एक कीफ्रेम बनाना है। यदि आप उस विकल्प के बिना MediInfo का उपयोग करके आउटपुट फ़ाइल का निरीक्षण करते हैं तो "scenecut = 40" दिखाई देगा। जब ठीक से किया जाता है तो "scenecut = 0" होगा। यदि इस विकल्प का उपयोग नहीं किया जाता है तो एबीआर सामग्री के लिए कीफ्रेम को गलत तरीके से ग़लत किया जाएगा और सेगमेंट आकार अप्रत्याशित होंगे।

इसके लिए मेरा शब्द न लें, कृपया निम्नलिखित को एक बैश खोल के नीचे चलाएं जहां $ inputfile उस फ़ाइल का नाम है जिसका आप विश्लेषण करना चाहते हैं। यदि आप ऊपर दिखाए गए दो स्विच का उपयोग करते हैं तो आप कमांड प्रॉम्प्ट पर कीफ्रेम डंप की एक बहुत ही तालमेल देखेंगे।

ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv $inputfile | grep -n I | cut -d ':' -f 1 

तुम भी एक लेख है कि मैं के बारे में उचित ABR फ्रेम गठबंधन सामग्री here बनाने का तरीका लिखा संदर्भित कर सकते हैं।

+0

पूर्ण सटीकता के लिए, आपको 'frame = key_frame' का उपयोग करना चाहिए। आई-फ्रेम होना संभव है जो कि कीफ्रेम नहीं हैं। – Mulvya

 संबंधित मुद्दे