Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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!

share|improve this question
    
Please also include the complete ffmpeg console output that results from your ffmpeg command. –  LordNeckbeard Jul 7 '12 at 19:48
    
Sorry for the formatting of the code; the quoting made it hard for me to edit... –  hexafraction Nov 7 '12 at 13:07
add comment

4 Answers 4

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.

share|improve this answer
    
I read that but I'm trying to learn how to do it with ffmpeg instead of those other tools. I use handbrake all the time but that doesn't help me understand how to do it in ffmpeg. Just trying to learn something new. –  JohnS Jul 4 '12 at 21:48
    
@JohnS ffmpeg is probably not the best choice, because it always try to re-encode everything and you waste time and resources doing this, anyway forum.doom9.org/showthread.php?t=164683 this can probably become a good starting point for you. –  user827992 Jul 4 '12 at 21:51
    
@user827992 This is incorrect. ffmpeg does not always try to re-encode everything. Did you even read the details in the question? The example in the question is clearly attempting to copy the streams, not re-encode. –  LordNeckbeard Jul 7 '12 at 19:45
    
@user827992: both ffmpeg and avconv are able to losslessly re-pack from container to another without re-enconding content. –  MestreLion Oct 2 '12 at 0:32
add comment

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

  • Replace ffmpeg for avconv, since ffmpeg is not maintained anymore in Ubuntu
  • 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...

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

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

share|improve this answer
    
-1. i get the same error with the command line you supplied. it seems like you're just being pedantic here. –  ixtmixilix Jul 9 '13 at 23:14
    
@ixtmixilix: care to post the terminal output? You avconv's version might be different than mine. –  MestreLion Jul 16 '13 at 4:10
    
@ixtmixilix: also, why pedantic? I offered him an alternative, one worth trying, and waited for feedback. There is no point downvoting this and the other answer (which perfectly solved the OP's question btw) –  MestreLion Jul 16 '13 at 4:19
add comment

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.

share|improve this answer
add comment

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: http://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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.