मैंने इस प्रश्न के अन्य प्रस्तावित उत्तरों में से अधिकांश का परीक्षण किया। परीक्षण डेटा निष्कर्ष नीचे हैं। ये प्रस्तावित उत्तर हैं जिनका मैंने परीक्षण किया:
(BR), बिटरेट संशोधित करें, का उपयोग कर:
ffmpeg -i $infile -b $bitrate $newoutfile
(सीआर) का उपयोग करते हुए लगातार दर कारक से भिन्न:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) वीडियो स्क्रीन-आकार बदलें (उदाहरण के लिए इसका पिक्सेल आकार आधा), का उपयोग कर:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(बीएल) H.264 प्रोफ़ाइल को "बेसलाइन" में बदलकर, उपयोग करें:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) का उपयोग करते हुए डिफ़ॉल्ट ffmpeg प्रोसेसिंग का उपयोग करें:
ffmpeg -i $infile $outfile
डेटा
- "आकार" - मूल के संबंध में परिवर्तित वीडियो का प्रतिशत पिक्सेल आकार।
- "बिटरेट" - मूल और परिवर्तित वीडियो के बिटरेट।
- "परिभाषा" - वीडियो का पिक्सेल आकार।
- "कन्वर्ट" - सेकंड में वीडियो कन्वर्ट करने का समय।
मैंने प्रस्तावित पद्धति का उपयोग करके (बीएल) के लिए लक्ष्य बिटरेट की गणना की।
=== फ़ाइल A - नोड को प्रोपेल कोणीय - Fnbixa7Ts6M.mkv =
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== फ़ाइल B - Angular _ के साथ ग्राफक्लाइन का उपयोग करके - ली कोस्टेलो- OGyFxqt5INw.m.mv/ =
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
निष्कर्ष
(SZ) विधि निश्चित रूप से सबसे तेज तरीका है। यह 2X से 4X तेज था। यह उच्च-डेफ वीडियो पर बहुत अधिक समस्या हो सकती है, क्योंकि वीडियो की वास्तविक लंबाई की तुलना में अन्य सभी तरीकों को परिवर्तित होने में अधिक समय लगता है! उदाहरण के लिए, (CR) विधि ने 21 मिनट के वीडियो को परिवर्तित करने में 53 मिनट का समय लिया।
SZ विधि निश्चित रूप से सबसे अच्छी विधि है यदि वीडियो की परिभाषा स्क्रीन की परिभाषा से बड़ी है जो इसे प्रदर्शित करेगी। उदाहरण के लिए, यदि आपका फोन केवल 1080p चित्र प्रदर्शित कर सकता है, तो उसे 3840x2160 वीडियो भेजना सिर्फ बेकार है। यह 1080p के आकार के आधे हिस्से के लिए सबसे अच्छा होगा।
कुछ प्रस्तावित उत्तर वास्तव में कुछ वीडियो के आकार को बढ़ाते हैं। उदाहरण के लिए, (BR) विधि 1080p नमूने के आकार को दोगुना से अधिक कर देती है। हालांकि इसने 2160p का आकार एक तिहाई कर दिया। उच्च-डीईएफ़ नमूने के लिए, (CR), (BL) और (DF) विधियाँ सभी वीडियो के आकार को बढ़ाती हैं।
सही (या सर्वोत्तम) उत्तर
अपने लक्ष्य प्रदर्शन द्वारा समर्थित अधिकतम के लिए पहले रिज़ॉल्यूशन को कम करना हमेशा सबसे अच्छा होता है।
यदि आप फ़ाइल आकार को और कम करना चाहते हैं, तो यह व्यक्तिगत विकल्पों पर निर्भर करेगा। आप या तो सूचना सामग्री कम कर सकते हैं या संपीड़न बढ़ा सकते हैं।
आप रिज़ॉल्यूशन को कम कर सकते हैं यदि ऐसा कुछ नहीं है जो आपको चिंतित करता है।
यदि वीडियो में तेज़ एक्शन दृश्य शामिल नहीं हैं, तो आप फ्रेम दर कम करना चाहते हैं।
यदि आपके पास एक शक्तिशाली प्रोसेसर है और स्थान एकमात्र मुद्दा है, तो आप संपीड़न दर बढ़ा सकते हैं।
बिट दर कई कारकों का एक संयोजन है। तो बस बिट दर को कम करने के लिए ffmpeg बताने से आप अपने इच्छित परिणाम नहीं दे सकते हैं।
कम जानकारी सामग्री का दूसरा तरीका रंग की गहराई को कम करना है। यह कैसे किया जाए इस पर अभी चर्चा नहीं हुई।
ffmpeg
मैन पेज-fs
आउटपुट आकार को सीमित करने के लिए एक विकल्प दिखाता है , कुछffmpeg -i in.avi -fs 100M out.avi
काम करता है ?