कैसे .mkv फ़ाइल को .mp4 फ़ाइल में दोषरहित रूप से परिवर्तित करें?


119

मुझे Matroska कंटेनर से mp4 कंटेनर में एक वीडियो फ़ाइल परिवर्तित करने की आवश्यकता है। Matroska फ़ाइल में एक h.264 वीडियो ट्रैक और एक AC3 साउंड ट्रैक है। यह दोषरहित रूप से करना संभव होना चाहिए, लेकिन मूल उबंटू उपकरण के साथ कैसे करना है?

ट्रांसकोडिंग एक विकल्प नहीं है।



2
यह विशेष रूप से Matroska फ़ाइलों को परिवर्तित करने के लिए एक समाधान है जो सैमसंग टीवी में नहीं चलेगा, उन फ़ाइलों के लिए जो इसके साथ संगत हैं
knocte

वर्षों से मैंने इसे एक कंटेनर में या उसके साथ Chromecastसमर्थन के रूप में बहुत उपयोगी पाया है । यदि आपने Google कास्ट एक्सटेंशन के साथ Chrome किया है, तो आपके कंप्यूटर से वीडियो स्ट्रीम करना बहुत आसान है । बस खींचें और सही स्ट्रीम एन्कोडिंग के साथ एक ब्राउज़र विंडो में खींचें और स्ट्रीमिंग शुरू करें। H.264AACMP3MP4ChromecastMP4
सेप्पो एरविला

जवाबों:


164

शायद यह है कि के लिए सबसे आसान साधन है ffmpeg, या avconvसे libav-toolsपैकेज। Libav FFmpeg का एक कांटा है, जिसे Ubuntu 15.04 तक कुछ वर्षों के लिए बदल दिया गया। यह GUI के कई उपकरणों के बैकएंड में से एक है जो अन्य उत्तरों में उल्लिखित है।

कंटेनर को फिर से एनकॉनिंग सामग्री के बिना बदलना सरल नहीं हो सकता है:

ffmpeg -i input.mkv -codec copy output.mp4
  • यह इनपुट / आउटपुट फ़ाइलनाम के आधार पर MP4 कंटेनर रूपांतरण के लिए एक Matroska ऑटो का पता लगाता है।

  • -codec copyस्ट्रीम प्रतियाँ, या "पुन: muxes", इनपुट से आउटपुट में पुन: एन्कोडिंग के बिना स्ट्रीम। इसे कॉपी और पेस्ट की तरह समझें।

  • डिफ़ॉल्ट स्ट्रीम चयन व्यवहार प्रति स्ट्रीम प्रकार केवल एक स्ट्रीम का चयन करना है। उदाहरण के लिए, यदि आपके इनपुट में दो वीडियो स्ट्रीम और एक ऑडियो स्ट्रीम है, तो केवल सबसे बड़े फ्रेम आकार वाले वीडियो स्ट्रीम का चयन किया जाएगा। -map 0यदि आप इनपुट से सभी धाराओं का चयन करना चाहते हैं तो जोड़ें ।

  • कुछ कंटेनर कुछ स्वरूपों का समर्थन नहीं कर सकते हैं। इसलिए जांचें कि क्या आपके चुने हुए कंटेनर प्रारूप, यह हो सकता है mkv, mp4या यहां तक ​​कि आपकी फ़ाइलों (वीडियो, ऑडियो, उपशीर्षक, डेटा, आदि) में aviसभी सामग्री के लिए समर्थन है । उदाहरण के लिए, mp4सबरिप उपशीर्षक ( .srtफाइलों) का समर्थन नहीं करता है ।


6
ऑडियो को AAC में ट्रांसकोड करने के लिए, वीडियो को AVC के रूप में छोड़ दें: avconv -i input.mkv -c:v copy -c:a libfaac output.mp4(मैंने ffmpeg का उपयोग किया, मुझे लगता है कि avconv की समान कमांड लाइन यहाँ है)
Camh

@camh: आपने जो कहा वह काम करता है, लेकिन कृपया 2 चीजों पर ध्यान दें: 1) यह वीडियो को छोड़ देगा, चाहे वह AVC हो या कुछ और; 2) यह केवल ऑडियो को AAC में नहीं
बदलेगा बल्कि

1
@AquariusPower: बस इस बात से अवगत रहें कि ओपी धाराओं को दोबारा नहीं बनाना चाहता: वह केवल कंटेनर को बदलना चाहता है और सभी धाराओं को रखना चाहता है।
MestreLion

2
@AquariusPower: क्या आपने -map 0दोनों ऑडियो स्ट्रीम प्राप्त करने की कोशिश की है? जैसा कि मैंने उत्तर में कहा था: "डिफ़ॉल्ट स्ट्रीम चयन व्यवहार प्रति स्ट्रीम प्रकार केवल एक स्ट्रीम का चयन करना है"
MestreLion

1
-c:s mov_textयदि आपको उदाहरण रखने की आवश्यकता है तो विकल्प का उपयोग करें । srtउपशीर्षक ट्रैक।
सेप्पो एरविला

25

आवश्यक सॉफ़्टवेयर प्राप्त करें

sudo apt-get install gpac mkvtoolnix

Matroska फ़ाइल से वीडियो और ऑडियो निकालें

सबसे पहले आपको यह जांचने की जरूरत है कि मैट्रोस्का फाइल किस ट्रैक के साथ है

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

फिर उनके ट्रैक के अनुसार वीडियो और ऑडियो निकालें:

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary stream
Extracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)
Progress: 100%

Mux ऑडियो और वीडियो mp4 नियंत्रक में

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

मुझे -fps 24विकल्प जोड़ना पड़ा क्योंकि MP4Boxवीडियो एफपीएस का सही पता नहीं लगा। उपयोग के आधार पर AC3ऑडियो ट्रैक को muxing से पहले किसी और चीज़ में फिर से एनकोड किया जाना चाहिए।

अब आप किसी भी गुणवत्ता को खोने के बिना mp4 कंटेनर में matroska कंटेनर से धाराओं को हटा दिया है।

EDIT: MP4 आधिकारिक तौर पर AC3 ऑडियो का समर्थन नहीं करता है इसलिए ऑडियो ट्रैक को एक समर्थित प्रारूप (जैसे। AAC, MP3) में परिवर्तित किया जाना चाहिए यदि आप चाहते हैं कि फ़ाइल VLC के अलावा किसी और चीज के साथ खेलने योग्य हो।


1
क्या यह सबटाइटल ट्रैक के साथ काम करेगा?
साइबरस्कूल

11

आप एवीडेमक्स का उपयोग कर सकते हैं

इसमें अच्छा GUI इंटरफ़ेस है।

जब mkv से mp4 में परिवर्तित होता है, तो यह पुन: एनकोडेड नहीं होता है।

रूपांतरण एक मिनट (60-मिनट के वीडियो के लिए) में किया जाता है।

  1. sudo apt-get install avidemux

  2. Avidemux में mkv फ़ाइल खोलें।

  3. संकेत मिलने पर सुरक्षित मोड का चयन करें।

  4. वीडियो को कॉपी के रूप में छोड़ दें।

  5. फ़ाइल चुनें-> गुण। जांचें कि क्या ऑडियो कोडेक है aac

    1. यदि ऑडियो कोडेक aac नहीं है, तो चयन करें aac(faac)
    2. अन्यथा, इसे छोड़ दें copy। (कभी-कभी इस विकल्प का उपयोग करके ऑडियो सिंक या विकृत से बाहर हो सकता है, उस स्थिति में aac(faac)इसके बजाय चुनें ।)
  6. mp4प्रारूप के लिए चयन करें ।

  7. .mp4एक्सटेंशन के रूप में सहेजें, स्थान चुनें और फ़ाइल नाम चुनें ।

नोट: कभी-कभी (~ 10% संभावना) यह विफल हो सकता है। फिर उपयोग करें handbrake(re-encode)

नोट 2: दो लिंक हैं जो आपकी मदद करते हैं:

http://www.ubuntugeek.com/avidemux-free-video-editor-designed-for-simple-cutting-filtering-and-encoding-tasks.html

http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html


एक जादू की तरह काम किया। मुझे स्वीकृत उत्तर के बाद समस्‍याएं सम्‍मिलित थीं, लेकिन इस एक के साथ नहीं।
मोरा

बहुत अच्छी तरह से काम करता है
psychok7

2

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

आप मेरे आवेदन, dmMediaConverter का उपयोग कर सकते हैं । चेक किए गए दोनों स्ट्रीम (कोई ट्रांसकोडिंग) के लिए बस " कॉपी " छोड़ दें और आउटपुट फ़ाइल नाम के लिए .mp4 डालें। बस। बहुत आसान। http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html


-2

चूंकि MPEG भाग 14 h.264 और AC3 को मूल रूप से ट्रांसकोडिंग के बिना समर्थन करता है, आप बस फ़ाइल का नाम बदल सकते हैं, इसलिए इसमें .mp4एक्सटेंशन के बजाय .mkvएक्सटेंशन है।


3
यह अंदर कोडेक्स को सपोर्ट कर सकता है, लेकिन इसका मतलब यह नहीं है कि यह एक ऐसे एप्लिकेशन में काम करेगा जो मैट्रोस्का को नहीं समझता है। यह तभी काम करेगा जब एप्लिकेशन मैट्रॉस्का का समर्थन करता है और एक्सटेंशन के बजाय मैजिक नंबर को देखता है।
अरदा ज़ी

फ़ाइल का नाम बदलना कंटेनर प्रारूप में परिवर्तित नहीं होगा, और यह एप्लिकेशन (और उपयोगकर्ताओं) को भ्रमित कर सकता है। जैसा कि @ArdaXi ने कहा, एप्लिकेशन को अभी भी इसे खेलने के लिए मैट्रॉस्का का समर्थन करने की आवश्यकता होगी।
MestreLion

-2

आप इस कोड को टर्मिनल में टाइप करके इसका PPA जोड़कर HANDBRAKE आज़मा सकते हैं :

sudo add-apt-repository ppa:stebbins/handbrake-releases

यह एक वीडियो ट्रांसकोडर लगता है। मैं वीडियो ट्रैक को फिर से संपीड़ित नहीं करना चाहता क्योंकि यह पहले से ही h.264 प्रारूप में है।
सेप्पो एरविला

1
हैंडब्रेक एक महान ट्रांसकोडर है, लेकिन मैं इसे फ़ाइल प्रारूप रूपांतरण के लिए उपयोग नहीं करूंगा।
साइबरस्कूल

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