FFMPEG mux वीडियो और ऑडियो (दूसरे वीडियो से) - मानचित्रण मुद्दा


85

मैं एक वीडियो से दूसरे वीडियो में ऑडियो के बिना (एक कमांड में) ऑडियो रखना चाहूंगा:

ffmpeg.exe -i video1_noAudio.mov -i video2_wAudio.mov -vcodec copy -acodec copy video1_audioFromVideo2.mov

मुझे लगता है कि "-मैप" ऐसा करने का सही तरीका है, लेकिन मैं इसके साथ भ्रमित हो गया।

क्या आप इसे हल करने का सुझाव दे सकते हैं?

जवाबों:


226

आदानों का अवलोकन

input_0.mp4वांछित वीडियो स्ट्रीम है और input_1.mp4वांछित ऑडियो स्ट्रीम है:

मैपिंग आरेख

में ffmpegधाराओं इस तरह दिखेगा:

$ ffmpeg -i input_0.mp4 -i input_1.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_0.mp4':
  Duration: 00:01:48.50, start: 0.000000, bitrate: 4144 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 4014 kb/s, SAR 115:87 DAR 1840:783, 23.98 fps, 23.98 tbr, 16k tbn, 47.95 tbc (default)
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 124 kb/s (default)

Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input_1.mp4':
  Duration: 00:00:30.05, start: 0.000000, bitrate: 1754 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 8:9 DAR 4:3], 1687 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
    Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 55 kb/s (default)

आईडी नंबर

ffmpegइंडेक्स नंबरों के साथ इनपुट फाइल और स्ट्रीम को संदर्भित करता है। प्रारूप है input_file_id:input_stream_id। चूंकि ffmpeg0 से गिनती शुरू होती है, धारा 1:1से ऑडियो को संदर्भित करता है input_1.mp4

स्ट्रीम विनिर्देशक

इसे स्ट्रीम स्पेसर्स के साथ बढ़ाया जा सकता है । उदाहरण के लिए, आप बता सकते हैं ffmpegकि आप पहली इनपुट ( 0:v:0) से पहली वीडियो स्ट्रीम चाहते हैं , और दूसरी इनपुट ( 1:a:0) से पहली ऑडियो स्ट्रीम । मैं इस विधि को पसंद करता हूं क्योंकि यह अधिक कुशल है। इसके अलावा, यह आकस्मिक मानचित्रण के लिए कम प्रवण है क्योंकि 1:1किसी भी प्रकार की धारा को संदर्भित कर सकता है, जबकि 2:v:3केवल तीसरे इनपुट फ़ाइल के चौथे वीडियो स्ट्रीम को संदर्भित करता है।

उदाहरण

-mapविकल्प का निर्देश ffmpegधाराओं क्या आप चाहते हैं। से वीडियो input_0.mp4और ऑडियो की प्रतिलिपि बनाने के लिए input_1.mp4:

$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4

यह अगला उदाहरण वही काम करेगा:

$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:v:0 -map 1:a:0 -shortest out.mp4
  • -map 0:v:0के रूप में अनुवाद किया जा सकता है: पहले इनपुट से ( 0), वीडियो स्ट्रीम प्रकार ( v), पहला वीडियो स्ट्रीम ( 0) चुनें

  • -map 1:a:0के रूप में अनुवाद किया जा सकता है: दूसरे इनपुट से ( 1), ऑडियो स्ट्रीम प्रकार ( a), पहला ऑडियो स्ट्रीम ( 0) चुनें

अतिरिक्त नोट्स


17
Upvoted, क्योंकि यह सबसे अच्छा वर्णन + उदाहरण है जो मैंने घंटों तक यह करने की कोशिश की।
मार्क पिंग

4
न केवल इसे हल करने के लिए धन्यवाद, बल्कि इसे समझाने के लिए भी!
मथियास

1
यह व्याख्या -प्रकाशक शुरुआती के लिए एकदम सही है
seed_87


2
@FernandoEspinosa संपादन वास्तव में गलत है। ऑडियो -map 1:0के वीडियो का उल्लेख करेगा input_1.mp4, न कि ऑडियो का। उदाहरण के लिए, ऑडियो मिलना चाहिए तो यह हो गया है -map 1:1या -map 1:a:0जो इस मामले में वांछित ऑडियो स्ट्रीम प्राप्त करने में परिणाम नहीं। दृश्य प्रतिनिधित्व के उत्तर में छवि का संदर्भ लें।
ललगन

1

मेरे पास ऑडियो को वीडियो में मर्ज करने का एक नया आदेश है

ffmpeg -i video.mp4 -i audio.mp4 -map 0.0 -map 1.0 -acodec copy -qscale 4 -vcodec mpeg4 outvideo.mp4

-qscale ffmpeg के वीडियो के लिए विकल्प सेट गुणवत्ता है

-एकोडेक कॉपी , आउटपुट वीडियो में ऑडियो की डिफ़ॉल्ट गुणवत्ता की प्रतिलिपि है

-vcodec mpeg4 आउटपुट वीडियो के लिए वीडियो की डिफ़ॉल्ट गुणवत्ता का विकल्प है


1
-vcodecहमेशा के लिए चारों ओर हो गया है। यह नए उपनाम के रूप में एक ही है -codec:vऔर -c:v
llogan

@HoHHieu क्या मैं mp4 वीडियो में wav ऑडियो जोड़ सकता हूं? मेरे पास ffmpeg -i 1.mp4 -i 0.wav -map 0 -map 1 -codec copy -shortest new.mp4कमांड की कोशिश है , लेकिन काम नहीं है
एलन 3

?? आपकी आज्ञा। 0.0 नहीं 0 , 1.0 नहीं 1 - 1.0 इसका मतलब है: इंडेक्स [1] चैनल [0] ... - एकोडेक कॉपी नहीं -कॉडेक कॉपी , इसका मतलब है कॉपी ऑडियो कोडेक
HoangHieu

आप शायद -vcodec copyवीडियो को फिर से एन्कोडिंग से बचना चाहते हैं
भेड़िया

0

MKV- विशिष्ट पूरक उत्तर के रूप में:

MKVToolnix ऐसा कर सकता है। मुझे GUI पसंद है।

एक बार जब पहला वीडियो जोड़ा गया है, तो दूसरा ("स्रोत फ़ाइलें जोड़ें") जोड़ें, फिर केवल वांछित स्ट्रीम चयनित करें, और "स्टार्ट मल्टीप्लेक्सिंग" दबाएं।

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

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