VLC's --sout chain is not a converter bolted onto a player — it is the streaming engine, pointed at a file instead of a network. VideoLAN's own wiki puts it plainly: "In VLC, transcoding is exactly the same as streaming across a network, except that the output is sent to a file instead of a network."
That one sentence explains everything odd about the syntax: why every option is called --sout-something, why the chain has an "access" and a "destination", and why you have to name a muxer for a plain file conversion.
One warning first: the wiki page most of these examples come from carries a banner reading, verbatim, "This page is outdated and information might be incorrect." Treat the commands as the shape of the syntax, and vlc -H on your own build as the authority for what your version accepts.
The command
This is VideoLAN's own Windows example, quoted exactly as the wiki gives it:
"%PROGRAMFILES%\VideoLAN\VLC\vlc.exe" "C:\Movies\Your File.asf" --sout='#transcode{vcodec=mp2v,vb=4096,acodec=mp2a,ab=192,scale=1,channels=2,deinterlace}:std{access=file,mux=ps,dst="C:\Movies\Your File Output.ps.mpg"}'Read it as two stages joined by a colon. #transcode{...} re-encodes. :std{...} decides where the result goes. On the second stage the docs are explicit: "The access=file instructs vlc to store the output in a file (and not stream it), and the dst is the destination of the new (output) file."
The mux option is not optional. The official streaming documentation says of it: "This option has to be set." It lists ts, ps, mpeg1, ogg, asf, asfh, avi and mpjpeg, each with its own narrow list of accepted codecs — and it includes one blunt admission worth knowing before you pick: "The avi muxer in VLC is known to produce corrupt files."
That list does not cover mp4, mkv or webm — yet other official wiki pages use mux="mp4" in their own examples. VideoLAN's documentation index concedes that "Parts of this documentation are currently outdated or incomplete," so read the gap as missing documentation, not a missing feature.
What each flag does
These are the transcode module's own parameter descriptions, with the defaults the module page publishes:
| Option | Official description | Default |
|---|---|---|
vcodec | "This is the video codec that will be used" | NULL |
vb | "Target bitrate of the transcoded video stream" | 0 |
acodec | "This is the audio codec that will be used" | NULL |
ab | "Target bitrate of the transcoded audio stream" | 96 |
channels | "Number of audio channels in the transcoded streams", range [0 .. 9] | 0 |
samplerate | "Sample rate of the transcoded audio stream (11250, 22500, 44100 or 48000)", range [0 .. 48000] | 0 |
scale | "Scale factor to apply to the video while transcoding (eg: 0.25)" | 0 |
fps | "Target output frame rate for the video stream" | NULL |
deinterlace | "Deinterlace the video before encoding" | disabled |
threads | "Number of threads used for the transcoding", range [1 .. 32] | 0 |
vb and ab are both in kbit/s — the streaming documentation states it directly for each ("in kbit/s").
Two behaviours are easy to miss:
Omitting a codec means keeping it. The docs say: "If vcodec is missing, the video codec will stay the same (same for acodec)." A transcode block with only acodec set leaves video untouched. And if the input already matches what you want, "you don't have to transcode at all (just leave out the transcode settings on the command line, and it will thence not transcode)" — that is remuxing rather than transcoding.
There is no static list of supported codecs. The module page explains why: "Since supported codecs are dynamically assigned by the running program, sout-transcode-venc, sout-transcode-aenc and sout-transcode-senc have been left blank." That is the official reason nobody can hand you a definitive table.
Two hard ceilings on the audio side
These are the numbers that decide whether VLC is the right tool at all.
ab defaults to 96. Name an acodec without an ab and the target bitrate is the module default — 96 kbit/s — not whatever your source was encoded at. The module page does not say which VLC versions that default applies to, so confirm it with vlc -H.
samplerate is capped at 48000. The parameter is declared as <integer [0 .. 48000]>, with the official parenthetical "(11250, 22500, 44100 or 48000)". There is no value above 48000 to pass. If you are transcoding 96 kHz audio and need to keep it at 96 kHz, VLC's transcode module cannot express that output — it is a range limit in the option itself, not a preset you can override.
Everything else on that list exists to lower bitrate, and the docs say so one by one: reducing fps "can help decrease its bitrate"; scale "can be particularly useful to help reduce the bitrate of a stream"; "Reducing the sample rate is a way to lower the bitrate of the resulting audio stream"; and channels is useful "to lower the bitrate of an audio stream." Four knobs, one purpose.
Variations: batch conversion and the double-extension trap
The wiki gives a complete Windows batch line for converting every MP3 in a folder to uncompressed WAV:
for %%a in (*.mp3) do cmd /c "C:\Programme\VideoLAN\VLC\vlc.exe" -I dummy -vv %%a --sout #transcode{acodec=s16l,channels=2,samplerate=44100}:standard{access=file,mux=wav,dst=g:\_audio_conv\%%a.wav} vlc://quitThree details in that line are documented and worth lifting:
acodec=s16lwithmux=wav. The extract-audio HowTo spells out the pairing: "The parameter acodec=s16l tells VLC to use convert the audio content using the s16l codec, which is the codec for WAV format audio. Parameter mux=wav tells VLC to write the s16l audio data into a file with the WAV structure."cmd /cis load-bearing. Verbatim: "Cmd /c makes the script wait to finish transcoding before starting the next transcode."- The double-extension bug has an official fix. The note reads: "if the line above creates 'double file name extensions' like *.FILE_EXT.OUTPUT_EXT (e.g. *.mp3.wav when converting mp3 to wav), try:" followed by
... dst=OUTPUT_PATH\%%~na.OUTPUT_EXT ...as the replacementdst=.
For audio-only work, VideoLAN is unusually candid about where VLC sits: "Be aware that, while VLC has certain facility for this task, other tools may be even more powerful, faster, or more reliable for the task." It adds: "Where VLC really shines is for sources which combine video and audio content."
If the job is a plain audio format swap, you do not need a command line at all:
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
This runs in your browser — the file is read from disk, converted locally and handed back, never uploaded. Going the other direction is MP3 to WAV, and the whole set lives at all Clapr tools.
Troubleshooting
Nothing happens and there is no error. This is documented behaviour, not a mystery: "If you choose an incompatible stream for a given muxer, it may silently fail. You can look for error messages in the messages window to help you debug the failures." Open Tools → Messages before assuming the command was wrong; this is also the mechanism behind a converted file that comes out with no audio.
A transcode that should work just fails. Check the GUI: "without the options --no-repeat --no-loop, you may find that loop options selected in the GUI cause transcodes to fail."
Paths break inside quotes. The wiki's note: "due to command line parsing, at times, especially within single and double quote blocks, a backslash may have to be escaped by using a double backslash so that a filename would be D:\path\to\file.mpg".
Bus errors on macOS, or a stray prompt on Windows. Use vlc -I dummy on macOS "to avoid possible Bus error problems". If -I dummy spawns an extra prompt with vbv buffer overflow, the docs suggest -I rc instead.
Resizing gives the wrong result. "Avoid using width and height parameters, also maxwidth and maxheight! These are applied before the vfilter and might result in unwanted results."
Before a long encode, take the official advice: "it's advisable to use an option like --stop-time=30 to only encode the first 30 seconds". On macOS the docs say that trick "doesn't seem to work" — press Ctrl-C instead and VLC "will properly write out the already transcoded segment".
FAQ
What does sout mean in VLC?
It is the stream output chain. VLC treats a file conversion as a stream whose destination happens to be disk, which is why the options are named --sout-* and why the output stage needs a muxer — the docs say of mux: "This option has to be set."
What is the difference between --sout and :sout? Scope. The extract-audio HowTo states it exactly: ":sout means that the option sout applies only to the preceding stream, not to the whole command line."
Can VLC transcode audio to 96 kHz?
Not through the transcode module. sout-transcode-samplerate is declared as [0 .. 48000], with the documented values "(11250, 22500, 44100 or 48000)". 48000 is the top of the range.
Why did my converted audio come out at a lower bitrate than the source?
Most likely because you set acodec without setting ab. The documented default target is 96, in kbit/s, regardless of what the source was encoded at.
How do I burn subtitles in with sout?
The docs separate two things: soverlay "allows rendering subtitles directly on the video, while transcoding it. Do not confuse this option with senc/scodec that transcode the subtitles and stream them." They also note "The only subtitle encoder we have at this time is dvbsub" — that page gives no version for "at this time", so check your own build with vlc -p module --advanced --help-verbose.
How do I see the full option list for my version? "Running the command vlc --help will create a .TXT file containing all the command-line options," and "You can also use this to get more exhaustive list: vlc -H".
Flag definitions quoted from VideoLAN's transcode module documentation and the advanced command-line streaming guide, checked 16 September 2026. The published vlc -H output is from a 4.0.0-dev build — confirm against your own. Related: FFmpeg can copy an audio stream out losslessly, and the other command-line write-ups are in the ffmpeg category.