roc-copy OPTIONS


Read audio stream from a file, transform it, and and write it to a another file.


-h, --help

Print help and exit

-V, --version

Print version and exit

-v, --verbose

Increase verbosity level (may be used multiple times)

-L, --list-supported

list supported schemes and formats

-i, --input=FILE_URI

Input file URI

-o, --output=FILE_URI

Output file URI


Force input file format


Force output file format


Duration of the internal frames, TIME units

-r, --rate=INT

Output sample rate, Hz


Resampler backend (possible values=”default”, “builtin”, “speex”, “speexdec” default=`default’)


Resampler profile (possible values=”low”, “medium”, “high” default=`medium’)


Enable self profiling (default=off)


Set colored logging mode for stderr output (possible values=”auto”, “always”, “never” default=`auto’)

File URI

--input and --output options require a file URI in one of the following forms:

  • file:///ABS/PATH – absolute file path

  • file://localhost/ABS/PATH – absolute file path (alternative form; only “localhost” host is supported)

  • file:/ABS/PATH – absolute file path (alternative form)

  • file:REL/PATH – relative file path

  • file://- – stdout

  • file:- – stdout (alternative form)


  • file:///home/user/test.wav

  • file://localhost/home/user/test.wav

  • file:/home/user/test.wav

  • file:./test.wav

  • file:-

The list of supported file formats can be retrieved using --list-supported option.

If the --output is omitted, the conversion results are discarded.

The --input-format and --output-format options can be used to force the file format. If the option is omitted, the file format is auto-detected. This option is always required for stdin or stdout.

The path component of the provided URI is percent-decoded. For convenience, unencoded characters are allowed as well, except that % should be always encoded as %25.

For example, the file named /foo/bar%/[baz] may be specified using either of the following URIs: file:///foo%2Fbar%25%2F%5Bbaz%5D and file:///foo/bar%25/[baz].

Time units

TIME should have one of the following forms:

123ns; 1.23us; 1.23ms; 1.23s; 1.23m; 1.23h;


Convert sample rate to 48k:

$ roc-copy -vv --rate=48000 -i file:input.wav -o file:output.wav

Drop output results (useful for benchmarking):

$ roc-copy -vv --rate=48000 -i file:input.wav

Input from stdin, output to stdout:

$ roc-copy -vv --input-format=wav -i file:- \
    --output-format=wav -o file:- >./output.wav <./input.wav


The following environment variables are supported:


By default, terminal coloring is automatically detected. This environment variable can be set to a non-empty string to disable terminal coloring. It has lower precedence than --color option.


By default, terminal coloring is automatically detected. This environment variable can be set to a positive integer to enable/force terminal coloring. It has lower precedence than NO_COLOR variable and --color option.


roc-recv(1), roc-send(1), the Roc web site at


Please report any bugs found via GitHub (


See authors page on the website for a list of maintainers and contributors (