image + audio = mp4: वीडियो को छोटा कैसे करें?


13

मैं एक MP4 बनाने के लिए एक MP4 के लिए एक JPG जोड़ने के लिए ffmpeg का उपयोग कर रहा हूँ।

जैसा कि वीडियो बनाने के लिए केवल एक छवि है मैं सोच रहा हूं कि क्या वीडियो का आकार कम करने का कोई तरीका है?

कमान:

$ ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:a copy output.mp4

परिणाम:

  • image.jpg = 26.7K (छवि इतनी स्पष्ट नहीं)
  • audio.mp3 = 64.6M (54 मिनट)
  • output.mp4 = 80.6M (वीडियो परिणाम इतना स्पष्ट नहीं है, संगीत अभी भी अच्छा है)

यह MP4 के लिए एक उचित आकार है?


मुझे आश्चर्य है कि अगर यह mp4 के लिए संभव है, ताकि यह केवल एमपी 3 बजाए और स्क्रीन को आकार बचाने के लिए एक jpg पर नियत
रखे

आउटपुट के लिए लक्ष्य खिलाड़ी, उपकरण या साइट क्या है?
ललगन

मैं .mp4 को Youtube.com
SIDU

जवाबों:


19

YouTube पर अपलोड करने के लिए

H.264: सबसे छोटी फाइलें

यह विधि H.264 वीडियो को एनकोड करने के लिए libx264 का उपयोग करती है। यह नीचे की स्ट्रीम कॉपी विधि की तुलना में धीमा है, लेकिन संभावित रूप से एक छोटे फ़ाइल आकार का उत्पादन करेगा।

ffmpeg -loop 1 -framerate 1 -i image.jpg -i music.mp3 \
-c:v libx264 -preset veryslow -crf 0 -c:a copy -shortest output.mkv

स्ट्रीम कॉपी: सबसे तेज़ प्रक्रिया

यह विधि केवल प्रतियां (कोई एन्कोडिंग) छवि को एमकेवी कंटेनर में प्रवाहित नहीं करती है। यह सुपर फास्ट है, लेकिन यदि आकार ऊपर की विधि से महत्वपूर्ण है तो एक छोटी फ़ाइल का उत्पादन कर सकता है।

ffmpeg -loop 1 -framerate 1 -i image.jpg -i music.mp3 -c copy -shortest output.mkv
  • YouTube केवल कुछ के बारे में स्वीकार करता है, इसलिए ये कमांड कुछ तेज़ी से एन्कोडिंग बनाने के लिए, या फ़ाइल का आकार छोटा करने के लिए, और गुणवत्ता को उच्च रखने के लिए कुछ ट्रिक्स का उपयोग करते हैं क्योंकि YouTube जो भी आपको देगा उसे फिर से एनकोड करेगा। आपका खिलाड़ी शायद इसे पसंद नहीं करेगा लेकिन YouTube करेगा।

  • इन उदाहरणों में बहुत कम फ्रेम दर का उपयोग किया जाता है जो कि 25 एफपीएस के डिफ़ॉल्ट से अधिक तेजी से संसाधित होना चाहिए।


किसी भी खिलाड़ी के लिए सबसे अधिक अनुकूलता

ffmpeg -loop 1 -i image.png -i music.mp3 -vf "scale='min(1280,iw)':-2,format=yuv420p" \
-c:v libx264 -preset medium -profile:v main -c:a aac -shortest -movflags +faststart output.mp4
  • यह बहुत प्राचीन उपकरणों को छोड़कर किसी भी चीज के बारे में खेलना चाहिए ( यदि ऐसा है तो परिवर्तन -profile:v mainकरें -profile:v baseline)।

  • अपने ऑडियो इनपुट पहले से ही एएसी है तो बदलने -c:a aacके लिए -c:a copyअनावश्यक फिर से एन्कोडिंग से बचने के लिए।

  • एन्कोडिंग का समय लंबा होगा और फ़ाइल का आकार ऊपर YouTube आदेशों से बड़ा होगा।

  • अधिक जानकारी के लिए देखें FFmpeg Wiki: H.264


क्या आप youtube द्वारा अनुमत न्यूनतम फ्रेम / सेकेंड के साथ 1280 * 720 में a.jpg + a.mp3 = a.mp4 बनाने के लिए कोड की एक पंक्ति प्रदान कर सकते हैं? इसके अलावा जैसा कि केवल एक काम है, क्या मुझे "-लूप 1" को हटाने की आवश्यकता है? अग्रिम में धन्यवाद।
SIDU

@SIDU मौजूदा कमांड वही करता है जो आप अनुरोध करते हैं (MP4 के बजाय MKV को आउटपुट करने के अलावा), लेकिन मुझे नहीं पता कि YouTube द्वारा समर्थित न्यूनतम फ्रेम दर क्या है। आपको बस प्रयोग करना होगा। जब आप YouTube पर अपलोड कर रहे हैं तो आपको MP4 की आवश्यकता क्यों है?
लोलगन

मैंने इसकी कोशिश की, लेकिन यह कहता है:Unrecognized option 'preset'. Error splitting the argument list: Option not found
NineCattoRules

@NineCattoRules अधिक जानकारी के बिना कहना मुश्किल है। अपनी पूरी ffmpegकमांड और कमांड से पूरा कंसोल आउटपुट दिखाने के लिए एक पास्टबिन साइट का उपयोग करें , फिर एक टिप्पणी में लिंक प्रदान करें।
18

धन्यवाद, मैंने mc3man रिपॉजिटरी का उपयोग करके FFMPEG को फिर से इंस्टॉल किया और अब अच्छी तरह से काम करता है!
NineCattoRules

3

केवल जानकारी के साथ आपने यह प्रदान किया है कि मैं क्या सोच सकता हूं।

चलो टुकड़ों द्वारा चलते हैं:

जैसा कि वीडियो में केवल एक छवि जोड़ी गई है। मैं सोच रहा था कि क्या वीडियो का आकार कम करने का एक तरीका है उदाहरण 28 के बजाय बिट दर / दूसरा = 1 बल?

जैसा कि यह अभी भी एक छवि है, बदलने की आवश्यकता नहीं है। अभी भी रहो।

आप वहाँ के बारे में बात कर रहे हैं यह प्रति सेकंड फ्रेम (एफपीएस) नहीं बिटरेट है। और आप अवधारणा में सही हैं। बस एक छवि अभी भी असाइन करें 1 एफपीएस एक समस्या नहीं होगी।

क्या यह mp4 के लिए एक उचित आकार है? क्या छवि का आकार बहुत मायने रखता है?

इस मामले में छवि का आकार एक महत्वपूर्ण वजन नहीं होगा क्योंकि हम अभी भी एक तस्वीर के साथ काम कर रहे हैं। यदि यह एक उच्च गुणवत्ता वाला वीडियो था, तो यह एक अलग मुद्दा है।

क्या मुझे 1080 से 720 * 720 का आकार बदलना चाहिए, और 720p के रूप में आउटपुट के लिए ffmpeg में अतिरिक्त सेटिंग्स करना चाहिए (फिर ffmpeg सेटिंग क्या है :)?

आप जो संकल्प कह रहे हैं, वह 1280x720 है।

मुझे -loop 1यहां विकल्प में बिंदु दिखाई नहीं देता , यह केवल प्रक्रिया को धीमा कर देगा। क्या आपने उपयोग किया -shortestकारण फ़ाइल में 1 से अधिक इनपुट स्ट्रीम है? यदि नहीं, तो इसका उपयोग करने का कोई कारण नहीं है। चूंकि आपने उपयोग किया था इसलिए -acodec copyमुझे यह मानना ​​पड़ेगा कि आप इसे फिर से एनकोड नहीं करना चाहते हैं।

पुन: एन्कोडिंग के बिना 720p 1fps के आउटपुट के लिए और बिटरेट को स्पर्श न करने के लिए:

ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4

उस मामले को असाइन करें जिसमें इसकी एक से अधिक इनपुट स्ट्रीम है और आप चाहते हैं कि ffmpeg कम से कम स्ट्रीम में एन्कोडिंग को समाप्त करे:

ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4

अब यदि आपको बिटरेट को बदलना है (उदाहरण के लिए 1024k को मान लें);

ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4

देखें: आउटपुट बिटरेट को सीमित करें

-c: एक प्रति = इनपुट ऑडियो स्ट्रीम की प्रतिलिपि बनाएँ ताकि हम पुनः एनकोड न करें।

-b: v = बिट्रेट निर्दिष्ट (ठीक नहीं) स्थिर है।

-बससाइज = यह अंतराल है जिसमें औसत बिटरेट की गणना करता है। मतलब सबसे कम नुकसान की गुणवत्ता वाली छवि लेकिन निर्दिष्ट इन- बी: वी के अनुसार अधिक सटीक बिटरेट ।

-s = वीडियो आउटपुट का वास्तविक आकार।

-फ्रेमरेट = इनपुट फ्रेम दर जो हम चाहते हैं कि आउटपुट उपयोग करेगा।

ध्यान दें कि यदि आप अभी भी एक बिंदु पर एक छोटे आकार के वीडियो चाहते हैं तो आपको इसे प्राप्त करने के लिए गुणवत्ता का त्याग करना होगा। और इसे करने के अन्य तरीकों में हानिपूर्ण संपीड़न के साथ पुन: एन्कोडिंग शामिल है।

आप जो कहते हैं, वह जानकारी जो आप प्रदान करते हैं और जो आप करने की कोशिश कर रहे हैं, मुझे लगता है कि ऐसा लगता है कि आपका लक्ष्य एल्बम-कला को एमपी 3 में एम्बेड करना है। यदि आपका लक्ष्य यही है तो यह आपकी आवश्यकताओं को बेहतर बनाएगा:

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3

-map_metadata = ffmpeg मेटाडेटा को शिशु से आउटपुट फ़ाइल में निर्दिष्ट करता है। इस मामले में ( शून्य ) वैश्विक मेटाडेटा।

-मैप 0 = इनपुट स्ट्रीम 1 (ऑडियो)।

-मैप 1 = इनपुट स्ट्रीम 2 (छवि)।

अगर यहां कुछ भी आपके अनुरोध के अनुरूप नहीं है तो कृपया अधिक जानकारी दें।


-framerateएक इनपुट विकल्प के रूप में उपयोग करने और आउटपुट को हटाने पर विचार करें -r: अन्यथा 25 के डिफ़ॉल्ट इनपुट फ्रैमरेट का उपयोग किया ffmpegजाएगा और फिर फ्रेम को प्राप्त करने के लिए छोड़ देंगे -r 1। यदि आप सिर्फ इनपुट फ्रेम रेट घोषित करते हैं तो आउटपुट उसी फ्रेम रेट का उपयोग करेगा।
19

धन्यवाद। नहीं पता था कि सुझाए गए परिवर्तनों को प्रतिबिंबित करने के लिए संपादित।
फेनियर

ट्यूटोरियल के लिए धन्यवाद। मेरी ओरिजिनल ffmpeg लाइन ऑफ़ कोड Google खोज से कॉपी-पेस्ट थी, जो कि मुझे नहीं पता कि क्या है।
SIDU
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.