बेहतर उत्तर , स्पष्टीकरण के साथ, स्लैक और मुलव्या से स्मार्ट सुझावों को शामिल करना, गैर-आवश्यक मापदंडों से छीन लिया गया।
ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -b:a 256k -c:v copy -map 0:a:0 -map 1:v:0 output.mp3
ffmpeg ऑडियो / वीडियो मैनुपुलेशन टूल: पहले से ही ओपी द्वारा चुना गया है, यह इस नौकरी के लिए विशेष रूप से फिट है।
-i video.mp4 पहला इनपुट फ़ाइल: कुछ ऑडियो वाला वीडियो जिसे हम निकालना चाहते हैं।
-i cover.jpg दूसरी इनपुट फ़ाइल, एक छवि जिसे हम प्रदर्शित करते हैं जब हम परिणामी ऑडियो फ़ाइल खेलते हैं।
-acodec libmp3lame हम LAME एनकोडर का उपयोग करके एक .mp3 फ़ाइल बनाना चाहते हैं।
-b:a 256kयह ऑडियो ट्रैक को निरंतर 256Kb / s के लिए बिटरेट सेट करता है। एक चतुर विकल्प एक बिट्रेट के साथ सांकेतिक शब्दों में बदलना होगा, जो गुणवत्ता पैरामीटर को निर्दिष्ट करता है : -q:a 0अधिकतम गुणवत्ता के लिए पूछता है, जबकि -q:a 4अक्सर कथित ऑडियो गुणवत्ता और बिटरेट (और इसलिए, फ़ाइल आकार) के बीच एक अच्छा समझौता दर्शाता है।
-c:v copyयह इंगित करता है कि वीडियो स्ट्रीम (.jpg छवि) को पुन: कनेक्ट नहीं किया जाना चाहिए, लेकिन इसे वैसे ही कॉपी किया जाना चाहिए। अनावश्यक फॉर्मेट और संभावित गुणवत्ता हानि से बचने के लिए यह उपयोगी है जब एक हानिपूर्ण प्रारूप में पुन: लोड किया जाता है। हमारे मामले में, इस पैरामीटर के बिना छवि को .jpg से डिकोड किया जाएगा और .png को एन्कोड किया जाएगा, जो जाहिर तौर पर मूल प्रारूप है जो डिफ़ॉल्ट रूप से चुना जाता है। यह गुणवत्ता में होने वाली हानि का प्रतिनिधित्व नहीं करता है क्योंकि .Png हानिप्रद है, लेकिन अधिक बार नहीं होने के कारण फ़ाइल आकार में वृद्धि नहीं होगी, इस तथ्य के कारण कि .jpg (हानिपूर्ण होना) आमतौर पर एक बेहतर संपीड़न दर प्रदान करता है।
-map 0:a:0यह पहली ( 0:) इनपुट फ़ाइल से उपयोग की जाने वाली स्ट्रीम का चयन करता है : इसमें पहला ( :0) ऑडियो ( a) स्ट्रीम होता है जिसमें यह होता है।
-map 1:v:0यह दूसरी ( ) इनपुट फ़ाइल से पहली ( :0) वीडियो ( v) स्ट्रीम का चयन करता है 1:।
output.mp3 इस पैरामीटर का नाम पहले से ही सुझाए जाने के लिए चालाक रूप से चुना गया था, यह उस आउटपुट ऑडियो (.mp3) फ़ाइल के लिए दिया जाना चाहिए जिसका नाम निगमित छवि के साथ होना चाहिए।
मूल उत्तर
यह मेरी शादी से एक वीडियो (.mp4) और एक तस्वीर (.jpg) को एक साथ रखकर एक स्थिर (ऑडियो .mp3) फ़ाइल बनाता है:
ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -metadata title=video -b:a 256k -map_metadata 0 -map 0:1 -map 1 output.mp3
इनपुट स्ट्रीम का चयन करने के लिए ffmpeg प्रलेखन देखें -map, जो यहाँ प्रासंगिक विकल्प है।
मैंने पहली बार कमांड को सरलता से चलाया -map 0 -map 1और यह जानकारी मिली:
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Stream #1:0 -> #0:2 (mjpeg (native) -> png (native))
इस प्रकार मुझे पता था कि मैं 1उस फ़ाइल से स्ट्रीम (aac ऑडियो) चाहता था जिसमें एक इंडेक्स नंबर है 0, यानी वीडियो फ़ाइल; इसलिए इसे स्पष्ट रूप से चुना जाना चाहिए था -map 0:1 -map 1।