Mkv को ffmpeg से mp4 में बदलें


14

जब मैं ffmpeg का उपयोग करके mp4 को mkv में परिवर्तित करने की कोशिश करता हूं, तो निम्न त्रुटि होती है:

version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers   built on Jun 12 2012 16:52:09 with gcc 4.6.3  
 *** THIS PROGRAM IS DEPRECATED ***   This program is only provided for compatibility and will be removed in a future release. Please use
 avconv instead.   [matroska,webm @ 0x1e939c0] max_analyze_duration
 reached   [matroska,webm @ 0x1e939c0] Estimating duration from
 bitrate, this may be inaccurate   Input #0, matroska,webm, from
 'input.mkv':     Duration: 00:01:00.76, start: 0.000000, bitrate: 384
 kb/s  
     Stream #0.0(eng): Video: h264 (High), yuv420p, 1280x544, PAR 1:1 DAR 40:17, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)  
     Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s (default)  
     Stream #0.2(eng): Subtitle: [0][0][0][0] / 0x0000   Output #0, ipod, to 'output.m4v':     Metadata:  
     encoder         : Lavf53.21.0  
     Stream #0.0(eng): Video: libx264, yuv420p, 1280x544 [PAR 1:1 DAR 40:17], q=2-31, 25 tbn, 25 tbc (default)  
     Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, 384 kb/s (default)   Stream mapping:     Stream #0.0 -> #0.0     Stream #0.1 -> #0.1  
 Press ctrl-c to stop encoding   [ipod @ 0x1e9b740] Application
 provided invalid, non monotonically increasing dts to muxer in stream
 0: -2 >= -2 av_interleaved_write_frame(): Invalid argument

मैंने फ़ाइल को परिवर्तित करने के लिए इस कमांड का उपयोग किया है:

ffmpeg -i input.mkv -vcodec copy -acodec copy -absf aac_adtstoasc output.m4v

इनपुट फ़ाइल में निम्नलिखित विशेषताएं हैं:

mediainfo input.mkv 


>General
>
>Unique ID                                : 200459305952356554213392832683163418790 (0x96CF0ED8DB5914CBB9E18163689280A6)  
>Complete name                            : input.mkv  
>Format                                   : Matroska  
>Format version                           : Version 2  
>File size                                : 1.46 GiB  
>Duration                                 : 1h 5mn  
>Overall bit rate                         : 3 168 Kbps  
>Encoded date                             : UTC 2010-09-26 21:44:02  
>Writing application                      : mkvmerge v2.9.5 ('Tu es le seul') built on >Jun 17 2009 16:28:30  
>Writing library                          : libebml v0.7.8 + libmatroska v0.8.1  
>
>Video
>ID                                       : 1  
>Format                                   : AVC  
>Format/Info                              : Advanced Video Codec  
>Format profile                           : High@L3.1  
>Format settings, CABAC                   : Yes  
>Format settings, ReFrames                : 4 frames  
>Codec ID                                 : V_MPEG4/ISO/AVC  
>Duration                                 : 1h 5mn  
>Bit rate                                 : 2 910 Kbps  
>Width                                    : 1 280 pixels  
>Height                                   : 720 pixels  
>Display aspect ratio                     : 16:9  
>Frame rate                               : 25.000 fps  
>Color space                              : YUV  
>Chroma subsampling                       : 4:2:0  
>Bit depth                                : 8 bits  
>Scan type                                : Progressive  
>Bits/(Pixel*Frame)                       : 0.126  
>Stream size                              : 1.31 GiB (90%)  
>Writing library                          : x264 core 105 r1724 b02df7b  
>Encoding settings                        : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=6 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=18 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=2pass / mbtree=0 / bitrate=2910 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00  
>
>Default                                  : Yes  
>Forced                                   : No  
>
>Audio
>ID                                       : 2  
>Format                                   : AC-3  
>Format/Info                              : Audio Coding 3  
>Mode extension                           : CM (complete main)  
>Codec ID                                 : A_AC3  
>Duration                                 : 1h 5mn  
>Bit rate mode                            : Constant  
>Bit rate                                 : 256 Kbps  
>Channel(s)                               : 2 channels  
>Channel positions                        : Front: L R  
>Sampling rate                            : 48.0 KHz  
>Bit depth                                : 16 bits  
>Compression mode                         : Lossy  
Stream size                              : 121 MiB (8%)  
Language                                 : English  
Default                                  : Yes  
Forced                                   : No  

Ffmpeg के लिए नया होने के नाते, मुझे यकीन नहीं है कि त्रुटि का मतलब क्या है या इसे कैसे ठीक किया जाए।

धन्यवाद!


कृपया पूरा ffmpeg कंसोल आउटपुट भी शामिल करें जो आपके ffmpeg कमांड से परिणाम देता है।
०१:

कोड के प्रारूपण के लिए क्षमा करें; उद्धृत करना मेरे लिए संपादित करना कठिन हो गया ...
नैनोफारड

जवाबों:


22

जैसा कि मैंने पहले ही यहां लिखा है , मेरा सुझाव है कि आप अपनी कमांड लाइन में कुछ विवरण बदलें:

  • आप एक Ubuntu रिलीज 15.04 से अधिक उम्र के प्रयोग कर रहे हैं, की जगह ffmpegके लिए avconv, के रूप में यह कुछ वर्षों के लिए Ubuntu के द्वारा प्रयोग किया जाता कांटा था (टिप्पणी देखें)
  • क्या आपको वास्तव में जरूरत है -absf aac_adtstoasc? इसके कुछ मुद्दे थे जो वर्तमान उबंटू के ffmpeg में ठीक नहीं किए गए थे। मेरा सुझाव है कि आप इसके बिना पहले प्रयास करें।
  • -vcodec copy -acodec copyकरने के लिए सरल किया जा सकता -codec copyया -c copy। यह उपशीर्षक की तरह वीडियो और ऑडियो के अलावा अन्य धाराओं से छेड़छाड़ करने से भी रोकेगा।

तो विजेता है ...

ffmpeg -i input.mkv -c copy output.m4v

यदि वह काम नहीं करता है, तो कृपया सभी टर्मिनल आउटपुट पोस्ट करें।


-1। मुझे आपके द्वारा आपूर्ति की गई कमांड लाइन के साथ एक ही त्रुटि मिलती है। ऐसा लगता है जैसे आप यहाँ सिर्फ पांडित्य कर रहे हैं।
ixtmixilix

@ixtmixilix: टर्मिनल आउटपुट पोस्ट करने के लिए देखभाल? आप avconvका संस्करण मेरे से भिन्न हो सकता है।
मेस्ट्रेलियन

@ixtmixilix: भी, क्यों पांडित्य? मैंने उसे एक विकल्प की पेशकश की, एक कोशिश करने लायक, और प्रतिक्रिया की प्रतीक्षा की। इसका कोई मतलब नहीं है और दूसरा जवाब (जो पूरी तरह से ओपी के प्रश्न को हल करता है)
मेस्त्रेलियन

अब avconvउबंटू में नहीं रखा गया है :-)
Ciro Santilli 改造

@CiroSantilli 巴拿馬 文件 事件 法轮功 really वाह, सच में? क्या हम वापस आ गए हैं ffmpeg? परिवर्तन के बारे में कोई स्रोत या संदर्भ मिला है?
MestreLion

3

मुझे पता है कि यह एक बहुत पुराना धागा है, लेकिन मैंने ffmpeg को सफलतापूर्वक चलाने का हल ढूंढ लिया है। उपयोग न करें -vcodec copy -acodec copy, केवल ffmpeg -i input.mkv output.m4vइसके बजाय का उपयोग करें । यह चलने लगेगा।

लेकिन मेरे मामले में, मैं .mkv को .mp4 में परिवर्तित करता हूं, परिणाम आउटपुट सिर्फ कचरा है। यह फ्रेम सटीकता को नुकसान पहुंचाता है।


5
यदि आप copyकोडेक का उपयोग नहीं करते हैं , तो यह पुन: लोड करेगा और गुणवत्ता खो देगा।
nyuszika7h

2

स्वचालित रूप से MKV से MP4 में एक फ़ोल्डर में सभी फ़ाइलों को परिवर्तित करने के लिए आप एक उपनाम बना सकते हैं:

alias mkv2mp4="for f in ./**/*.mkv; do ffmpeg -n -i \"\$f\" -c copy \"\${f%.mkv}.mp4\" && rm \"\$f\"; done"

यह कमांड निम्न चरण करती है:

  • वर्तमान निर्देशिका .mkv फ़ाइलों की तलाश के माध्यम से पुनरावृत्ति करता है
  • प्रत्येक फ़ाइल को .mp4 में कनवर्ट करता है, मौजूदा फ़ाइलों को अधिलेखित नहीं करता है
  • रूपांतरण सफल होने पर स्रोत फ़ाइल को निकालता है

कृपया अपने कमांड को स्टेप बाई स्टेप बेहतर तरीके से समझाएं।
derHugo

आप क्या जानना चाहेंगे? इस बात का सारांश है कि कमान इसके ठीक नीचे क्या करती है।
गुइडो बुमैन

0

इस बारे में पहले से ही एक उत्तर है कि .mkv फ़ाइल को .mp4 फ़ाइल में कैसे परिवर्तित किया जाए?

बुनियादी अवधारणा यह है कि दोनों MKV और MP4 कंटेनर हैं, वे सिर्फ कंटेनर हैं, आपको मूल रूप से ऑडियो और वीडियो ट्रैक को अनपैक करना होगा और यदि आप दोनों के बीच स्विच करना चाहते हैं तो फिर से पैक करें।


मैंने पढ़ा है कि लेकिन मैं यह सीखने की कोशिश कर रहा हूं कि उन अन्य उपकरणों के बजाय ffmpeg के साथ कैसे करें । मैं हर समय हैंडब्रेक का उपयोग करता हूं लेकिन इससे मुझे यह समझने में मदद नहीं मिलती है कि इसे एफएफएमपी में कैसे किया जाए। बस कुछ नया सीखने की कोशिश कर रहा हूं।
जॉनसन

@ जॉन्स ffmpeg शायद सबसे अच्छा विकल्प नहीं है, क्योंकि यह हमेशा सब कुछ फिर से एनकोड करने की कोशिश करता है और आप ऐसा करने में समय और संसाधन बर्बाद करते हैं, वैसे भी forum.doom9.org/showthread.php?t=164683 यह शायद एक अच्छा शुरुआती बिंदु बन सकता है तुम्हारे लिए।
user827992

3
@ user827992 यह गलत है। ffmpeg हमेशा सब कुछ फिर से एनकोड करने की कोशिश नहीं करता है। क्या आपने प्रश्न में विवरण भी पढ़ा है? प्रश्न में उदाहरण स्पष्ट रूप से धाराओं को कॉपी करने का प्रयास कर रहा है, न कि फिर से एनकोड।
०१:४५ बजे ल्लगन

2
@ user827992: ffmpeg और avconv दोनों, बिना कन्टेनर के पुनः कन्टेनिंग के लिए कंटेनर से दूसरे में दोषरहित री-पैक करने में सक्षम हैं।
MestreLion

0

Xubuntu 14.04 पर यह मिल गया जब DVDStyler का उपयोग करके MP4s की एक डीवीडी को जलाने की कोशिश की; बॉम्बोनो एक ही त्रुटि पैदा करता है। ffmpeg # 1154 से पता चलता है कि यह तय हो गया है ffmpeg, हालांकि शायद इसमें नहीं है avconv? libav # 478 अभी भी खुला हुआ है।

इसे भी देखें: /unix/127522/avconv-error-av-interleaved-write-frame

मैंने लॉन्चपैड # 1339980 दायर किया ; सारांश में, वर्तमान रिलीज़ का उपयोग करें ffmpeg, और नहीं avconv


0

यह एक प्रयास करें :: लिनक्स में Libav

स्थापना: रन कमांड

sudo apt-get install libav-tools

वीडियो रूपांतरण कमांड :: फ़ोल्डर में जाएं वीडियो और टर्मिनल में चलाएं

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