फ़ाइल का आकार ffmpeg के साथ कैसे सीमित करें?


10

मैं एक वीडियो को सांकेतिक शब्दों में बदलना चाहता हूं, जिसकी लंबाई 60 सेकंड है, लक्ष्य तक या अधिकतम आकार 10 एमबी

मेरे दो दृष्टिकोण हैं। एक को एफएफएमपीईजी-विकी में समझाया गया है, और दूसरा जो मुझे प्रलेखन में मिला है। दुर्भाग्य से, मुझे इस बात पर स्पष्टीकरण नहीं मिला कि कब किस विधि का उपयोग करना है।

क्या उन तरीकों में से किसी की सिफारिश की गई है? यदि नहीं, तो प्रत्येक विधि के अपसाइड / डाउनसाइड क्या हैं?

1) वीडियो की लंबाई से मेल करने के लिए बिटरेट की गणना और सेट करें जैसा कि ffmpeg-wiki में बताया गया है

(10 एमबी * 8192 [एमबी को किलोबाइट में परिवर्तित करता है]) / 60 सेकंड = ~ 1365 kbits / s कुल बिटरेट 1365k - 128k (वांछित ऑडियो बिटरेट) = 1237k वीडियो बिटरेट

ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4

2) -fs पैरामीटर का उपयोग करें और इसे ffmpeg का पता लगाने दें।

ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4

1
अपने 1 उदाहरण में, पहला कदम भी उपयोग करना चाहिए libx264के रूप में c:v। में fsउदाहरण के लिए, आप वीडियो में ट्रांसकोडिंग नहीं कर रहे हैं, के बाद से -c:v copyकिया जाता है। तो, presetऔर crfभी कोई प्रभाव नहीं है।
ज्ञान

यह मेरे लिए उपयोगी था: stackoverflow.com/a/34547102/470749
रयान

जवाबों:


11

fsपैरामीटर एनकोड बंद हो जाएगा एक बार यह अपने मूल्य पूरी करता है। इसलिए, यदि आउटपुट 10MB15 वें सेकंड को एन्कोडिंग करते समय निशान से टकराता है, तो यह आपके आउटपुट फ़ाइल की अवधि है।

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

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