मैं ffmpeg के साथ h.264 प्रोफ़ाइल स्तर कैसे सेट कर सकता हूं?


16

मेरे पास एक फिल्म है (m4v / h.264 / AAC) जो मेरे मैक पर अच्छा खेलता है लेकिन मुझे हाल ही में पता चला है कि यह मेरे Apple TV3 पर नहीं चलेगा। इस मूवी फ़ाइल के गुणों को देखने के बाद, मैंने देखा कि इसमें एक प्रोफ़ाइल High@4.1 है, लेकिन Apple TV3 का केवल High@4.0 तक ही अंतर है। मुझे लगता है कि एकमात्र गुण जो इस वीडियो को असंगत बना रहा है वह अधिकतम वीडियो बिट दर है, अन्य सभी गुण ऐसे दिखते हैं जैसे वे High@4.0 में समर्थित हैं।

मैं इस वीडियो को High@4.0 पर डाउनग्रेड करने के लिए ffmpeg का उपयोग कैसे कर सकता हूं?

या क्या मुझे इसके बजाय वास्तविक वीडियो (अधिकतम बिट दर) को बदलना होगा जो इस वीडियो को 4.0 के बजाय 4.1 बनाता है? मुझे चिंता है कि अगर मैं बस बिट दर को बदल देता हूं, हालांकि फ़ाइल तब High@4.0 के साथ संगत होगी, फिर भी इसे High@4.1 के रूप में 'टैग' किया जाएगा और इसलिए अभी भी मेरे Apple TV3 पर नहीं चलेगा।

जवाबों:


22

जब एन्कोडिंग के साथ libx264, आप H.264 प्रोफ़ाइल और स्तर को इसके साथ सेट कर सकते हैं:

  • -profile:v- में से एक high, mainया baseline(और अन्य, लेकिन यह अप्रासंगिक यहाँ है)
  • -level:v- जैसे कि H.264 मानक के अनुबंध A में परिभाषित किया गया है, उदाहरण के लिए 4.0

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

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4

यहाँ हमने सिर्फ ऑडियो स्ट्रीम को कॉपी किया है क्योंकि यह प्रभावित नहीं होगा।

आउटपुट का मेटाडेटा में सही प्रोफ़ाइल और स्तर सेट होगा। एन्कोडिंग करते समय आप यह देख सकते हैं, जहां x264कुछ इस तरह से कहा गया है:

[libx264 @ 0x7fb26103a000] profile High, level 4.0

MediaInfo कंटेनर और कोडेक विवरण का विश्लेषण करने में आपकी मदद कर सकता है।

बेशक, वीडियो को पुन: लोड करना कुछ हद तक इसकी गुणवत्ता को कम कर देगा, यह देखते हुए कि आप फिर से एक हानिपूर्ण रूपांतरण लागू कर रहे हैं। -crfनिरंतर गुणवत्ता पैरामीटर को प्रभावित करने के लिए विकल्प सेट करने का प्रयास करें । यहां डिफ़ॉल्ट मान 23 है, जबकि 18 और 28 के बीच मान को समझदार माना जाता है। कम का मतलब है बेहतर गुणवत्ता। यदि आपके इनपुट में 65,000 kBit / s तक की थोड़ी दर है, तो संभावना है कि यह रूपांतरण के बाद भी बहुत अच्छा लगेगा।


1
यह अच्छी तरह से काम किया। दुर्भाग्य से यह मेटाडाटा में से कुछ खो गया, लेकिन वास्तविक वीडियो में गुणवत्ता में कोई ध्यान देने योग्य परिवर्तन नहीं हुआ। रुचि से बाहर, निम्न कमांड ने एक ही चीज हासिल की होगी? ffmpeg -i input.mp4 -vcodec x264 -vprofile high -vlevel 4.0 -acodec copy output.mp4
सैम

हाँ, -vविकल्प :vलोगों के उपनाम हैं। क्या मेटाडेटा खो दिया?
slhck

मुझे लगता है कि यह सिर्फ कलाकृति थी जो खो गई थी। मुझे नहीं पता कि क्या तकनीकी रूप से मेटाडेटा माना जाता है ... क्या कलाकृति वास्तव में फ़ाइल के भीतर निहित है? इससे पहले कि मैंने इसे फिर से पूरा जोड़ा, मैंने बाकी सब की जाँच नहीं की।
सैम

अब मेरे पास एक समान समस्या वाली एक अलग फाइल है। यह गलत प्रोफ़ाइल स्तर है, लेकिन बाकी स्पेक्स मेरे आवश्यक स्तर (4.0) के साथ संगत लगते हैं। यदि मैं आपके द्वारा ऊपर दिए गए आदेशों का उपयोग करता हूं, तो क्या यह तब तक डेटा को अछूता नहीं छोड़ेगा जब तक कि यह दर्ज किए गए प्रोफ़ाइल स्तर के साथ असंगत नहीं है? असल में, मैं ffmpeg को टैग के अलावा किसी भी डेटा को नहीं छूना चाहता हूं जो कहता है कि यह क्या प्रोफ़ाइल और स्तर है। क्या यह संभव है या मानों को निर्धारित करने के लिए सभी मान (नाइट्रेट, फ्रैमरेट आदि) निर्धारित करने जा रहा है?
सैम

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

1

अपनी टिप्पणी के संदर्भ में , इस आदेश का प्रयास करें:

ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4

चियर्स


0

हालाँकि मैंने अन्यथा पढ़ा है (अर्थात अलग-अलग इनपुट प्रारूप) जब मैंने x265 से x264 में रीकोडिंग करते समय "-Movflags use_metadata_flag" का उपयोग किया और यह काम कर गया!

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