मैं ffmpeg के साथ वीडियो से ऑडियो कैसे निकाल सकता हूं?


227

मैंने वीडियो से ऑडियो निकालने के लिए निम्न कमांड की कोशिश की:

ffmpeg -i Sample.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 Sample.mp3

लेकिन मुझे निम्नलिखित आउटपुट मिलता है

libavutil     50.15. 1 / 50.15. 1
libavcodec    52.72. 2 / 52.72. 2
libavformat   52.64. 2 / 52.64. 2
libavdevice   52. 2. 0 / 52. 2. 0
libavfilter    1.19. 0 /  1.19. 0
libswscale     0.11. 0 /  0.11. 0
libpostproc   51. 2. 0 / 51. 2. 0
SamplE.avi: Invalid data found when processing input

किसी की मदद कर सकते हैं, कृपया?

जवाबों:


406

पुन: एन्कोडिंग के बिना ऑडियो स्ट्रीम निकालने के लिए:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac
  • -vn कोई वीडियो नहीं है
  • -acodec copy कहते हैं कि पहले से ही वहाँ है कि एक ही ऑडियो स्ट्रीम का उपयोग करें।

सही फ़ाइल नाम एक्सटेंशन सेट करने के लिए, यह देखने के लिए कि यह कौन सा कोडेक है, आउटपुट पढ़ें।


54
और केवल ffmpeg चलाने के बजाय यह जाँचने के लिए कि यह कौन सा ऑडियो स्ट्रीम है, ffprobe इनपुट-वीडियो का उपयोग करें ।avi
FlorianB

15
यदि आप केवल वीडियो स्ट्रीम से ऑडियो निकालते हैं, तो ऑडियो की लंबाई वीडियो की लंबाई से कम हो सकती है। यह सुनिश्चित करने के लिए कि ऐसा नहीं होता है, दोनों ऑडियो और वीडियो को एक ही कॉल के साथ निकाल दें ffmpeg, जैसे "ffmpeg -i vid.avi -map 0: a audio.wav -map 0: v onlyvideo.avi
BlenderBree

2
इस उत्तर को एक कमांड के साथ विस्तारित करना बहुत अच्छा होगा जो कच्चे AAC को एक M4A कंटेनर में संलग्न करता है।
ग्रास डबल

8
इस सटीक स्थिति में, गंतव्य पथ में बस ".Aac" को ".m4a" से बदल दें। ffmpeg आपके इरादे का अनुमान लगाने के लिए काफी स्मार्ट है, और यह परिणाम को M4A कंटेनर में समेट देता है :)
ग्रास डबल

1
FWIW, मैंने एक PHP स्क्रिप्ट तैयार की है, ताकि मैं सिर्फ इनपुट वीडियो फ़ाइल निर्दिष्ट करूं, और यह स्वचालित रूप से आउटपुट ऑडियो फ़ाइल के विस्तार को निर्धारित करता है: superuser.com/questions/1301901/-
ग्रास डबल

117

AVI सर्वोत्तम उपयोग -q से उच्च गुणवत्ता वाले एमपी 3 को एनकोड करने के लिए : परिवर्तनीय बिट दर के लिए:

ffmpeg -i sample.avi -q:a 0 -map a sample.mp3

यदि आप एक वीडियो से ऑडियो के एक हिस्से को निकालना चाहते हैं, तो शुरुआती टाइमस्टैम्प को निर्दिष्ट करने के लिए -ss विकल्प का उपयोग करें, और एन्कोडिंग अवधि को निर्दिष्ट करने के लिए -t विकल्प, जैसे 3 मिनट और 45 सेकंड के लिए 5 सेकंड:

ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3
  • टाइमस्टैम्प को HH: MM: SS.xxx प्रारूप या सेकंड में होना चाहिए।

  • यदि आप -t विकल्प निर्दिष्ट नहीं करते हैं तो यह अंत तक जाएगा।

कार्य उदाहरण:

  1. डाउनलोड ffmpeg
  2. कमांड प्रॉम्प्ट (स्टार्ट> रन> सीएमडी) खोलें या लिनक्स / मैक पर एक टर्मिनल खोलें
  3. ffmeg.exe के साथ निर्देशिका के लिए सीडी
  4. अपनी कमांड जारी करें और आउटपुट फ़ाइल की प्रतीक्षा करें (या किसी भी त्रुटि का निवारण करें)

यहां छवि विवरण दर्ज करें


3
यहां -q:aमानों के लिए एक मार्गदर्शिका दी गई है: trac.ffmpeg.org/wiki/Encode/MP3 शून्य उच्चतम-गुणवत्ता वाला VBR सेटिंग है, जो आमतौर पर साइन CBR रेंज के ऊपरी भाग (जहां 320 kbit / s) के ऊपरी भाग में औसत बिटरेट का परिणाम है। अधिकतम, शायद उस बिंदु से परे थोड़ा सा जिस पर दोषरहित संपीड़न अधिक उपयुक्त हो जाता है)।
एवगेनी सर्गेव

3
और क्या करता -map aहै?
इयूलियन ओनोफ्रेई

कैविएट: यह एक हानिपूर्ण संपीड़न के साथ ऑडियो को फिर से एन्कोडिंग है, जो गुणवत्ता को थोड़ा कम करेगा। यदि मूल पहले से ही संपीड़ित है, तो आप दो बार गुणवत्ता को नीचा दिखाएंगे, जो ध्यान देने योग्य हो सकता है या नहीं।
डेविड एमएच

यह कमांड मेरे लिए काम करता है, जब ऊपर वाला -vnऐसा नहीं करता है।
एमएम

12

कमांड लाइन सही है और एक वैध वीडियो फ़ाइल पर काम करती है। मुझे यकीन है कि आपने एमपी 3 के साथ काम करने के लिए सही लाइब्रेरी स्थापित की है, एक अन्य ऑडियो कोडेक के साथ लंगड़ा ओ जांच स्थापित करेंगे।

आमतौर पर

ffmpeg -formats

या

ffmpeg -codecs

पर्याप्त जानकारी देंगे ताकि आप और अधिक जान सकें।


11

ffmpeg -i sample.aviआपको आपकी फ़ाइल के लिए ऑडियो / वीडियो प्रारूप जानकारी देगा। सुनिश्चित करें कि आपके पास इनपुट धाराओं को पार्स करने के लिए उचित पुस्तकालय हैं। यह भी सुनिश्चित करें कि फ़ाइल भ्रष्ट नहीं है।


अब, मुझे सही परिणाम मिला, जब मैंने एक ही टिप्पणी की कोशिश की थी .Mkv vedio.why के लिए यह काम नहीं कर रहा है .AVI, वहाँ किसी भी ffmpeg कमांड को बदलने के लिए है .AVI
user1269669

1
AVI या MKV कंटेनर प्रारूप को संदर्भित करता है जो बहुत सारे विभिन्न ऑडियो / वीडियो प्रारूपों को पकड़ सकता है। आप AVI ऑडियो परिवर्तित करना नहीं चाह रहे हैं, आप ऑडियो फ़ाइल को AVI फ़ाइल में बदलना चाहते हैं, जिसे आपने अभी तक निर्दिष्ट नहीं किया है। AVI फ़ाइल के भीतर किस तरह का ऑडियो ट्रैक है यह देखने के लिए मैंने ऊपर सूचीबद्ध कमांड का उपयोग किया है। यदि यह एमपी 3 है आप लंगड़ा की तरह एक एमपी 3 पुस्तकालय के साथ FFMPEG संकलित करने के लिए की आवश्यकता होगी lame.sourceforge.net
SMP

6

एमपी 3 ऑडियो ffmpeg.org को एन्कोड करने के लिए निम्न उदाहरण दिखाता है:

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3

मैंने केवल input.wavवीडियो फ़ाइल नाम के साथ प्रतिस्थापित करके एक वीडियो से ऑडियो निकाला है । इसका 2मतलब है 190 केबी / सेकंड। आप ऊपर दिए गए मेरे लिंक पर अन्य गुणवत्ता स्तर देख सकते हैं।


वह उदाहरण एक ऑडियो फ़ाइल को एक अलग प्रारूप में परिवर्तित करने के लिए है, न कि इसे वीडियो से निकालने के लिए।
इयूलियन ओनोफ्रेई

@IulianOnofrei, जैसा कि मैंने अपने उत्तर में बताया है, आप ऑडियो फ़ाइल को वीडियो फ़ाइल से बदल सकते हैं। इसने मेरे लिए काम किया।
Suragch

6

यहाँ मैं क्या इस्तेमाल किया है:

ffmpeg -i my.mkv -map 0:3 -vn -b:a 320k my.mp3

विकल्प स्पष्टीकरण:

  • my.mkv एक स्रोत वीडियो फ़ाइल है, आप अन्य प्रारूपों का भी उपयोग कर सकते हैं
  • -map 0:3मैं वीडियो फ़ाइल से 3 धारा चाहता हूँ। अपने एन को वहां रखें - वीडियो फ़ाइलों में अक्सर कई ऑडियो स्ट्रीम होते हैं; आप इसे छोड़ सकते हैं या -map 0:aडिफ़ॉल्ट ऑडियो स्ट्रीम लेने के लिए उपयोग कर सकते हैं । ffprobe my.mkvवीडियो फ़ाइल में क्या स्ट्रीम है, यह देखने के लिए चलाएँ ।
  • my.mp3 एक लक्ष्य ऑडियो फ़ाइल नाम है, और ffmpeg आंकड़े हैं, जो मुझे इसके विस्तार से एक एमपी 3 चाहिए। मेरे मामले में स्रोत ऑडियो स्ट्रीम ac3 DTS है और अभी जो मैं चाहता था उसकी नकल नहीं कर रहा था
  • 320 k एक वांछित लक्ष्य बिटरेट है
  • -वन का मतलब है कि मुझे लक्ष्य फ़ाइल में वीडियो नहीं चाहिए

2

केवल अनुमान है:

-ab 192

होना चाहिए

-ab 192k

ऐसा लगता है कि एक समस्या हो सकती है, लेकिन शायद ffmpeg इसे सही करने के लिए काफी स्मार्ट है।


2
मान्य टिप्पणी, और मैंने इसे बदलने के लिए ओपी के प्रश्न को संपादित किया, लेकिन यह कुछ भी नहीं बदलता है (अधिकतर, यह एक चेतावनी पैदा करता है)।
जीन-फिलिप पेलेट

2

यदि ऑडियो को एवी में लपेटा जाता है, तो एमपी 3-प्रारूप के साथ शुरू करने के लिए नहीं है, आपको निर्दिष्ट करने की आवश्यकता हो सकती है -acodec mp3 अतिरिक्त पैरामीटर के रूप में । या जो भी आपका एमपी 3 कोडेक है (लिनक्स सिस्टम पर शायद -acodec libmp3lame)। आप -f mp3एमपी 3 को प्रारूप "बल" के लिए निर्दिष्ट करने के बजाय, एक ही प्रभाव, प्लेटफ़ॉर्म-अज्ञेयवादी भी प्राप्त कर सकते हैं , हालांकि ffmpeg के सभी संस्करण अभी भी उस स्विच का समर्थन नहीं करते हैं। आपकी माइलेज भिन्न हो सकती है।


2

रूपांतरण के बिना निकालने के लिए मैं एक संदर्भ मेनू प्रविष्टि का उपयोग करता हूं - लिनक्स में फ़ाइल प्रबंधक कस्टम क्रिया के रूप में - निम्नलिखित को चलाने के लिए (वीडियो में ऑडियो प्रकार क्या है यह जांचने के बाद, उदाहरण के लिए वीडियो युक्त ogg ऑडियो के लिए):

bash -c 'ffmpeg -i "$0" -map 0:a -c:a copy "${0%%.*}".ogg' %f 

जो ffmpeg कमांड पर आधारित है ffmpeg -i INPUT -map 0:a -c:a copy OUTPUT

मैंने -map 0:1उस समस्या के बिना उपयोग किया है, लेकिन, जैसा कि @LordNeckbeard ने एक टिप्पणी में कहा, "स्ट्रीम 0:1को हमेशा ऑडियो होने की गारंटी नहीं है। -map 0:aइसके बजाय का उपयोग -map 0:1अस्पष्टता से बचना होगा।"


1
स्ट्रीम 0:1हमेशा ऑडियो होने की गारंटी नहीं है। के -map 0:aबजाय का उपयोग -map 0:1अस्पष्टता से बचना होगा।

@LordNeckbeard ~ मैं इसे ध्यान में रखूंगा, धन्यवाद।

मैंने mediainfoऑडियो ट्रैक का निर्धारण किया , और इसे इस तरह से चुना: -map 0:a:1जहाँ a: 1 दूसरा ऑडियो ट्रैक इंडेक्स है, thx! -c:a copyयह बहुत तेज कर दिया!
कुम्भ पावर

1

मूल वीडियो फ़ाइल के मापदंडों को बनाए रखते हुए वीडियो फ़ाइल से ऑडियो निकालने का सरल तरीका खोजने वाले लोगों के लिए, आप इसका उपयोग कर सकते हैं:

ffmpeg -i <video_file_name.extension> <audio_file_name.extension>

उदाहरण के लिए, दौड़ना:

ffmpeg -i screencap.mov screencap.mp3

mp3एक movवीडियो फ़ाइल से एक ऑडियो फ़ाइल निकालता है ।


सरल और काम करता है। अन्य सभी समाधान इतने जटिल क्यों हैं? +1
स्कॉट बिग्स

1
सवाल यह है कि यह एक डिलीट वोट क्यों है ?!
इयूलियन ओनोफ्रेई

-1

का प्रयोग करें -b:aबजाय -abके रूप में -abअब पुरानी है, यह भी सुनिश्चित करें कि आपके इनपुट फ़ाइल पथ सही है बनाते हैं।

एक वीडियो से ऑडियो निकालने के लिए मैंने नीचे कमांड और उसके ठीक काम का उपयोग किया है।

String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-vn", "-ar", "44100", "-ac", "2", "-b:a", "256k", "-f", "mp3", outputFileAbsolutePath};

यहाँ,

  • -y - बिना पूछे आउटपुट फाइल को ओवरराइट करें।
  • -i- FFmpeg -iविकल्प द्वारा निर्दिष्ट इनपुट "फाइलों" की एक अनियंत्रित संख्या से पढ़ता है
  • -vn - वीडियो रिकॉर्डिंग अक्षम करें
  • -ar - यदि इनकोड किया गया है तो ऑडियो धाराओं के लिए नमूना दर निर्धारित करता है
  • -ac - ऑडियो चैनलों की संख्या निर्धारित करें।
  • -b:a - ऑडियो बिटरेट सेट करें
  • -f - प्रारूप

GitHub पर मेरे पूर्ण नमूने FFmpeg Android परियोजना के लिए इसे देखें ।

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