FFMPEG / libx264: एक चर फ्रेम दर कैसे निर्दिष्ट करें लेकिन अधिकतम के साथ?


16

FFMPEG / libx264 (-r / -framerate) को एक निश्चित फ्रेम दर प्रदान करने के बजाय, मैं एक MAXIMUM मान के साथ एक चर फ्रेम दर निर्दिष्ट करना चाहूंगा, और यह ठीक होने के साथ libx264 को फ्रेम दर को नीचे करने की अनुमति देगा। यहां विचार यह है कि जब अतिरिक्त विस्तारित फ्रेम (जो मेरे स्रोत वीडियो में बहुत कुछ होता है) जैसा कुछ है, तो अतिरिक्त संपीड़न प्राप्त करना है ।

मुझे एहसास है कि एक भविष्य कहनेवाला या द्विदिश एमपीईजी फ्रेम वास्तव में अच्छी तरह से संपीड़ित करेगा, लेकिन यह भी संभव है कि स्रोत फ्रेम दर उस से छोटी हो जिसे मैं ट्रांसकोड करने का इरादा रखता हूं (संभवतः एक बड़ी धारा में जिसके परिणामस्वरूप!)।


1
कहां (या कैसे) आप वास्तव में x264 को VFR का उपयोग करने के लिए कहते हैं?
slhck

यही मेरा सवाल है।
मार्क जेरोलिमेटोस

2
आपका प्रश्न था कि अधिकतम के साथ VFR को कैसे निर्दिष्ट किया जाए । मुझे X264 का उपयोग करके VFR एन्कोडिंग को निर्दिष्ट करने के किसी भी तरीके के बारे में पता नहीं है। (मैं इस बिंदु पर ffmpeg के बारे में भी बात नहीं कर रहा हूं, क्योंकि यह आपके स्रोत और x264 के बीच एक और परत है।)
slhck

@MarkGerolimatos क्या आपको अपना उत्तर मिला?
डॉ। अंजी

नहीं मैंने कभी नहीं किया।
मार्क गेरोलिमैटोस

जवाबों:


19

निराश है कि आपको कोई जवाब नहीं मिला है, मैं कम से कम अन्य लोगों के सवालों का जवाब देने के बारे में जा रहा था कि एफएफएमईजी से वीएफआर (न कि वी बी आर) आउटपुट कैसे सक्षम किया जाए ।

इसका उत्तर अजीब नाम वाला -vsyncविकल्प है। आप इसे कुछ अलग विकल्पों में सेट कर सकते हैं, लेकिन जिसे आप चाहते हैं वह है '2' या vfr। मैन पेज से:

-vsync पैरामीटर
वीडियो सिंक विधि। अनुकूलता कारणों से पुराने मानों को संख्याओं के रूप में निर्दिष्ट किया जा सकता है। नए जोड़े गए मूल्यों को हमेशा तार के रूप में निर्दिष्ट करना होगा।

  • ०, प्रशस्त

    • प्रत्येक फ़्रेम को इसके टाइमस्टैम्प के साथ डेमूकर से मक्सर तक पारित किया जाता है।
  • 1, सी.एफ.एफ.

    • फ़्रेम को डुप्लिकेट किया जाएगा और वास्तव में अनुरोधित स्थिर फ्रेम दर को प्राप्त करने के लिए गिरा दिया जाएगा।
  • २, वी.एफ.आर.

    • तख्ते को उनके टाइमस्टैम्प के माध्यम से पारित किया जाता है या 2 तख्ते को उसी टाइमस्टैम्प से रोकने के लिए गिरा दिया जाता है।
  • ड्रॉप

    • पैशाच के रूप में लेकिन सभी टाइमस्टैम्प को नष्ट कर देता है, जिससे मक्सर फ्रेम-दर के आधार पर नए टाइमस्टैम्प उत्पन्न करता है।
  • -1, ऑटो

    • Muxer क्षमताओं के आधार पर 1 और 2 के बीच चयन करता है। यह डिफ़ॉल्ट विधि है।

ध्यान दें कि टाइमस्टैम्प को इसके बाद मक्सर द्वारा संशोधित किया जा सकता है। उदाहरण के लिए, इस मामले में कि प्रारूप विकल्प avoid_negative_ts सक्षम है।

साथ-साथ आप चुन सकते हैं कि किस स्ट्रीम से टाइमस्टैम्प लिया जाना चाहिए। आप या तो वीडियो या ऑडियो को अपरिवर्तित छोड़ सकते हैं और शेष स्ट्रीम को अपरिवर्तित में सिंक कर सकते हैं।

हालाँकि, मेरे पास यह पर्याप्त प्रतिष्ठा नहीं है कि मैं उस 'उप-प्रश्न' का उत्तर देने के लिए एक टिप्पणी पोस्ट करूं, जो सभी को प्रतीत हो। लेकिन मेरे पास कुछ विचार थे, जिनके बारे में मैं ईमानदारी से बहुत आशावादी नहीं था ... लेकिन मैंने जो पहली कोशिश की वह वास्तव में काम की थी । इसलिए।

आपको बस -vsync 2विकल्प के साथ विकल्प को संयोजित करने की आवश्यकता है -r $maxfps, निश्चित रूप से जहां $maxfpsआप चाहते हैं कि अधिकतम फ्रैमरेट के साथ प्रतिस्थापित करें! और यह काम करता है! यह स्रोत फ़ाइल से फ़्रेमों की नकल नहीं करता है, लेकिन यह उन फ़्रेमों को छोड़ देगा जो फ़ाइल को अधिकतम फ़्रैमरेट पर जाने का कारण बनाते हैं!

डिफ़ॉल्ट रूप से ऐसा लगता है कि -r $maxfpsअपने आप ही यह फ्रेम को डुप्लिकेट / ड्रॉप करने का कारण बनता है ताकि एक स्थिर फ्रैमरेट प्राप्त किया जा सके, और -vsync 2खुद ही पीटीएस मूल्यों को प्रभावित किए बिना सीधे फ्रेम को खींचने का कारण बनता है।

मैं इस बारे में आशावादी नहीं था क्योंकि मुझे पहले से ही पता था कि -r $maxfpsइसे एक स्थिर फ्रैमरेट में रखा जाता है। मैं ईमानदारी से एक त्रुटि की उम्मीद कर रहा था या इसके लिए जो भी पहले या आखिरी या जो भी आया, उसका पालन करना था। तथ्य यह है कि यह वही करता है जो मैं चाहता था कि मुझे FFMPEG डेवलपर्स से काफी प्रसन्नता हुई।

मुझे आशा है कि इससे आपको या किसी और को बाद में मदद मिलेगी यदि आपको यह जानने की आवश्यकता नहीं है।


3
-copytsके रूप में अच्छी तरह से उपयोगी हो सकता है
rogerdpack

1

मैं एक MAXIMUM मान के साथ एक वैरिएबल फ्रेम दर निर्दिष्ट करना चाहूंगा, और यह फ्रेम दर को नीचे ले जाने के लिए libx264 की अनुमति देता है क्योंकि यह फिट दिखता है। जब एक विस्तारित स्टिल फ्रेम जैसा कुछ होता है, तो यहां विचार अतिरिक्त संपीड़न प्राप्त करना है

मेरी समझ में, यह संभवतः तुलनात्मक रूप से अनाड़ी तरीके से हो सकता है, लेकिन कुछ जटिल और उलझे हुए कारणों के लिए अवांछनीय है

भले ही एक x264 स्ट्रीम में एक फ्रेमरेट (ओं) हो, लेकिन फ्रेम दर एक कोडेक की तुलना में कंटेनर-स्तर की समस्या अधिक है।

एक Pststhrough VFR एन्कोड में, वहाँ होगा जो अनिवार्य रूप से एक पाठ फ़ाइल है जो फ्रेम दर / समय पर फ्रेम दर से अधिक है, और एक स्रोत को एन्कोडिंग में tcfile-in या tcfile-out जैसे फ़ंक्शन एन्कोडिंग के माध्यम से टाइमस्टैम्प को पास करता है। , दर स्थानों को मैप करने और वीडियो को स्रोत से सुसंगत रूप से रखने के लिए।

कम-फ्रैमर्ट विचार एक तार्किक है, लेकिन कई कारणों से काम नहीं करता है। हालांकि X264 कुछ क्षमताओं के साथ VFR- अवगत है, मुझे नहीं लगता कि कोई विश्लेषण फ़ंक्शन है जो फ़ाइल आकार को कम करने के क्रम में फ्रैमरेट को अलग-अलग करेगा (एक तरह से कई बिटरेट नियंत्रणों के लिए एनालागस)।

स्रोत भी एक समस्या है: VFR स्रोत डिफ़ॉल्ट रूप से अपने फ्रेम परिवर्तनशीलता को बनाए रखेंगे, लेकिन जाहिरा तौर पर चर बिटरेट पर एक सीएफआर फ़ाइल एन्कोडिंग (एक अच्छा विचार कभी-कभी, एस्प जब टेलीसीन की जरूरत होती है) तो बस उसी सीएफआर का उत्पादन होगा।

इसका मतलब है कि आपको शायद हाथ से बिटरेट लिखना होगा (यानी फ़ाइल में धीमे दृश्यों के टाइमस्टैम्प्स), या एविसिनथ के लिए डुप, डुपअप और सटीक डेडअप जैसे फ्रेम डिकिमेशन एल्गोरिदम का सहारा लेना होगा । यदि आपके वीडियो में बहुत कम गति है, तो कुछ फ्रेम (यहां तक ​​कि आधे?) को फेंक दिया जाएगा। समस्या यह है कि ये एल्गोरिदम उन्नत नहीं हैं, और "वास्तविक जीवन" फुटेज के साथ अच्छे विकल्प नहीं बनाते हैं, जो कि सर्वश्रेष्ठ एनकोड में योगदान देगा।

इसके अलावा, I और B फ्रेम जैसी चीजों को हटाने वाले फ्रेम समय के साथ उपलब्ध विवरण की मात्रा को कम कर देते हैं, जिससे गति "स्टेपी" दिखती है और अन्य बुनियादी वीडियो मापदंडों के साथ हस्तक्षेप कर सकती है और अलियासिंग जैसी कलाकृतियों का कारण बन सकती है।

और जिस तरह से क्वांटाइज़र के काम करने के कारण, x264 वास्तव में कम गति के इन दृश्यों में अव्यवस्था को और अधिक कम कर देगा। जब तक आपके पास समान चित्रों का स्लाइड शो नहीं होगा, तब गति (यदि केवल अनाज और अन्य कलाकृतियां हैं) और गुणवत्ता में नुकसान होगा जो कि बिटरेट में कठोर बदलाव के बिना नहीं देखा जाएगा।

और अंत में, इसका कारण यह नहीं है कि आप जो चाहते हैं, वह करने के लिए बहुत सारे विकल्प हैं। x264 केवल अस्थायी संपीडन का उपयोग करके बिटरेट को प्रबंधित करने में बहुत अच्छा है (आंशिक फ्रेम में परिवर्तन दर्ज करता है)। 1/2 फ्रैमरेट में जाने से फ़ाइल का आकार आधे में नहीं कटेगा; 10% शायद कम गति या एनीमेशन से उम्मीद करने के लिए एक यथार्थवादी लाभ है।

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

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

Takeaway यह है कि कई बिटरेट सेटिंग्स का अनुकूलन करने में समय बिताने से फ़ाइल आकार प्रबंधन के तरीके में बहुत अधिक लाभ होगा, और आपके वीडियो की गुणवत्ता में सुधार होगा, बजाय थोड़ा लाभ के जटिलताओं के कारण। जब तक आप प्रसारण या मीडिया मानकों के लिए लक्ष्य नहीं रखते हैं, तब तक मूल FPS का संरक्षण शायद सबसे अच्छा विचार है। प्लेयर्स के बीच गति में छोटे बदलावों के कारण प्लेयर्स (एडिटर्स के विपरीत), और आपके वीडियो में जितने अधिक फ्रेम होते हैं, प्लेबैक को सुचारू रूप से चलाने और फ़ाइल के आकार को छोटा करने में सक्षम होते हैं।

यहाँ एन्कोडिंग के इस भ्रामक पहलू के साथ मानक जानकारी और फ़ोरम चर्चा के लिंक का एक संग्रह है:

- एविसिंथ डिकिमेशन उपकरण

- एफपीएस -r स्विच
- x264 जनरल (tcfile, एफपीएस)
- timecode फ़ाइल मानकों
- स्तर और प्रोफाइल
- लघु, स्पष्ट CFR / VFR सेटिंग सारांश ("framerate" अनुभाग)

doom9, videohelp, और c सैद्धांतिक चर्चा
1 2 3 4 5 6 7

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