एक वीडियो फ़ाइल में कई ऑडियो स्ट्रीम के साथ ऑडियो स्ट्रीम कैसे बदलें?


19

मैं एक वीडियो फ़ाइल में दूसरी ऑडियो स्ट्रीम (0: 2) को बदलना चाहता हूं जिसमें दो ऑडियो स्ट्रीम हैं और यदि संभव हो तो इसे एक लेबल दें। मैं इसे किस तरह लूं? सभी ffmpeg कमांड जो मैंने पाया वह मुझे दूसरा ऑडियो स्ट्रीम नहीं रखने देगा।

जवाबों:


22

अपनी स्ट्रीम चुनने के लिए -mapविकल्प का उपयोग करें । डिफ़ॉल्ट स्ट्रीम चयन केवल प्रत्येक स्ट्रीम प्रकार में से एक का चयन करेगा, इसलिए -mapइसका उपयोग करना होगा।

दूसरी ऑडियो स्ट्रीम बदलें

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

ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
  • 0:v- 0पहले इनपुट को संदर्भित करता है जो है video.mkvvइसका मतलब है "का चयन करें वीडियो स्ट्रीम प्रकार"।

  • 0:a:0- 0पहले इनपुट को संदर्भित करता है जो है video.mkvaइसका मतलब है "ऑडियो स्ट्रीम प्रकार का चयन करें"। अंतिम 0इस इनपुट से पहली ऑडियो स्ट्रीम को संदर्भित करता है। यदि केवल 0:aउपयोग किया जाता है, तो सभी वीडियो स्ट्रीम मैप किए जाएंगे।

  • 1:a- 1दूसरे इनपुट को संदर्भित करता है जो है audio.mp3aइसका मतलब है "ऑडियो स्ट्रीम प्रकार का चयन करें"।

  • -codec copyसांकेतिक शब्दों में बदलना के बजाय धारा (पुन: mux) को कॉपी करेगा । यदि आपको एक विशिष्ट ऑडियो कोडेक की आवश्यकता है, तो आपको -c:v copy(वीडियो रखने के लिए) निर्दिष्ट करना चाहिए और फिर, उदाहरण के लिए, -c:a libmp3lameएमपी 3 को ऑडियो स्ट्रीम को फिर से एनकोड करना होगा।

  • -shortest सबसे छोटा इनपुट समाप्त होने पर आउटपुट समाप्त हो जाएगा।

दो ऑडियो स्ट्रीम को एक में मिलाएं

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

ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
  • फ़िल्टरिंग के लिए पुन: एन्कोडिंग की आवश्यकता होती है, और यहां amergeफ़िल्टर का उपयोग किया जाता है, इसलिए ऑडियो को इस उदाहरण में कॉपी नहीं किया जा सकता है।

मेरे लिए बिल्कुल काम नहीं किया।
रुडोल्फ ओलह

@omouse "काम नहीं किया" के लिए मदद प्रदान करना मुश्किल है। आपको अपनी कमांड और पूरा कंसोल आउटपुट दिखाने के लिए पास्टबिन लिंक का उपयोग करना चाहिए।
3

मेरा मुद्दा यह है -codec copy, लेकिन मैंने तय किया कि (ffmpeg के अलग-अलग संस्करण), जो दूसरा मुद्दा मेरे पास था -map, उसने गलत धाराओं की शिकायत की।
रुडोल्फ ओलाह

1
मैंने अभी उपयोग किया है -map 0:v -map 1:a। मुझे लगता है कि इसका मतलब यह है कि पहली फ़ाइल (video.mkv) से वीडियो ले लो और फिर दूसरी फ़ाइल (audio.mp4) से ऑडियो ले लो output.mkv बनाने के लिए ... सुनिश्चित नहीं है कि इसके लिए क्या -map 0:a:0है। मैंने इसे बाहर कर दिया और मुझे वे परिणाम मिले जो मैं चाहता था।
सूर्य

2
@ aaronk6 मूल प्रश्न ने आउटपुट में कई ऑडियो धाराओं को मैप करने का तरीका पूछा । उदाहरण पहले इनपुट से पहली ऑडियो स्ट्रीम लेता है, और दूसरा इनपुट से ऑडियो स्ट्रीम (ओं) को आउटपुट में मैप करता है। ऐसा प्रतीत होता है कि कुछ लोग मान रहे हैं कि उदाहरण एकल ऑडियो स्ट्रीम के साथ आउटपुट बनाता है और फिर भ्रमित हो जाता है।
16
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.