Answers.Body: <p>With image sequences, you have to use the framerate option. So,</p>
  
  <pre><code>ffmpeg -framerate 30 -i %d.png -itsoffset 0.770 -i soundtrack.wav -vcodec mpeg4 -y "ffmpegtest.mp4"
  </code></pre>
  
  <p>With <code>-r</code> specified before the sequence name, FFmpeg assumes 25 fps and duplicates/drop frames to meet the set rate.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-05T16:46:26.260Z
Answers.Text: I don't completely understand the last sentence yet, but it solved the problem, thank you.
Answers.UserDisplayName: Oddthinking
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-05T16:49:03.670Z
Answers.Text: Let's say you set `-r 50`. FFmpeg treats the input as having a native rate of 25 and duplicates each frame to make it 50 fps. If you set `-r 10`, it drops 3 out of every 5 frames.
Answers.UserDisplayName: Gyan
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-05T16:54:48.567Z
Answers.Text: Right, I expected that to be true if I had the -r on the output only, and not on the input. I expected the first -r on the command line to affect the input, preventing that. (Clearly, I was wrong!) Looking at [section 5.5 of the manual](https://www.ffmpeg.org/ffmpeg.html), it seems it *used* to work they way I expected. Perhaps I got my misunderstanding from an old web-site. Thanks for clearing it up.
Answers.UserDisplayName: Oddthinking
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-11-05T16:44:47.623Z
Answers.LastActivityDate: 2016-11-05T16:44:47.623Z
Answers.UserDisplayName: Gyan
Body: <p>I am attempting to animate a series of PNG images at 30 frames per second (and add an audio track) with FFmpeg.</p>
  
  <p>On the command line, I specify the input and output frame rates as 30 fps.</p>
  
  <blockquote>
    <p>ffmpeg.exe <strong>-r 30</strong> -i %d.png -itsoffset 0.770 -i soundtrack.wav -r 30 -vcodec mpeg4 -y "ffmpegtest.mp4"</p>
  </blockquote>
  
  <p>The output shows that it is reading the input images at the default <strong>25 frames per second</strong>.</p>
  
  <pre><code>    ffmpeg version N-82225-gb4e9252 Copyright (c) 2000-2016 the FFmpeg developers
        built with gcc 5.4.0 (GCC)
        configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
        libavutil      55. 35.100 / 55. 35.100
        libavcodec     57. 66.101 / 57. 66.101
        libavformat    57. 57.100 / 57. 57.100
        libavdevice    57.  2.100 / 57.  2.100
        libavfilter     6. 66.100 /  6. 66.100
        libswscale      4.  3.100 /  4.  3.100
        libswresample   2.  4.100 /  2.  4.100
        libpostproc    54.  2.100 / 54.  2.100
      Input #0, image2, from '%d.png':
        Duration: 00:02:24.00, start: 0.000000, bitrate: N/A
          Stream #0:0: Video: png, rgba(pc), 480x320, 25 fps, 25 tbr, 25 tbn, 25 tbc
  </code></pre>
  
  <p>[I'll interrupt here to say it is that last line that confuses me]</p>
  
  <pre><code>    Guessed Channel Layout for Input Stream #1.0 : stereo
      Input #1, wav, from 'soundtrack.wav':
        Duration: 00:06:51.26, bitrate: 1411 kb/s
          Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
      Output #0, mp4, to 'ffmpegtest.mp4':
        Metadata:
          encoder         : Lavf57.57.100
          Stream #0:0: Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 480x320, q=2-31, 200 kb/s, 30 fps, 15360 tbn, 30 tbc
          Metadata:
            encoder         : Lavc57.66.101 mpeg4
          Side data:
            cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
          Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
          Metadata:
            encoder         : Lavc57.66.101 aac
      Stream mapping:
        Stream #0:0 -&gt; #0:0 (png (native) -&gt; mpeg4 (native))
        Stream #1:0 -&gt; #0:1 (pcm_s16le (native) -&gt; aac (native))
      Press [q] to stop, [?] for help
      [image2 @ 0000000000622cc0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
      frame= 3600 fps=242 q=19.1 Lsize=    9908kB time=00:06:52.04 bitrate= 197.0kbits/s speed=27.7x
      video:3263kB audio:6494kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.540179%
      [aac @ 000000000064e600] Qavg: 448.922
  </code></pre>
  
  <p>I am fairly new to FFmpeg. What am I missing? How do I tell it the input stream is 30 fps?</p>
  
Tags: <ffmpeg>
Title: Changing the input frame rate of a series of images in FFmpeg
UserDisplayName: Oddthinking
ThreadText: # Changing the input frame rate of a series of images in FFmpeg
  
  (Asked by: username_0 on 2016-11-05)
  
  I am attempting to animate a series of PNG images at 30 frames per second (and add an audio track) with FFmpeg.
  
  On the command line, I specify the input and output frame rates as 30 fps.
  
  > ffmpeg.exe **-r 30** -i %d.png -itsoffset 0.770 -i soundtrack.wav -r 30 -vcodec mpeg4 -y "ffmpegtest.mp4"
  
  The output shows that it is reading the input images at the default **25 frames per second**.
  
  ```
      ffmpeg version N-82225-gb4e9252 Copyright (c) 2000-2016 the FFmpeg developers
        built with gcc 5.4.0 (GCC)
        configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
        libavutil      55. 35.100 / 55. 35.100
        libavcodec     57. 66.101 / 57. 66.101
        libavformat    57. 57.100 / 57. 57.100
        libavdevice    57.  2.100 / 57.  2.100
        libavfilter     6. 66.100 /  6. 66.100
        libswscale      4.  3.100 /  4.  3.100
        libswresample   2.  4.100 /  2.  4.100
        libpostproc    54.  2.100 / 54.  2.100
      Input #0, image2, from '%d.png':
        Duration: 00:02:24.00, start: 0.000000, bitrate: N/A
          Stream #0:0: Video: png, rgba(pc), 480x320, 25 fps, 25 tbr, 25 tbn, 25 tbc
  
  ```
  
  [I'll interrupt here to say it is that last line that confuses me]
  
  ```
      Guessed Channel Layout for Input Stream #1.0 : stereo
      Input #1, wav, from 'soundtrack.wav':
        Duration: 00:06:51.26, bitrate: 1411 kb/s
          Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
      Output #0, mp4, to 'ffmpegtest.mp4':
        Metadata:
          encoder         : Lavf57.57.100
          Stream #0:0: Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 480x320, q=2-31, 200 kb/s, 30 fps, 15360 tbn, 30 tbc
          Metadata:
            encoder         : Lavc57.66.101 mpeg4
          Side data:
            cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
          Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
          Metadata:
            encoder         : Lavc57.66.101 aac
      Stream mapping:
        Stream #0:0 -> #0:0 (png (native) -> mpeg4 (native))
        Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
      Press [q] to stop, [?] for help
      [image2 @ 0000000000622cc0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
      frame= 3600 fps=242 q=19.1 Lsize=    9908kB time=00:06:52.04 bitrate= 197.0kbits/s speed=27.7x
      video:3263kB audio:6494kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.540179%
      [aac @ 000000000064e600] Qavg: 448.922
  
  ```
  
  I am fairly new to FFmpeg. What am I missing? How do I tell it the input stream is 30 fps?
  
  **Tags:** ffmpeg
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2016-11-05. Score: 9 | Accepted answer
  
  With image sequences, you have to use the framerate option. So,
  
  ```
  ffmpeg -framerate 30 -i %d.png -itsoffset 0.770 -i soundtrack.wav -vcodec mpeg4 -y "ffmpegtest.mp4"
  
  ```
  
  With `-r` specified before the sequence name, FFmpeg assumes 25 fps and duplicates/drop frames to meet the set rate.
  
  > **Comments:**
  > **username_0**: I don't completely understand the last sentence yet, but it solved the problem, thank you.  
  > **username_1**: Let's say you set `-r 50`. FFmpeg treats the input as having a native rate of 25 and duplicates each frame to make it 50 fps. If you set `-r 10`, it drops 3 out of every 5 frames.  
  > **username_0**: Right, I expected that to be true if I had the -r on the output only, and not on the input. I expected the first -r on the command line to affect the input, preventing that. (Clearly, I was wrong!) Looking at [section 5.5 of the manual](https://www.ffmpeg.org/ffmpeg.html), it seems it *used* to work they way I expected. Perhaps I got my misunderstanding from an old web-site. Thanks for clearing it up.  
  
  ---
  
  