user18532: I have a MPEG-TS file input.mpg (I know, the file name does not look like a MPEG-TS file, but that is the file I received and by ffprobe I know it is a MPEG-TS file).
When I transcode the file by
ffmpeg -i input.mpg output.ps

ffmpeg says it is unable to find a suitable output format. But according to Wikipedia, .ps is a valid file extension for MPEG-PS.
How can I know which extension will be recognized by ffmpeg?

user1871: There's no single list which has all the extensions supported by muxers in ffmpeg. FFmpeg is modular so each muxer registers the extensions it supports. A utility function then traverses through all registered muxers and tries to match their extensions with that of the output filename specified.
At the command line, you can check the extensions registered to a particular muxer:
ffmpeg -h muxer=mpeg

whose output will have a line like the 2nd line here
Muxer mpeg [MPEG-1 Systems / MPEG program stream]:
    Common extensions: mpg,mpeg.
....

Note that extensions by themselves don't signify anything other than provide a basis to select a muxer. If you want a MPEG Program Stream to have the extension ps, then use
ffmpeg -i input.mpg -f mpeg output.ps

This -f option forces the output format.

18532: <p>I have a <code>MPEG-TS</code> file <code>input.mpg</code> (I know, the file name does not look like a <code>MPEG-TS</code> file, but that is the file I received and by <code>ffprobe</code> I know it is a <code>MPEG-TS</code> file).</p>

<p>When I transcode the file by</p>

<pre><code>ffmpeg -i input.mpg output.ps
</code></pre>

<p><code>ffmpeg</code> says it is unable to find a suitable output format. But according to <a href="https://en.wikipedia.org/wiki/MPEG_program_stream" rel="nofollow noreferrer">Wikipedia</a>, <code>.ps</code> is a valid file extension for <code>MPEG-PS</code>.</p>

<p>How can I know which extension will be recognized by <code>ffmpeg</code>?</p>
 1871: <p>There's no single list which has all the extensions supported by muxers in ffmpeg. FFmpeg is modular so each muxer registers the extensions it supports. A utility function then traverses through all registered muxers and tries to match their extensions with that of the output filename specified.</p>

<p>At the command line, you can check the extensions registered to a particular muxer:</p>

<pre><code>ffmpeg -h muxer=mpeg
</code></pre>

<p>whose output will have a line like the 2nd line here</p>

<pre><code>Muxer mpeg [MPEG-1 Systems / MPEG program stream]:
    Common extensions: mpg,mpeg.
....
</code></pre>

<p>Note that extensions by themselves don't signify anything other than provide a basis to select a muxer. If you want a MPEG Program Stream to have the extension <code>ps</code>, then use</p>

<pre><code>ffmpeg -i input.mpg -f mpeg output.ps
</code></pre>

<p>This <code>-f</code> option forces the output format.</p>
