Non-Monotonous DTS on concat (ffmpeg)

9

1

After running this command ffmpeg -f concat -i mylist.txt -c copy output.mp4 - I'm getting corrupted output.mp4 file and this message:

ffmpeg -f concat -i mylist.txt -c copy output.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, concat, from 'mylist.txt':
  Duration: N/A, start: 0.000000, bitrate: 829 kb/s
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf56.25.101
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1440x900, q=2-31, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598061, current: 467644; changing to 598062. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598062, current: 468044; changing to 598063. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598063, current: 468444; changing to 598064. This may result in incorrect timestamps in the output file.
...
[mp4 @ 0x7f897a01bc00] Non-monotonous DTS in output stream 0:0; previous: 598362, current: 588044; changing to 598363. This may result in incorrect timestamps in the output file.
frame= 1472 fps=0.0 q=-1.0 Lsize=    5825kB time=00:00:49.04 bitrate= 973.0kbits/s
video:4903kB audio:877kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.776358%

Content of mylist.txt

file 'cut.mp4'
file 'cut2.mp4'

cut.mp4 output from ffmpeg:

ffmpeg -i cut.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:39.04, start: 0.036281, bitrate: 837 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1440x900, 701 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

cut2.mp4 output from ffmpeg:

ffmpeg -i cut2.mp4
ffmpeg version 2.6.2 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cut2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:10.07, start: 0.000000, bitrate: 1498 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1440x900, 1271 kb/s, 30 fps, 30 tbr, 12k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 218 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

cut.mp4 I got by this command ffmpeg -ss 00:00:11 -i myfile.mp4 -to 00:00:39 -vf 'drawbox= : x=0 : y=0 : color=invert' cut.mp4

cut2.mp4 I got by this command ffmpeg -ss 00:00:00 -i myfile.mp4 -to 00:00:10 -c copy cut2.mp4

I searched a lot - didn't find any solution, maybe, someone can help me out with this one.

output.mp4 is playable, but looks weird.

enter image description here

whitesiroi

Posted 2015-05-02T10:33:21.757

Reputation: 158

1Can you provide both input files so I can perform tests?LordNeckbeard 2015-05-02T16:47:22.950

@LordNeckbeard yes, I sent it to you, thank you very much.whitesiroi 2015-05-03T10:28:41.287

1

I can't seem to duplicate the exact issue. I'm using the most recent static build available from tessus. The sample files seem to be different than your screenshot, but it appears to be working fine in VLC and QuickTime, except seeking seems messed up. I tested on an OS X machine because that looks like what you're using.

LordNeckbeard 2015-05-03T18:14:59.643

@LordNeckbeard Thank you very much, yes with this version ffmpeg version N-71996-g372aa07-tessus it does work great. Thank you.whitesiroi 2015-05-04T02:22:45.963

Answers

8

Using the latest ffmpeg

General users should always use ffmpeg from the current git master branch (the latest code available):

  • When encountering an issue the first thing to do is check to see if you are using a build from git master.
  • It is considered stable.
  • It will have more bug fixes and features.
  • FFmpeg development is very active.
  • If you want to get support from official help resources you must use git master.
  • Releases are for distributors.

See the FFmpeg Download page for various options, or refer to FFmpeg Wiki: Compile Guides.

Other stuff

  • In your command with drawbox you can steam copy the audio with -c:a copy instead of re-encoding it.

  • When using -ss, -to only works as expected if -ss is used as an output option.

LordNeckbeard

Posted 2015-05-02T10:33:21.757

Reputation: 4 801

Thank you very much, It does work better & faster. Can you please check this one too http://video.stackexchange.com/questions/15477/can-i-run-this-in-one-command-line-ffmpeg I'm just curious if it can be simplified.

whitesiroi 2015-05-04T04:54:31.727

@whitesiroi Sure. Answered, although it appears I made a commenter to that question unhappy.LordNeckbeard 2015-05-04T07:12:10.300

Sorry for that.whitesiroi 2015-05-04T07:26:53.087

0

When I use ffmpeg to remux some recorded video (can be TS, MP4 or MKV) and get the non monotonous dts in output stream - timestamps etc etc error, the resulting video either appears to have audio only or plays jerkily. The only way I have found of reliably dealing with this is to use AviDemux. With Copy settings for both audio and video and selecting MP4V2 Muxer it is possible,, under the Configure option to select Optimize For Streaming. The resulting MP4 file can now be used in ffmpeg without generating error messages. Trust this is of use.

gjdgjd

Posted 2015-05-02T10:33:21.757

Reputation: 1

0

I got similar errors, and the audio in my output videos was sometimes out of sync and sometimes missing completely, but I ended up using mkvmerge from mkvtoolnix instead.

I first used ffmpeg to resize and re-encode the input videos:

for f in *.mp4;do height=720;width=1280;ffmpeg -y -i $f -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:v libx264 -crf 22 -preset slow -pix_fmt yuv420p -c:a libfdk_aac -vbr 3 -ac 2 -ar 44100 ${f%mp4}mkv;done

After that I concatenated the videos:

mkvmerge -o /tmp/output.mkv $(printf %s\\n *.mkv|sed '1!s/^/+')

Some of my input videos did not have an audio channel, so I had to use a command like this to add a silent audio channel to them:

for f in *.mkv;do ffprobe $f|&grep -q '1: Audio'||ffmpeg -i $f -f lavfi -i anullsrc -c:a libfdk_aac -shortest -c:v copy silent-$f;done

user4669748

Posted 2015-05-02T10:33:21.757

Reputation: 101

0

As per https://trac.ffmpeg.org/wiki/Concatenate

I had this same issue. I'm running ffmpeg version 2.6.3 on a mac. I converted my source clips to the .MTS format with an added tag of -q 0, updated the extensions in the text file and set my output file to a .MTS when I ran the concat command in ffmpeg. It worked like a charm. Here is my workflow.

ffmpeg -i clip-1.MOV -q 0 clip-1.MTS

ffmpeg -i clip-2.MOV -q 0 clip-2.MTS

updated the text file (mylist.txt) to read:

file clip-1.MTS
file clip-2.MTS

then ran the concat command as follows:

ffmpeg -f concat -i mylist.txt -c copy output.MTS

Worked for me! You can convert the final output.MTS to whatever format you need.

Duncan Lindsey

Posted 2015-05-02T10:33:21.757

Reputation: 1