Mp4 वीडियो फ़ाइल से ऑडियो ट्रैक कैसे निकालें?


94

मेरे पास कई ऑडियो ट्रैक्स के साथ एक mp4 वीडियो फ़ाइल है। मैं बाकी पटरियों को दूर करना चाहूंगा और सिर्फ एक को रखना चाहूंगा। मैं यह कैसे करु?


जवाबों:


110

ffmpeg -i file.mp4यह देखने के लिए कि आपकी फ़ाइल में कौन-सी धाराएँ मौजूद हैं, पहले चलाएँ । आपको कुछ इस तरह से देखना चाहिए:

Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s

फिर ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4वीडियो स्ट्रीम और 2 के ऑडियो स्ट्रीम को कॉपी करने के लिए रन करें new_file.mp4


3
विंडोज पर इस कमांड ने त्रुटि दी Option map (set input stream mapping) cannot be applied to input file file.mp4 new_file.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.: इसे ठीक करने के लिए केवल तर्कों के क्रम को इस प्रकार बदलें:ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
MrLore

OS X पर @MLL के समान त्रुटि
Oskar Persson

1
यह उबंटू पर समान है!
टॉमासो

MKV प्रारूप के लिए भी काम करता है
user3405291

1
आप अधिक सामान्य विकल्प का उपयोग कर सकते हैं -c copyऑडियो, वीडियो के लिए समान धाराओं के लिए, लेकिन यह भी उपशीर्षक: ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4
फुटल

96

संबंधित समस्या- किसी mp4 फ़ाइल से सभी ऑडियो ट्रैक्स को हटाया जा सकता है:

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4

1
यह मुझे त्रुटि देता है The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.लेकिन मैंने उन झंडों को जोड़ा है और यह अभी भी वही है ...?
पॉशहैगेसी


Re poshaughnessy की टिप्पणी: यहाँ कुछ जानकारी प्रतीत होती है: stackoverflow.com/questions/32931685/… चर्चा से पता चलता है कि ffmpeg के हालिया संस्करण "aac प्रयोगात्मक" समस्या का अनुभव नहीं करते हैं। एक सामान्य नियम के रूप में, यह आपकी समस्या का निदान करने में मदद करता है यदि आप उपयोग किए जा रहे सॉफ़्टवेयर के संस्करण और कमांड के सटीक सिंटैक्स के बाद (झंडे जोड़ने के बाद) जो त्रुटि दी (cf. freeseek's answer loc। सिट)। )। इस विशिष्ट मामले में, इनपुट फ़ाइल से वीडियो जानकारी भी सहायक हो सकती है।
ग्रेग मार्क्स

8

स्ट्रीम नंबर पहचानें:

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...

-map _file_:_stream_प्रक्रिया और आउटपुट के लिए कौन सी स्ट्रीम चुनने के लिए उपयोग करें

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4

देखें: https://ffmpeg.org/ffmpeg.html#Advanced-options


4

आप कोशिश कर सकते हैं avidemuxजो आंतरिक रूप से केवल एक ऑडियो फ़ाइल को संभालता है (और इसलिए आपको एक विशिष्ट ट्रैक का चयन करने के लिए मजबूर करता है)। मैंने इसे कभी भी .mp4 के साथ आज़माया नहीं है, लेकिन यह अन्य प्रारूपों के साथ काम करता है।


इतनी अच्छी तरह से काम नहीं करता है। हो सकता है कि यह एक बग हो, लेकिन ऑडियो वापस आ गया है, हालांकि यह काम करता है (बाकी ऑडियो ट्रैक हटा दें)।
tshepang

3

मैंने कई बार AVIDemux (GUI) और ffmpeg (कंसोल) का इस्तेमाल किया।

एविडेमक्स में, आप मुख्य मेनू में "ऑडियो" -> "ट्रैक चुनें" चुनें; फिर आपको एक नई फ़ाइल के रूप में वीडियो सहेजें।

दिलचस्प रूप से पर्याप्त है, कुछ मामलों में एवीडेमक्स ने ffmpeg की तुलना में "बेहतर" उत्पादन किया।

बस के मामले में, एवीडेमक्स और ffmpeg मानक फेडोरा लिनक्स रिपॉजिटरी में हैं। (मुझे यकीन है कि वे अन्य लिनक्स फ्लेवर में भी मानक हैं।)


1

-vnया -anसभी वीडियो या ऑडियो ट्रैक्स को हटा देगा। सप्लीमेंट -vn -acodec copyवीडियो हटा देगा; -an -vcodec copyसभी ऑडियो को हटा देगा।

-vcodec copyनिर्दिष्ट करता है कि ffmpeg को मौजूदा वीडियो ट्रैक की एक सीधी प्रतिलिपि करना चाहिए (और इसका कोई प्रसंस्करण / एन्कोडिंग नहीं करना चाहिए)। यदि आप इसे निर्दिष्ट नहीं करते हैं, तो यह अभी भी काम करेगा लेकिन ffmpeg मौजूदा वीडियो ट्रैक को फिर से एन्कोड कर सकता है और ऑपरेशन अधिक CPU का उपयोग करेगा और काफी लंबा समय ले सकता है।


0

कमांड-लाइन में avidemux का उपयोग करना।

(Avidemux जीयूआई में, जैसा कि में वर्णित https://unix.stackexchange.com/a/85834/4319 ऊपर, तो आप बस / ऑडियो ट्रैक का चयन रद्द करें चयन करें, और फ़ाइल सहेजें। (सब कुछ नया AVI में कॉपी किया है।))

मैंने देखा है कि मेरे कार्यों के लिए स्पाइडरमोंकी या टिनीपी प्रॉजेक्ट्स के रूप में किस तरह की परियोजनाएं बचाई गई हैं, और यह पता चला है कि स्पाइडरमंकी (जावास्क्रिप्ट) परियोजना में ऑडियो ट्रैक चयन कार्यों का अभाव है, जिनकी मुझे आवश्यकता थी, लेकिन टाइनीपाय (पायथन) परियोजना ने किया था। उन्हें।

मैंने असंबंधित (अनावश्यक लाइनों के एक दर्जन) सब कुछ हटा दिया, और यही मेरे पास है some_series.py:

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()

adm.audioClearTracks()
adm.audioAddTrack(1)

यह ट्रैक 1 को छोड़ देता है, लेकिन ट्रैक 0 को छोड़ देता है।

फिर मैंने इस तरह की कमांड के साथ कई फाइलों का बैच रूपांतरण चलाया:

for f in *.avi; do avidemux3_cli --nogui --load "$f" --run ../some_series.py --save ../some_series/"${f%%.rus.eng.avi}".eng.avi --quit; done

यह सब कुछ कॉपी करता है, लेकिन सभी ऑडियो ट्रैक की जरूरत है।

कमांड-लाइन से एविडेमक्स चलाने का तरीका मेरे द्वारा https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing से सीखा गया था , हालांकि वे पायथॉन स्क्रिप्ट्स का उल्लेख नहीं करते हैं, केवल JS वाले ( जो मेरे लिए काम नहीं करता था)।


-1

यदि आप GUI होने के कार्यक्रम को बुरा नहीं मानते हैं, तो ब्लेंडर के वीडियो एडिटर के साथ आप ऐसा कर सकते हैं और बहुत कुछ।


-2

ffmpegकार्यक्रम ने ले लिया है avconv। इस avconvतरह के उपयोग के समान है ffmpeg, इस प्रकार इस पोस्ट के सभी कमांड कुछ इस तरह हो सकते हैं:

avconv <old ffpmeg command line options>

यदि आप उबंटू में हैं, तो इंस्टॉल करने के लिए इस लिंक का अनुसरण करेंavconv


-3

FFMPEG आपके लिए एक उपयोगी समाधान हो सकता है।

$ man ffmpeg

मेरा संक्षिप्त रूप था, और यह काफी सघन है। मैंने "ऑडियो" और "ऑडियो ट्रैक" के लिए खोज की और कुछ भी स्पष्ट नहीं लगा।
tshepang

@Tshepang, "ट्रैक" अस्पष्ट है, यही वजह है कि शायद FFmpeg अधिक सटीक शब्दावली पसंद करता है। FFmpeg ऑडियो को "स्ट्रीम" में आने के लिए मानता है, प्रत्येक में एक या अधिक "चैनल" शामिल हैं। AFAICT, प्रत्येक चैनल मोनो है, जिसमें यह बताते हुए स्ट्रीम है कि किस आउटपुट (ओं) को डिफ़ॉल्ट रूप से भेजा जाना चाहिए (panned)। उदाहरण के लिए, एक स्टीरियो स्ट्रीम में दो चैनल होते हैं, एक को साउंडकार्ड के बाएं आउटपुट को डिफ़ॉल्ट रूप से भेजा जाता है, और दूसरे को साउंडकार्ड के सही आउटपुट को डिफ़ॉल्ट रूप से भेजा जाता है।
sampablokuper
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.