पहले आपको FFmpeg प्रोफाइल और डायरेक्ट कमांडलाइन विकल्पों का उपयोग करने के बीच अंतर को समझना चाहिए। या जहाँ भी ffmpeg स्थापित किया गया था उसमें स्थित फ़ाइल -vpre
का उपयोग करता है। यह विकल्प = मूल्य युग्मों की एक श्रृंखला है , और आपके मामले में आपको इसे स्वयं परिभाषित करना होगा (कम से कम मुझे एक पूर्व निर्धारित नहीं पता है जिसे ffmpeg के साथ शिप किया गया है)।.ffpreset
/usr/share/ffmpeg/
baseline
मैं प्रीसेट का उपयोग करने के खिलाफ सिफारिश करूंगा जब तक कि आप इसे स्वयं नहीं बनाते हैं और जानते हैं कि कमांड लाइन विकल्प क्या हैं। मैं वर्षों से ffmpeg का उपयोग कर रहा हूं, और मैंने कभी प्रीसेट का उपयोग नहीं किया है - मैंने वास्तव में कभी नहीं किया है।
अधिकांश उपकरणों के साथ संगत H.264 वीडियो बनाने के लिए एक सामान्य कमांड लाइन होगी:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
कुछ नोट:
एचटीएमएल 5 में व्यापक समर्थन के लिए H.264 / AAC सबसे अच्छा संयोजन है। हालांकि जिन ब्राउज़रों के पास H.264 डिकोडर्स नहीं हैं, उन्हें VP8 / Vorbis वीडियो की भी आवश्यकता होगी। कुछ कमांड लाइन उदाहरणों के लिए, इस उत्तर को देखें । अन्य कोडेक्स के लिए विकिपीडिया का ब्राउज़र सपोर्ट पेज भी देखें ।
H.264 मोबाइल उपकरणों में भी अच्छा काम करता है।
-profile:v baseline
और -level 3.0
विकल्प केवल पुराने मोबाइल उपकरणों कि 264 की CPU- सघन सुविधाओं को संभाल नहीं सकता के लिए आवश्यक हैं। आप आमतौर पर इन्हें छोड़ सकते हैं या इसके बजाय उपयोग कर सकते हैं -profile:v main
।
सीआरएफ गुणवत्ता सेट करता है (1828 एक उचित सीमा है, कम का मतलब बेहतर गुणवत्ता है)। आप निश्चित रूप से -b:v 1000k
या इसी तरह के साथ एक निश्चित बिटरेट का उपयोग कर सकते हैं । एक बिटरेट चुनें जो वीडियो के रिज़ॉल्यूशन से मेल खाता हो। कुछ कम शक्ति वाले उपकरण अनावश्यक रूप से उच्च बिटरेट को संभालने में सक्षम नहीं हो सकते हैं।
-movflags faststart
के बाद से यह बजाय फ़ाइल की शुरुआत करने के लिए कंटेनर मेटाडाटा ले जाता है अंत में इसे छोड़ने का विकल्प, स्ट्रीमिंग के लिए आवश्यक है। इससे प्लेबैक तुरंत पूरी तरह से लोड होने वाली फ़ाइल के लिए प्रतीक्षा करने के बजाय शुरू हो जाएगा।
हालाँकि, यह सब आपके द्वारा लक्षित सभी उपकरणों के लिए न्यूनतम सामान्य भाजक को खोजने के लिए नीचे आता है, जो हमेशा मौजूद नहीं हो सकता है। निश्चित रूप से आप H.264 की तुलना में किसी अन्य (अर्थात, बदतर ) कोडेक का उपयोग नहीं करना चाहेंगे । वास्तव में, ग्राहकों को बेसलाइन-एन्कोडेड वीडियो की पेशकश करना भी समझदारी नहीं होगी जो मुख्य या उच्च प्रोफ़ाइल को डिकोड कर सकता है। आप कम डिकोडिंग जटिलता के खिलाफ गुणवत्ता बंद व्यापार करेंगे।
मेरे अनुभव से, एंड्रॉइड डिवाइस बस ठीक एक MP4 कंटेनर में AAC-LC ऑडियो के साथ बेसलाइन H.264 खेल सकते हैं। मुझे इससे कोई समस्या नहीं है। वास्तव में, कुछ डिवाइस उच्च प्रोफ़ाइल भी खेल सकते हैं, हालांकि यह आधिकारिक तौर पर समर्थित नहीं है। iOS आमतौर पर बेसलाइन H.264 को भी सपोर्ट करता है, लेकिन आप कुछ डिवाइस पर भी मेन प्रोफाइल का इस्तेमाल कर सकते हैं। कुछ दिशानिर्देशों के लिए यह पोस्ट देखें (जो थोड़ी पुरानी है)।
यदि आपके पास प्लेबैक समस्याओं वाले उपयोगकर्ता हैं, तो आपको यह पता लगाना होगा कि कौन सा वीडियो समस्याएँ पैदा कर रहा है, और हार्डवेयर और खिलाड़ी सॉफ़्टवेयर का उपयोग करने के बारे में अधिक जानकारी प्राप्त करें। तब हम उस विशेष मामले के निवारण के बारे में बात कर सकते थे।