Ffmpeg के साथ पहलू अनुपात के संरक्षण के लिए अलग-अलग चौड़ाई वाले वीडियो का आकार बदलें


17

मैं हमारी कंपनी की वेबसाइट के लिए वीडियो फ्लैश करने के लिए बहुत सारी वीडियो फ़ाइलों को परिवर्तित करना चाहता हूं। मेरी एक आवश्यकता है कि सभी वीडियो 360p प्रारूप में होने चाहिए, इसलिए उनका आकार Nx360 होगा।

FFmpeg का उपयोग करता है -s तर्क लक्ष्य संकल्प निर्दिष्ट करने के लिए के रूप में डब्ल्यू x एच । मुझे W idth का पता नहीं है , क्योंकि यह स्रोत फ़ाइल पहलू अनुपात पर निर्भर करता है। यदि स्रोत 640x480 है, तो लक्ष्य 480x360 होगा। यदि स्रोत 848x480 है, तो लक्ष्य 636x360 होगा।

वहाँ ffmpeg के कुछ स्विच के साथ यह करने के लिए एक रास्ता है? यह पहलू अनुपात को संरक्षित करेगा और मैं केवल लक्ष्य वीडियो की ऊंचाई निर्दिष्ट करूंगा?

मैं आसानी से इसे एक प्रोग्राम बनाकर हल कर सकता था जो कि स्रोत वीडियो आकार प्राप्त करने के लिए ffprobe लॉन्च करेगा, पहलू अनुपात की गणना करेगा और फिर एक नई चौड़ाई की गणना करेगा।

जवाबों:


15

आप इस वीडियो फ़िल्टर को जोड़ने का प्रयास कर सकते हैं:

-vf "scale=-1:360" 

-1 इस मामले में इसका मतलब चर / अज्ञात है, इस प्रकार यह फिल्टर इनपुट के पहलू अनुपात को संरक्षित करने के लिए वीडियो का आकार बदल देता है, 360 को ऊंचाई के रूप में रखता है।

मेरे लिए यह वही परिणाम है जो आप खोज रहे हैं।



6

मौजूदा उत्तर पर टिप्पणी करने के लिए पर्याप्त अंक नहीं हैं, लेकिन यह उपयोगकर्ता 65600 के उत्तर का अनुसरण कर रहा है और आगे जा रहा है जब विशिष्ट कोडेक्स को 2/2 से विभाज्य चौड़ाई / ऊंचाई की आवश्यकता होती है (उदाहरण libx264)

जब आप -1 (वैरिएबल / अज्ञात) का उपयोग करते हैं, तो यह एक विषम # लौट सकता है। एक समान # गारंटी देने के लिए, आपको कुछ ऐसा उपयोग करना होगा trunc(ow/a/2)*2, जो पहलू अनुपात को संरक्षित करते हुए स्वचालित रूप से निकटतम # की गणना करेगा।

-vf "scale=trunc(ow/a/2)*2:360"

स्रोत: https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" "स्व-संदर्भित" त्रुटि के कारण काम नहीं करता है।

इसके बजाय, निम्नलिखित काम करता है:

-vf "स्केल = -1: 360, स्केल = ट्रंक (iw / 2) * 2: 360"

स्व-संदर्भित इस प्रकार दो लगातार स्केलिंग से बचा जाता है, और दूसरे चरण में गोलाई किया जाता है। प्यारा, है ना? :)


साधारण फ़िल्टरग्राफ 'स्केल = -1: 480; स्केल = ट्रंक (iw / 2) * 2: 480 'में वास्तव में एक इनपुट और आउटपुट नहीं है। फ़िल्टर खोलने में त्रुटि!
digitalPBK
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.