2012-12-11 13 views
6

मेरे पास 30 सेकंड के विभिन्न आकारों (यानी 1024x768 और 900x942) और एक ऑडियो फ़ाइल (audio.mp3) के साथ कई छवियां हैं और मुझे उनसे एक वीडियो बनाने की आवश्यकता है। परिणाम% d.png (1 से 4) और audio.mp3परिणाम वीडियो के लिए छवियों और ऑडियो में शामिल हों

ffmpeg -y -i result%d.png -i audio.mp3 -r 30 -b 2500k -vframes 900 
-acodec libvo_aacenc -ab 160k video.mp4 

वीडियो video.mp4 30 सेकंड लेकिन 3 पहली छवियों है पता चला है:

मैं अब के साथ कोशिश कर रहा हूँ बहुत जल्दी जब आखिरी छवि ऑडियो के अंत तक बनी रहती है।

प्रत्येक छवि को ऑडियो के अंत तक बराबर समय में दिखाया जाना चाहिए। कोई भी जानता है कि यह कैसे करें?

छवियों की संख्या कभी-कभी अलग-अलग होगी।

+0

हाय, मैं भी एक ऑडियो फ़ाइल और एक छवि के संयोजन के द्वारा एक वीडियो बनाने के लिए एक तरह से तलाश कर रहा हूँ। मैंने इसके लिए आदेश निकाला: ffmpeg -i allmapeople.mp3 -i Penguins.jpg video_finale.mpg मैंने ffmpeg का उपयोग करके कई 2 ट्यूटोरियल की कोशिश की जो .so फ़ाइल उत्पन्न करता है। लेकिन मुझे अभी भी ऑडियो और एक छवि को गठबंधन करने का कोई तरीका नहीं मिला। कृपया मेरी मदद करें!!! – TharakaNirmana

उत्तर

0

यह मदद करनी चाहिए: http://ffmpeg.org/trac/ffmpeg/wiki/Create%20a%20video%20slideshow%20from%20images

का उपयोग -r, आप प्रत्येक छवि प्रदर्शित करना चाहते सेकंड की संख्या निर्धारित कर सकते हैं।

+0

हाय, मैं एक ऑडियो फ़ाइल और एक छवि के संयोजन से एक वीडियो बनाने का एक तरीका भी खोज रहा हूं। मैंने इसके लिए आदेश निकाला: ffmpeg -i allmapeople.mp3 -i Penguins.jpg video_finale.mpg मैंने ffmpeg का उपयोग करके कई 2 ट्यूटोरियल की कोशिश की जो .so फ़ाइल उत्पन्न करता है। लेकिन मुझे अभी भी ऑडियो और एक छवि को गठबंधन करने का कोई तरीका नहीं मिला। कृपया मेरी मदद करें!!! – TharakaNirmana

1

वीडियो बनाने के लिए = n छवि + ऑडियो का कोई

चरण 1)

आप इन चित्रों में से वीडियो का निर्माण करेगा, के रूप में

Process proc = Runtime.getRuntime().exec(ffmpeg + " -y -r "+duration +" -i " + imagePath + " -c:v libx264 -r 15 -pix_fmt yuv420p -vf fps=90 " + imageVideoPath); 
      InputStream stderr = proc.getErrorStream(); 
      InputStreamReader isr = new InputStreamReader(stderr); 
      BufferedReader br = new BufferedReader(isr); 
      String line = null; 
      while ((line = br.readLine()) != null) 
      {  
       //System.out.println(line); 
      } 
      int exitVal = proc.waitFor(); 
      proc.destroy();  

कहाँ अवधि = छवियाँ का कोई/ऑडियो की अवधि यानी 1 सेकंड में आप चाहते हैं कि कितनी छवियां

चरण 2)

Process proc4VideoAudio = Runtime.getRuntime().exec(ffmpeg +" -i " + imageVideoPath + " -i "+ audioPath + " -map 0:0 -map 1:0 " + videoPath); 
       InputStream stderr1 = proc4VideoAudio.getErrorStream(); 
       InputStreamReader isr1 = new InputStreamReader(stderr1); 
       BufferedReader br1 = new BufferedReader(isr1); 
       String line1 = null; 
       while ((line1 = br1.readLine()) != null) 
       {  
        //System.out.println(line1); 
       } 
       int exitVal1 = proc4VideoAudio.waitFor();  
       proc4VideoAudio.destroy(); 

दोनों चरण 1 और चरण 2 क्रम में अब चलाया जा सकता है। यदि आप इसे मैन्युअल रूप से करना चाहते हैं तो केवल run Runtime.getTime.exec(..)

नीचे दिया गया कोड इसे सिंक्रनाइज़ करने के लिए है।

** छवियों और ऑडियो से एक चरण में वीडियो बनाने के लिए एफएफएमपीईजी के बयान को भी नोट करें, आपको बताए गए वही समस्या देता है और यदि समाधान ऑडियो फ़ाइल के लिए छवियों की ठीक संख्या के लिए स्थिर नहीं होगा।

ये ImagePath, VideoPath, audioPath सभी स्ट्रिंग्स

3

FFMPEG संस्करण हैं: 3.2.1-1

UBUNTU 16.04.1

कल्पना कीजिए, आप एक एमपी 3 ऑडियो फ़ाइल नामित wow.mp3 में है उस मामले में, निम्न आदेश एमपी 3 की अवधि सेकंड में मिलेगा।

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 wow.mp3 

एक बार आपके पास सेकंड में अवधि हो (कल्पना करें कि मुझे 11.36 सेकेंड मिल गए हैं)।

ffmpeg -y -framerate 1/3.79 -start_number 1 -i ./swissGenevaLake_%d.jpg -i ./akib.mp3 -c:v libx264 -r 25 -pix_fmt yuv420p -c:a aac -strict experimental -shortest output.mp4 

यहां छवियों ./swissGenevaLake_1.jpg, ./swissGenevaLake_2.jpg हैं: अब के बाद से मैं 3 छवियों है, मैं के लिए (11,36/3 = 3,79) प्रत्येक छवि चलाना चाहते हैं, उसके बाद निम्न का उपयोग करें , और ./swissGenevaLake_3.jpg।

-फ्रामरेट 1/3.784 का अर्थ है, प्रत्येक छवि 3.784 सेकेंड के लिए चलती है। v libx264:

-start_number 1 का अर्थ, छवि नंबर एक, ./swissGenevaLake_1.jpg अर्थ

-c साथ शुरू होता है वीडियो कोडेक 264

-r 25: उत्पादन वीडियो फ़्रेमरेट 25

-pix_fmt yuv420p: आउटपुट वीडियो पिक्सेल प्रारूप।

-c: एक aac: aac

-shortest का उपयोग कर ऑडियो सांकेतिक शब्दों में बदलना: जैसे ही ऑडियो किया जाता है वीडियो खत्म।

output.mp4: आउटपुट फ़ाइल नाम

अस्वीकरण: मैं कई आकारों की छवियों विलय का परीक्षण नहीं किया।

संदर्भ:

https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images

https://trac.ffmpeg.org/wiki/Encode/AAC

http://trac.ffmpeg.org/wiki/FFprobeTips

संबंधित मुद्दे