Ubuntu: Convert mkv to mp4 with ffmpeg



Question:

When I try converting mkv to mp4 using ffmpeg, the following error occurs:

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  

I used this command to convert the file:

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

The input file has the following characteristics:

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    

Being new to ffmpeg, I'm not sure what the error means or how to correct it.

Thanks!


Solution:1

As I've already written here, I suggest you change a few details in your command line:

  • If you're using an Ubuntu release older than 15.04, replace ffmpeg for avconv, as it was the fork used by Ubuntu for a few years (see the comments)
  • Do you really need -absf aac_adtstoasc? It had some issues that may not have been corrected in current Ubuntu's ffmpeg. I suggest you to try without it first.
  • -vcodec copy -acodec copy can be simply -codec copy or -c copy. It would also prevents tampering other streams besides video and audio, like subtitles.

So the winner is...

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

If that does not work, please post all terminal output.


Solution:2

I know its a very old thread, but I've found a solution to successfully run ffmpeg. Don't use -vcodec copy -acodec copy, use just ffmpeg -i input.mkv output.m4v instead. It will start running.

But in my case, I convert a .mkv to .mp4, the result output is just trash. It losses frame accuracy.


Solution:3

there is already an answer about this How to convert .mkv file into .mp4 file losslessly?

the basic concept is that both the MKV and the MP4 are containers, they are just containers, you basically have to unpack and re-pack the audio and video tracks if you want to switch between the two.


Solution:4

Got this on Xubuntu 14.04 when trying to burn a DVD of MP4s using DVDStyler; Bombono produces the same error. ffmpeg #1154 suggests this might have been fixed in ffmpeg, though perhaps not in avconv? libav #478 is still marked open.

Also see: https://unix.stackexchange.com/questions/127522/avconv-error-av-interleaved-write-frame

I filed Launchpad #1339980; in summary, use a current release of ffmpeg, and not avconv.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »