<p>I used this command for concatenating 2 constant rate videos:</p>

<pre><code>ffmpeg -f concat -i files.txt  -c copy output.mp4
</code></pre>

<p>where the file <code>files.txt</code> has this content:</p>

<pre><code>file input1.mp4
file input2.mp4
</code></pre>

<p>I'm wondering why the <em>output</em> file has a <em>variable frame rate</em>, even though both <em>input</em> files has a <em>constant</em> one?</p>

<hr>

<p>Part of MediaInfo for every <em>input</em> file:</p>

<pre><code>Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 30.000 FPS
Color space                              : YUV
</code></pre>

<p>and for the <em>output</em> file:</p>

<pre><code>Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 29.905 FPS
Minimum frame rate                       : 19.224 FPS
Maximum frame rate                       : 30.000 FPS
Color space                              : YUV
</code></pre>

<hr>

<p>FFprobe outputs:</p>

<pre><code>&gt;ffprobe -hide_banner input1.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.22.100
  Duration: 00:00:02.95, start: 0.000000, bitrate: 2649 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2394 kb/s, 30 fps, 30 tbr, 15360 tbn
, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 258 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
</code></pre>

<hr>

<pre><code>&gt;ffprobe -hide_banner input2.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.22.100
  Duration: 00:00:02.95, start: 0.000000, bitrate: 2649 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2394 kb/s, 30 fps, 30 tbr, 15360 tbn
, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 258 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
</code></pre>

<hr>

<pre><code>&gt;ffprobe -hide_banner output.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.22.100
  Duration: 00:00:05.90, start: 0.000000, bitrate: 2647 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2386 kb/s, 29.90 fps, 60 tbr, 15360
tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 257 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
</code></pre>

CC BY-SA 4.0
2019-03-23T06:41:16.670Z
Share the ffprobe output for both files and the output
Gyan
CC BY-SA 4.0
2019-03-23T07:22:42.580Z
@Gyan, I added it now.
MarianD
CC BY-SA 4.0
2019-03-23T09:44:12.617Z
Does `ffmpeg -f concat -i files.txt  -c copy -an output.mp4` yield a CFR output?
Gyan
CC BY-SA 4.0
2019-03-23T18:52:02.407Z
@Gyan, no, the output is still VFR.
MarianD
CC BY-SA 4.0
2020-06-24T05:18:26.680Z
@Gyan Were you able to find out the cause? I'm facing the exact same problem. It appears to be related to audio. -an on contact doesn't change anything, but if I remove audio from both files before concat framerate becomes constant.
Dmitry Kuskov
<ffmpeg>
VFR output from muxer-level concatenation of CFR inputs
MarianD
# VFR output from muxer-level concatenation of CFR inputs

(Asked by: username_0 on 2019-03-23)

I used this command for concatenating 2 constant rate videos:
ffmpeg -f concat -i files.txt  -c copy output.mp4

where the file files.txt has this content:
file input1.mp4
file input2.mp4

I'm wondering why the output file has a variable frame rate, even though both input files has a constant one?

Part of MediaInfo for every input file:
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 30.000 FPS
Color space                              : YUV

and for the output file:
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 29.905 FPS
Minimum frame rate                       : 19.224 FPS
Maximum frame rate                       : 30.000 FPS
Color space                              : YUV


FFprobe outputs:
>ffprobe -hide_banner input1.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.22.100
  Duration: 00:00:02.95, start: 0.000000, bitrate: 2649 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2394 kb/s, 30 fps, 30 tbr, 15360 tbn
, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 258 kb/s (default)
    Metadata:
      handler_name    : SoundHandler


>ffprobe -hide_banner input2.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.22.100
  Duration: 00:00:02.95, start: 0.000000, bitrate: 2649 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2394 kb/s, 30 fps, 30 tbr, 15360 tbn
, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 258 kb/s (default)
    Metadata:
      handler_name    : SoundHandler


>ffprobe -hide_banner output.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.22.100
  Duration: 00:00:05.90, start: 0.000000, bitrate: 2647 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2386 kb/s, 29.90 fps, 60 tbr, 15360
tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 257 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

**Tags:** ffmpeg

> **Comments:**
> **username_1**: Share the ffprobe output for both files and the output  
> **username_0**: @username_1, I added it now.  
> **username_1**: Does `ffmpeg -f concat -i files.txt  -c copy -an output.mp4` yield a CFR output?  
> **username_0**: @username_1, no, the output is still VFR.  
> **username_2**: @username_1 Were you able to find out the cause? I'm facing the exact same problem. It appears to be related to audio. -an on contact doesn't change anything, but if I remove audio from both files before concat framerate becomes constant.  

---

## 0 answers

