user5998: I'm cutting/converting some videos with ffmpeg.  What I'd really like is to be able to have the output hold the last frame for a few seconds (with silence for audio).  Is such a thing possible?  Or will I have to somehow get the last frame and make a new video from that?

user1760: One method is to use the overlay video filter. Assuming your video is 640x480, 30 seconds duration, 25 frame rate:
ffmpeg -f lavfi -i nullsrc=s=640x480:d=35:r=25 -i video.mp4 -i audio.wav -filter_complex \
"[0:v][1:v]overlay[video]" -map "[video]" -map 2:a -codec:a copy -shortest output.mkv


I set the duration of the nullsrc source filter to be 5 seconds longer than input.mkv.
The default behavior of overlay is to repeat the last frame of the overlaid source. See the eof_action option for other behaviors. 
The audio in this example is being stream copied (re-muxed) instead of being re-encoded.
The downside is that this examples requires re-encoding since a filter is being used, but it may be simpler than other methods since it is just one command.


user34443: The currently accepted answer is from 2014. The more recently added tpad filter lets you do this more easily.
ffmpeg -i in.mp4 -vf tpad=stop_mode=clone:stop_duration=2 out.mp4


5998: <p>I'm cutting/converting some videos with ffmpeg.  What I'd really like is to be able to have the output hold the last frame for a few seconds (with silence for audio).  Is such a thing possible?  Or will I have to somehow get the last frame and make a new video from that?</p>
 1760: <p>One method is to use the <a href="http://ffmpeg.org/ffmpeg-filters.html#overlay" rel="noreferrer"><code>overlay</code> video filter</a>. Assuming your video is 640x480, 30 seconds duration, 25 frame rate:</p>

<pre><code>ffmpeg -f lavfi -i nullsrc=s=640x480:d=35:r=25 -i video.mp4 -i audio.wav -filter_complex \
"[0:v][1:v]overlay[video]" -map "[video]" -map 2:a -codec:a copy -shortest output.mkv
</code></pre>

<ul>
<li><p>I set the duration of the <a href="http://ffmpeg.org/ffmpeg-filters.html#color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc" rel="noreferrer"><code>nullsrc</code> source filter</a> to be 5 seconds longer than <code>input.mkv</code>.</p></li>
<li><p>The default behavior of overlay is to repeat the last frame of the overlaid source. See the <code>eof_action</code> option for other behaviors. </p></li>
<li><p>The audio in this example is being <a href="http://ffmpeg.org/ffmpeg.html#Stream-copy" rel="noreferrer">stream copied</a> (re-muxed) instead of being re-encoded.</p></li>
<li><p>The downside is that this examples requires re-encoding since a filter is being used, but it may be simpler than other methods since it is just one command.</p></li>
</ul>
 34443: <p>The currently accepted answer is from 2014. The more recently added <a href="https://ffmpeg.org/ffmpeg-filters.html#tpad" rel="noreferrer"><code>tpad</code></a> filter lets you do this more easily.</p>
<pre><code>ffmpeg -i in.mp4 -vf tpad=stop_mode=clone:stop_duration=2 out.mp4
</code></pre>
