7 एफपीएस पर ली गई छवियों से 30 एफपीएस पर एक वीडियो को कैसे एन्कोड किया जाए


21

मुझे वीडियो एन्कोडिंग के बारे में कोई जानकारी नहीं है, मेरे पास ओपनजीएल में लिखा गया एक आवेदन है और मैं इसे फ़्रेम को pngछवियों में सहेज रहा हूं । मेरे ऐप से फ्रेम 7 एफपीएस पर हैं और मैं उन लोगों से एक वीडियो बनाने की कोशिश कर रहा हूं।

इस उद्देश्य के लिए मैं इस तरह से ffmpeg का उपयोग करता हूं

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

जो इस साइट से लिया गया था , हालांकि मैं सोच रहा था कि क्या ऐसा वीडियो होना संभव है जो 30 एफपीएस पर एनीमेशन दिखाता है?



-framerateवांछित परिणाम प्राप्त करने के लिए बस पैरामीटर को घुमाएं ।
nullptr

जवाबों:


21

मैं समान कार्य करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं।

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4

कमांड को तोड़ना:

ffmpeg             <- call ffmpeg
  -framerate 30    <- set the input framerate to 30
  -i img%03d.png   <- read PNG images with filename img001, img002, img003, etc..
                     img can be changed to another prefix
                     %03d can be changed to %04d for 0001, %05d for 00001 formats, etc...
  -c:v libx264     <- Set the codec to libx264
  -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp
  -crf 23          <- set the Constant Rate Factor to 23 (default value)
  -output.mp4      <- the output filename

यह 30 एफपीएस ( -framerate 30विकल्प) पर इनपुट पढ़ता है और 23 के निरंतर दर कारक ( विकल्प) के libx264साथ कोडेक का उपयोग करके इसे एन्कोड करता है ।-crf 23


26

विचार करने के लिए दो फ्रेम दर हैं: इनपुट और आउटपुट।

डिफ़ॉल्ट रूप से इनपुट फ्रेम दर 25 है, और आउटपुट इनपुट के रूप में उसी फ्रेम दर का उपयोग करेगा जब तक कि आप इसे अन्यथा नहीं बताते।

इनपुट और आउटपुट के लिए समान फ्रेम दर

यदि आप इनपुट और आउटपुट को एक ही फ्रेम दर पर रखना चाहते हैं , तो बस इनपुट फ्रेम दर प्रदान करें। यह उदाहरण 30000/1001 (NTSC वीडियो) की एक फ्रेम दर निर्धारित करेगा:

ffmpeg -framerate 30000/1001 -i input output.mp4
  • वैकल्पिक रूप से, इस उदाहरण में, आप ntscइसके बजाय उपयोग कर सकते हैं 30000/1001, लेकिन इसका उपयोग न करें 29.97क्योंकि यह सटीक या सही नहीं है। अन्य फ्रेम दर उपनाम देखें ।

  • क्योंकि डिफ़ॉल्ट इनपुट फ्रेम दर 25 है, और यदि आप केवल आउटपुट फ्रेम दर निर्धारित करते हैं, तो क्षतिपूर्ति करने के लिए फ़्रेम को गिरा दिया जाएगा या दोहराया जाएगा। यही कारण है कि इस स्थिति में इनपुट फ्रेम दर निर्धारित है।

इनपुट और आउटपुट के लिए अलग फ्रेम दर

कभी-कभी आप चाहते हैं कि इनपुट फ्रेम दर और आउटपुट फ्रेम दर अलग-अलग हो। उदाहरण के लिए, आप फ़्रेम को एक निश्चित दर पर इनपुट करना चाहते हैं, और फिर फ़्रेम को डुप्लिकेट या ड्रॉप कर सकते हैं ताकि आउटपुट में एक अलग फ्रेम दर हो। आप अपने आउटपुट स्वरूप कंटेनर, अपने खिलाड़ी और / या अपने डिवाइस के साथ संगतता समस्याओं के कारण ऐसा करना चाह सकते हैं:

ffmpeg -framerate 10 -i input -r 25 output.mp4
  • इस उदाहरण में फ़्रेमों को 10 से 25 तक जाने के लिए डुप्लिकेट किया जाएगा। कंसोल आउटपुट आपको बताएगा कि फ़्रेम गिराए जा रहे हैं या डुप्लिकेट किए जा रहे हैं।

  • छवि फ़ाइल demuxer का उपयोग करता है -framerate, उत्पादन फ्रेम दर का उपयोग कर सेट कर दिया जाता है, जबकि -r

  • आपको -pix_fmt yuv420pकुछ परिस्थितियों में विकल्प जोड़ना पड़ सकता है यदि आप H.264 वीडियो ffmpegआउटपुट कर रहे हैं ( कंसोल आउटपुट आपको चेतावनी देगा यदि आपको आवश्यकता है तो)। यह एक क्रोमा सबसम्पलिंग योजना का उपयोग करेगा जो सभी खिलाड़ियों के अनुकूल है।


2
ffmpeg वर्जन 3.2.2 मुझे बताता है: Option framerate not found.:-(
erik

हाँ आप सही है। लेकिन फिर भी विकल्प -framerateमौजूद नहीं है। मैं अपनी टिप्पणी को हटा दूंगा, क्योंकि यह वास्तव में एक निश्चित फ्रैमरेट के साथ छवियों की एक श्रृंखला को वीडियो में परिवर्तित करने से कोई लेना-देना नहीं है।
इरिक

4
@ हार्इक -framerateमौजूद है। इसका उपयोग इमेज और रॉविडियो डेमोक्रेट्स और कुछ इनपुट डिवाइस जैसे x11grab और v4l2 द्वारा किया जाता है।
ल्लगन

1
विकल्प कहां -framerateप्रलेखित है? मैंने man ffmpegपृष्ठ पढ़ा है , लेकिन मुझे यह नहीं मिला। कोई सूचक, शायद?
17

1
ठीक है, यह पाया ... FFMPEG-DEVICES(1)
Atcold

1
ffmpeg -framerate 30 -i img%03d.png output.mp4  

ffmpeg के नवीनतम संस्करण में पर्याप्त होगा।

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