avprobe
avprobe media prober
see also :
avconv - avplay
Synopsis
avprobe
[options] [input_file]
add an example, a script, a trick and tips
examples
source
if (( $? != 1 )); then
continue
fi
fps=`avprobe ${i} |&
grep -m 1 'mpeg2video (Main)' | ruby -n
-e 'puts $1 if $_=~/([\d.]+)
tbr/'`
fps=`avprobe ${i} |& grep -m 1 'mpeg2video (Main)' | ruby -n -e 'puts $1 if $_=~/([\d.]+) tbr/'`
par=`avprobe ${i} |&
grep -m 1 'Video: ' | ruby -n -e
'puts $1 if $_=~/\[PAR (\d+:\d+)
/'`
source
OUTSIZEX=$MAXWIDTH
OUTSIZEY=$MAXHEIGHT
eval $(avprobe -v 0 "$FILE" -show_streams | grep -E 'width|height')
description
avprobe gathers
information from multimedia streams and prints it in
human- and machine-readable fashion.
For example it
can be used to check the format of the container used by a
multimedia stream and the format and type of each media
stream contained in it.
If a filename
is specified in input, avprobe will try to open and probe
the file content. If the file cannot be opened or recognized
as a multimedia file, a positive exit code is returned.
avprobe may be
employed both as a standalone application or in combination
with a textual filter, which may perform more sophisticated
processing, e.g. statistical processing or plotting.
Options are
used to list some of the formats supported by avprobe or for
specifying which information to display, and for setting how
avprobe will show it.
avprobe output
is designed to be easily parsable by a textual filter, and
consists of one or more sections of the form:
[SECTION]
key1=val1
keyN=valN
[/SECTION]
Metadata tags
stored in the container or in the streams are recognized and
printed in the corresponding " FORMAT
" or " STREAM " section, and
are prefixed by the string " TAG:
".
options
All the
numerical options, if not specified otherwise, accept in
input a string representing a number, which may contain one
of the International System number postfixes, for example
’K’, ’M’, ’G’. If
’i’ is appended after the postfix, powers of 2
are used instead of powers of 10. The ’B’
postfix multiplies the value for 8, and can be appended
after another postfix or used alone. This allows using for
example ’ KB ’,
’MiB’, ’G’ and ’B’ as
postfix.
Options which
do not take arguments are boolean options, and set the
corresponding value to true. They can be set to false by
prefixing with "no" the option name, for example
using "-nofoo" in the command line will set
to false the boolean option with name "foo".
Stream
specifiers
Some options are applied per-stream, e.g. bitrate or codec.
Stream specifiers are used to precisely specify which
stream(s) does a given option belong to.
A stream
specifier is a string generally appended to the option name
and separated from it by a colon. E.g.
"-codec:a:1 ac3" option contains
"a:1" stream specifer, which matches the
second audio stream. Therefore it would select the ac3 codec
for the second audio stream.
A stream
specifier can match several stream, the option is then
applied to all of them. E.g. the stream specifier in
"-b:a 128k" matches all audio
streams.
An empty stream
specifier matches all streams, for example
"-codec copy" or
"-codec: copy" would copy all the
streams without reencoding.
Possible forms
of stream specifiers are:
stream_index
Matches the stream with this
index. E.g. "-threads:1 4" would
set the thread count for the second stream to 4.
stream_type[:stream_index]
stream_type is one of:
’v’ for video, ’a’ for audio,
’s’ for subtitle, ’d’ for data and
’t’ for attachments. If stream_index is
given, then matches stream number stream_index of
this type. Otherwise matches all streams of this type.
p:program_id[:stream_index]
If stream_index is
given, then matches stream number stream_index in
program with id program_id. Otherwise matches all
streams in this program.
Generic
options
These options are shared amongst the av* tools.
-h, -?,
-help, --help
Show help.
-version
Show version.
-formats
Show available formats.
The fields
preceding the format names have the following meanings:
D
Decoding available
E
Encoding available
-codecs
Show available codecs.
The fields
preceding the codec names have the following meanings:
D
Decoding available
E
Encoding available
V/A/S
Video/audio/subtitle codec
S
Codec supports slices
D
Codec supports direct rendering
T
Codec can handle input truncated at random locations
instead of only at frame boundaries
-bsfs
Show available bitstream
filters.
-protocols
Show available protocols.
-filters
Show available libavfilter
filters.
-pix_fmts
Show available pixel
formats.
-sample_fmts
Show available sample
formats.
-loglevel
loglevel | -v loglevel
Set the logging level used by
the library. loglevel is a number or a string
containing one of the following values:
quiet
panic
fatal
error
warning
info
verbose
debug
By default the
program logs to stderr, if coloring is supported by the
terminal, colors are used to mark errors and warnings. Log
coloring can be disabled setting the environment variable
AV_LOG_FORCE_NOCOLOR or
NO_COLOR , or can be forced setting
the environment variable
AV_LOG_FORCE_COLOR . The use of the
environment variable NO_COLOR is
deprecated and will be dropped in a following Libav
version.
AVOptions
These options are provided directly by the libavformat,
libavdevice and libavcodec libraries. To see the list of
available AVOptions, use the -help option. They
are separated into two categories:
generic
These options can be set for
any container, codec or device. Generic options are listed
under AVFormatContext options for containers/devices and
under AVCodecContext options for codecs.
private
These options are specific to
the given container, device or codec. Private options are
listed under their corresponding
containers/devices/codecs.
For example to
write an ID3v2.3 header instead of a default ID3v2.4 to an
MP3 file, use the id3v2_version
private option of the MP3 muxer:
avconv -i input.flac -id3v2_version 3 out.mp3
All codec
AVOptions are obviously per-stream, so the chapter on stream
specifiers applies to them
Note
-nooption syntax cannot be used for boolean
AVOptions, use -option 0/-option
1.
Note2 old
undocumented way of specifying per-stream AVOptions by
prepending v/a/s to the options name is now obsolete and
will be removed soon.
Main options
-f format
Force format to use.
-unit
Show the unit of the displayed
values.
-prefix
Use SI prefixes
for the displayed values. Unless the
"-byte_binary_prefix" option is used all the
prefixes are decimal.
-byte_binary_prefix
Force the use of binary
prefixes for byte values.
-sexagesimal
Use sexagesimal format
HH:MM:SS .MICROSECONDS for time values.
-pretty
Prettify the format of the
displayed values, it corresponds to the options
"-unit -prefix -byte_binary_prefix
-sexagesimal".
-show_format
Show information about the
container format of the input multimedia stream.
All the
container format information is printed within a section
with name " FORMAT ".
-show_packets
Show information about each
packet contained in the input multimedia stream.
The information
for each single packet is printed within a dedicated section
with name " PACKET ".
-show_streams
Show information about each
media stream contained in the input multimedia stream.
Each media
stream information is printed within a dedicated section
with name " STREAM ".
demuxers
Demuxers are configured elements in Libav which allow to read the
multimedia streams from a particular type of file.
When you configure your Libav build, all the supported demuxers
are enabled by default. You can list all available ones using the
configure option "--list-demuxers".
You can disable all the demuxers using the configure option
"--disable-demuxers", and selectively enable a single demuxer
with the option "--enable-demuxer= DEMUXER
", or disable it with the option "--disable-demuxer=
DEMUXER ".
The option "-formats" of the av* tools will display the list of
enabled demuxers.
The description of some of the currently available demuxers
follows.
image2
Image file demuxer.
This demuxer reads from a list of image files specified by a
pattern.
The pattern may contain the string "%d" or "%0Nd", which
specifies the position of the characters representing a
sequential number in each filename matched by the pattern. If the
form "%d0Nd" is used, the string representing the number
in each filename is 0-padded and N is the total number of
0-padded digits representing the number. The literal character
’%’ can be specified in the pattern with the string "%%".
If the pattern contains "%d" or "%0Nd", the first filename
of the file list specified by the pattern must contain a number
inclusively contained between 0 and 4, all the following numbers
must be sequential. This limitation may be hopefully fixed.
The pattern may contain a suffix which is used to automatically
determine the format of the images contained in the files.
For example the pattern "img-%03d.bmp" will match a sequence of
filenames of the form img-001.bmp, img-002.bmp,
..., img-010.bmp, etc.; the pattern "i%%m%%g-%d.jpg" will
match a sequence of filenames of the form i%m%g-1.jpg,
i%m%g-2.jpg, ..., i%m%g-10.jpg, etc.
The size, the pixel format, and the format of each image must be
the same for all the files in the sequence.
The following example shows how to use avconv for creating
a video from the images in the file sequence img-001.jpeg,
img-002.jpeg, ..., assuming an input framerate of 10
frames per second:
avconv -i 'img-%03d.jpeg' -r 10 out.mkv
Note that the pattern must not necessarily contain "%d" or
"%0Nd", for example to convert a single image file
img.jpeg you can employ the command:
avconv -i img.jpeg img.png
applehttp
Apple HTTP Live Streaming demuxer.
This demuxer presents all AVStreams from all variant streams. The
id field is set to the bitrate variant index number. By setting
the discard flags on AVStreams (by pressing ’a’ or ’v’ in
avplay), the caller can decide which variant streams to actually
receive. The total bitrate of the variant that the stream belongs
to is available in a metadata key named "variant_bitrate".
input devices
Input devices are configured elements in Libav which allow to
access the data coming from a multimedia device attached to your
system.
When you configure your Libav build, all the supported input
devices are enabled by default. You can list all available ones
using the configure option "--list-indevs".
You can disable all the input devices using the configure option
"--disable-indevs", and selectively enable an input device using
the option "--enable-indev= INDEV ", or you
can disable a particular input device using the option
"--disable-indev= INDEV ".
The option "-formats" of the av* tools will display the list of
supported input devices (amongst the demuxers).
A description of the currently available input devices follows.
alsa
ALSA (Advanced Linux Sound Architecture) input device.
To enable this input device during configuration you need
libasound installed on your system.
This device allows capturing from an ALSA device.
The name of the device to capture has to be an
ALSA card identifier.
An ALSA identifier has the syntax:
hw:<CARD>[,<DEV>[,<SUBDEV>]]
where the DEV and
SUBDEV components are optional.
The three arguments (in order: CARD ,
DEV , SUBDEV )
specify card number or identifier, device number and subdevice
number (-1 means any).
To see the list of cards currently recognized by your system
check the files /proc/asound/cards and
/proc/asound/devices.
For example to capture with avconv from an
ALSA device with card id 0, you may run the
command:
avconv -f alsa -i hw:0 alsaout.wav
For more information see:
<http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html>
bktr
BSD video input device.
dv1394
Linux DV 1394 input device.
fbdev
Linux framebuffer input device.
The Linux framebuffer is a graphic hardware-independent
abstraction layer to show graphics on a computer monitor,
typically on the console. It is accessed through a file device
node, usually /dev/fb0.
For more detailed information read the file
Documentation/fb/framebuffer.txt included in the Linux source
tree.
To record from the framebuffer device /dev/fb0 with
avconv:
avconv -f fbdev -r 10 -i /dev/fb0 out.avi
You can take a single screenshot image with the command:
avconv -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
See also <http://linux-fbdev.sourceforge.net/>, and
fbset(1).
jack
JACK input device.
To enable this input device during configuration you need libjack
installed on your system.
A JACK input device creates one or more
JACK writable clients, one for each audio channel,
with name client_name:input_N, where
client_name is the name provided by the application, and
N is a number which identifies the channel. Each writable
client will send the acquired data to the Libav input device.
Once you have created one or more JACK readable
clients, you need to connect them to one or more
JACK writable clients.
To connect or disconnect JACK clients you can use
the jack_connect and jack_disconnect programs, or
do it through a graphical interface, for example with
qjackctl.
To list the JACK clients and their properties you
can invoke the command jack_lsp.
Follows an example which shows how to capture a
JACK readable client with avconv.
# Create a JACK writable client with name "libav".
$ avconv -f jack -i libav -y out.wav
# Start the sample jack_metro readable client.
$ jack_metro -b 120 -d 0.2 -f 4000
# List the current JACK clients.
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
libav:input_1
metro:120_bpm
# Connect metro to the avconv writable client.
$ jack_connect metro:120_bpm libav:input_1
For more information read: <http://jackaudio.org/>
libdc1394
IIDC1394 input device, based on libdc1394 and libraw1394.
oss
Open Sound System input device.
The filename to provide to the input device is the device node
representing the OSS input device, and is usually
set to /dev/dsp.
For example to grab from /dev/dsp using avconv use
the command:
avconv -f oss -i /dev/dsp /tmp/oss.wav
For more information about OSS see:
<http://manuals.opensound.com/usersguide/dsp.html>
pulse
pulseaudio input device.
To enable this input device during configuration you need
libpulse-simple installed in your system.
The filename to provide to the input device is a source device or
the string "default"
To list the pulse source devices and their properties you can
invoke the command pactl list sources.
avconv -f pulse -i default /tmp/pulse.wav
server AVOption
The syntax is:
-server <server name>
Connects to a specific server.
name AVOption
The syntax is:
-name <application name>
Specify the application name pulse will use when showing active
clients, by default it is "libav"
stream_name AVOption
The syntax is:
-stream_name <stream name>
Specify the stream name pulse will use when showing active
streams, by default it is "record"
sample_rate AVOption
The syntax is:
-sample_rate <samplerate>
Specify the samplerate in Hz, by default 48kHz is used.
channels AVOption
The syntax is:
-channels <N>
Specify the channels in use, by default 2 (stereo) is set.
frame_size AVOption
The syntax is:
-frame_size <bytes>
Specify the number of byte per frame, by default it is set to
1024.
fragment_size AVOption
The syntax is:
-fragment_size <bytes>
Specify the minimal buffering fragment in pulseaudio, it will
affect the audio latency. By default it is unset.
sndio
sndio input device.
To enable this input device during configuration you need
libsndio installed on your system.
The filename to provide to the input device is the device node
representing the sndio input device, and is usually set to
/dev/audio0.
For example to grab from /dev/audio0 using avconv
use the command:
avconv -f sndio -i /dev/audio0 /tmp/oss.wav
video4linux and video4linux2
Video4Linux and Video4Linux2 input video devices.
The name of the device to grab is a file device node, usually
Linux systems tend to automatically create such nodes when the
device (e.g. an USB webcam) is plugged into the
system, and has a name of the kind /dev/videoN, where
N is a number associated to the device.
Video4Linux and Video4Linux2 devices only support a limited set
of widthxheight sizes and framerates. You can check
which are supported for example with the command dov4l for
Video4Linux devices and using -list_formats all for
Video4Linux2 devices.
If the size for the device is set to 0x0, the input device will
try to autodetect the size to use. Only for the video4linux2
device, if the frame rate is set to 0/0 the input device will use
the frame rate value already set in the driver.
Video4Linux support is deprecated since Linux 2.6.30, and will be
dropped in later versions.
Follow some usage examples of the video4linux devices with the
av* tools.
# Grab and show the input of a video4linux device, frame rate is set
# to the default of 25/1.
avplay -s 320x240 -f video4linux /dev/video0
# Grab and show the input of a video4linux2 device, autoadjust size.
avplay -f video4linux2 /dev/video0
# Grab and record the input of a video4linux2 device, autoadjust size,
# frame rate value defaults to 0/0 so it is read from the video4linux2
# driver.
avconv -f video4linux2 -i /dev/video0 out.mpeg
vfwcap
VfW (Video for Windows) capture input device.
The filename passed as input is the capture driver number,
ranging from 0 to 9. You may use "list" as filename to print a
list of drivers. Any other filename will be interpreted as device
number 0.
x11grab
X11 video input device.
This device allows to capture a region of an X11 display.
The filename passed as input has the syntax:
[<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>]
hostname:display_number.screen_number
specifies the X11 display name of the screen to grab from.
hostname can be ommitted, and defaults to "localhost". The
environment variable DISPLAY contains the
default display name.
x_offset and y_offset specify the offsets of the
grabbed area with respect to the top-left border of the X11
screen. They default to 0.
Check the X11 documentation (e.g. man X) for more detailed
information.
Use the dpyinfo program for getting basic information
about the properties of your X11 display (e.g. grep for "name" or
"dimensions").
For example to grab from :0.0 using avconv:
avconv -f x11grab -r 25 -s cif -i :0.0 out.mpg
# Grab at position 10,20.
avconv -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
follow_mouse AVOption
The syntax is:
-follow_mouse centered|<PIXELS>
When it is specified with "centered", the grabbing region follows
the mouse pointer and keeps the pointer at the center of region;
otherwise, the region follows only when the mouse pointer reaches
within PIXELS (greater than zero) to the
edge of region.
For example:
avconv -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg
# Follows only when the mouse pointer reaches within 100 pixels to edge
avconv -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
show_region AVOption
The syntax is:
-show_region 1
If show_region AVOption is specified with 1, then
the grabbing region will be indicated on screen. With this
option, it’s easy to know what is being grabbed if only a portion
of the screen is grabbed.
For example:
avconv -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
# With follow_mouse
avconv -f x11grab -follow_mouse centered -show_region 1 -r 25 -s cif -i :0.0 out.mpg
muxers
Muxers are configured elements in Libav which allow writing
multimedia streams to a particular type of file.
When you configure your Libav build, all the supported muxers are
enabled by default. You can list all available muxers using the
configure option "--list-muxers".
You can disable all the muxers with the configure option
"--disable-muxers" and selectively enable / disable
single muxers with the options
"--enable-muxer=MUXER"
"--disable-muxer=MUXER".
The option "-formats" of the av* tools will display the
list of enabled muxers.
A description of some of the currently available muxers follows.
crc
CRC (Cyclic Redundancy Check) testing format.
This muxer computes and prints the Adler-32 CRC of
all the input audio and video frames. By default audio frames are
converted to signed 16-bit raw audio and video frames to raw
video before computing the CRC .
The output of the muxer consists of a single line of the form:
CRC=0x CRC , where
CRC is a hexadecimal number 0-padded to 8
digits containing the CRC for all the decoded
input frames.
For example to compute the CRC of the input, and
store it in the file out.crc:
avconv -i INPUT -f crc out.crc
You can print the CRC to stdout with the command:
avconv -i INPUT -f crc -
You can select the output format of each frame with avconv
by specifying the audio and video codec and format. For example
to compute the CRC of the input audio converted to
PCM unsigned 8-bit and the input video converted
to MPEG-2 video, use the command:
avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
See also the framecrc muxer.
framecrc
Per-frame CRC (Cyclic Redundancy Check) testing
format.
This muxer computes and prints the Adler-32 CRC
for each decoded audio and video frame. By default audio frames
are converted to signed 16-bit raw audio and video frames to raw
video before computing the CRC .
The output of the muxer consists of a line for each audio and
video frame of the form: stream_index, frame_dts,
frame_size, 0x CRC , where
CRC is a hexadecimal number 0-padded to 8
digits containing the CRC of the decoded frame.
For example to compute the CRC of each decoded
frame in the input, and store it in the file out.crc:
avconv -i INPUT -f framecrc out.crc
You can print the CRC of each decoded frame to
stdout with the command:
avconv -i INPUT -f framecrc -
You can select the output format of each frame with avconv
by specifying the audio and video codec and format. For example,
to compute the CRC of each decoded input audio
frame converted to PCM unsigned 8-bit and of each
decoded input video frame converted to MPEG-2
video, use the command:
avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
See also the crc muxer.
image2
Image file muxer.
The image file muxer writes video frames to image files.
The output filenames are specified by a pattern, which can be
used to produce sequentially numbered series of files. The
pattern may contain the string "%d" or "%0Nd", this string
specifies the position of the characters representing a numbering
in the filenames. If the form "%0Nd" is used, the string
representing the number in each filename is 0-padded to N
digits. The literal character ’%’ can be specified in the pattern
with the string "%%".
If the pattern contains "%d" or "%0Nd", the first filename
of the file list specified will contain the number 1, all the
following numbers will be sequential.
The pattern may contain a suffix which is used to automatically
determine the format of the image files to write.
For example the pattern "img-%03d.bmp" will specify a sequence of
filenames of the form img-001.bmp, img-002.bmp,
..., img-010.bmp, etc. The pattern "img%%-%d.jpg" will
specify a sequence of filenames of the form img%-1.jpg,
img%-2.jpg, ..., img%-10.jpg, etc.
The following example shows how to use avconv for creating
a sequence of files img-001.jpeg, img-002.jpeg,
..., taking one image every second from the input video:
avconv -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
Note that with avconv, if the format is not specified with
the "-f" option and the output filename specifies an
image file format, the image2 muxer is automatically selected, so
the previous command can be written as:
avconv -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
Note also that the pattern must not necessarily contain "%d" or
"%0Nd", for example to create a single image file
img.jpeg from the input video you can employ the command:
avconv -i in.avi -f image2 -frames:v 1 img.jpeg
mpegts
MPEG transport stream muxer.
This muxer implements ISO 13818-1 and part of
ETSI EN 300 468.
The muxer options are:
-mpegts_original_network_id number
Set the original_network_id (default 0x0001). This is unique
identifier of a network in DVB . Its main use is
in the unique identification of a service through the path
Original_Network_ID, Transport_Stream_ID.
-mpegts_transport_stream_id number
Set the transport_stream_id (default 0x0001). This identifies a
transponder in DVB .
-mpegts_service_id number
Set the service_id (default 0x0001) also known as program in
DVB .
-mpegts_pmt_start_pid number
Set the first PID for PMT (default
0x1000, max 0x1f00).
-mpegts_start_pid number
Set the first PID for data packets (default
0x0100, max 0x0f00).
The recognized metadata settings in mpegts muxer are
"service_provider" and "service_name". If they
are not set the default for "service_provider" is
"Libav" and the default for "service_name" is
"Service01".
avconv -i file.mpg -c copy \
-mpegts_original_network_id 0x1122 \
-mpegts_transport_stream_id 0x3344 \
-mpegts_service_id 0x5566 \
-mpegts_pmt_start_pid 0x1500 \
-mpegts_start_pid 0x150 \
-metadata service_provider="Some provider" \
-metadata service_name="Some Channel" \
-y out.ts
null
Null muxer.
This muxer does not generate any output file, it is mainly useful
for testing or benchmarking purposes.
For example to benchmark decoding with avconv you can use
the command:
avconv -benchmark -i INPUT -f null out.null
Note that the above command does not read or write the
out.null file, but specifying the output file is required
by the avconv syntax.
Alternatively you can write the command as:
avconv -benchmark -i INPUT -f null -
matroska
Matroska container muxer.
This muxer implements the matroska and webm container specs.
The recognized metadata settings in this muxer are:
title=title name
Name provided to a single track
language=language name
Specifies the language of the track in the Matroska languages
form
STEREO_MODE=mode
Stereo 3D video layout of two views in a single video track
mono
video is not stereo
left_right
Both views are arranged side by side, Left-eye view is on the
left
bottom_top
Both views are arranged in top-bottom orientation, Left-eye view
is at bottom
top_bottom
Both views are arranged in top-bottom orientation, Left-eye view
is on top
checkerboard_rl
Each view is arranged in a checkerboard interleaved pattern,
Left-eye view being first
checkerboard_lr
Each view is arranged in a checkerboard interleaved pattern,
Right-eye view being first
row_interleaved_rl
Each view is constituted by a row based interleaving, Right-eye
view is first row
row_interleaved_lr
Each view is constituted by a row based interleaving, Left-eye
view is first row
col_interleaved_rl
Both views are arranged in a column based interleaving manner,
Right-eye view is first column
col_interleaved_lr
Both views are arranged in a column based interleaving manner,
Left-eye view is first column
anaglyph_cyan_red
All frames are in anaglyph format viewable through red-cyan
filters
right_left
Both views are arranged side by side, Right-eye view is on the
left
anaglyph_green_magenta
All frames are in anaglyph format viewable through green-magenta
filters
block_lr
Both eyes laced in one Block, Left-eye view is first
block_rl
Both eyes laced in one Block, Right-eye view is first
For example a 3D WebM clip can be created using the following
command line:
avconv -i sample_left_right_clip.mpg -an -c:v libvpx -metadata STEREO_MODE=left_right -y stereo_clip.webm
segment
Basic stream segmenter.
The segmenter muxer outputs streams to a number of separate files
of nearly fixed duration. Output filename pattern can be set in a
fashion similar to image2.
Every segment starts with a video keyframe, if a video stream is
present. The segment muxer works best with a single constant
frame rate video.
Optionally it can generate a flat list of the created segments,
one segment per line.
segment_format format
Override the inner container format, by default it is guessed by
the filename extension.
segment_time t
Set segment duration to t seconds.
segment_list name
Generate also a listfile named name.
segment_list_size size
Overwrite the listfile once it reaches size entries.
avconv -i in.mkv -c copy -map 0 -f segment -list out.list out%03d.nut
protocols
Protocols are configured elements in Libav which allow to access
resources which require the use of a particular protocol.
When you configure your Libav build, all the supported protocols
are enabled by default. You can list all available ones using the
configure option "--list-protocols".
You can disable all the protocols using the configure option
"--disable-protocols", and selectively enable a protocol using
the option "--enable-protocol= PROTOCOL ",
or you can disable a particular protocol using the option
"--disable-protocol= PROTOCOL ".
The option "-protocols" of the av* tools will display the list of
supported protocols.
A description of the currently available protocols follows.
applehttp
Read Apple HTTP Live Streaming compliant segmented
stream as a uniform one. The M3U8 playlists describing the
segments can be remote HTTP resources or local
files, accessed using the standard file protocol.
HTTP is default, specific protocol can be declared
by specifying "+proto" after the applehttp
URI scheme name, where proto is either
"file" or "http".
applehttp://host/path/to/remote/resource.m3u8
applehttp+http://host/path/to/remote/resource.m3u8
applehttp+file://path/to/local/resource.m3u8
concat
Physical concatenation protocol.
Allow to read and seek from many resource in sequence as if they
were a unique resource.
A URL accepted by this protocol has the syntax:
concat:<URL1>|<URL2>|...|<URLN>
where URL1 , URL2 ,
..., URLN are the urls of the resource to
be concatenated, each one possibly specifying a distinct
protocol.
For example to read a sequence of files split1.mpeg,
split2.mpeg, split3.mpeg with avplay use the
command:
avplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
Note that you may need to escape the character "|" which is
special for many shells.
file
File access protocol.
Allow to read from or read to a file.
For example to read from a file input.mpeg with
avconv use the command:
avconv -i file:input.mpeg output.mpeg
The av* tools default to the file protocol, that is a resource
specified with the name " FILE .mpeg" is
interpreted as the URL "file:FILE.mpeg".
gopher
Gopher protocol.
http
HTTP (Hyper Text Transfer Protocol).
mmst
MMS (Microsoft Media Server) protocol over
TCP .
mmsh
MMS (Microsoft Media Server) protocol over
HTTP .
The required syntax is:
mmsh://<server>[:<port>][/<app>][/<playpath>]
md5
MD5 output protocol.
Computes the MD5 hash of the data to be written,
and on close writes this to the designated output or stdout if
none is specified. It can be used to test muxers without writing
an actual file.
Some examples follow.
# Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
avconv -i input.flv -f avi -y md5:output.avi.md5
# Write the MD5 hash of the encoded AVI file to stdout.
avconv -i input.flv -f avi -y md5:
Note that some formats (typically MOV ) require
the output protocol to be seekable, so they will fail with the
MD5 output protocol.
pipe
UNIX pipe access protocol.
Allow to read and write from UNIX pipes.
The accepted syntax is:
pipe:[<number>]
number is the number corresponding to the file descriptor
of the pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr). If
number is not specified, by default the stdout file
descriptor will be used for writing, stdin for reading.
For example to read from stdin with avconv:
cat test.wav | avconv -i pipe:0
# ...this is the same as...
cat test.wav | avconv -i pipe:
For writing to stdout with avconv:
avconv -i test.wav -f avi pipe:1 | cat > test.avi
# ...this is the same as...
avconv -i test.wav -f avi pipe: | cat > test.avi
Note that some formats (typically MOV ), require
the output protocol to be seekable, so they will fail with the
pipe output protocol.
rtmp
Real-Time Messaging Protocol.
The Real-Time Messaging Protocol ( RTMP ) is used
for streaming multimedia content across a TCP/IP
network.
The required syntax is:
rtmp://<server>[:<port>][/<app>][/<playpath>]
The accepted parameters are:
server
The address of the RTMP server.
port
The number of the TCP port to use (by default is
1935).
app
It is the name of the application to access. It usually
corresponds to the path where the application is installed on the
RTMP server (e.g. /ondemand/,
/flash/live/, etc.).
playpath
It is the path or name of the resource to play with reference to
the application specified in app, may be prefixed by
"mp4:".
For example to read with avplay a multimedia resource
named "sample" from the application "vod" from an
RTMP server "myserver":
avplay rtmp://myserver/vod/sample
rtmp, rtmpe, rtmps, rtmpt, rtmpte
Real-Time Messaging Protocol and its variants supported through
librtmp.
Requires the presence of the librtmp headers and library during
configuration. You need to explicitly configure the build with
"--enable-librtmp". If enabled this will replace the native
RTMP protocol.
This protocol provides most client functions and a few server
functions needed to support RTMP ,
RTMP tunneled in HTTP (
RTMPT ), encrypted RTMP (
RTMPE ), RTMP over
SSL/TLS ( RTMPS ) and tunneled
variants of these encrypted types ( RTMPTE ,
RTMPTS ).
The required syntax is:
<rtmp_proto>://<server>[:<port>][/<app>][/<playpath>] <options>
where rtmp_proto is one of the strings "rtmp", "rtmpt",
"rtmpe", "rtmps", "rtmpte", "rtmpts" corresponding to each
RTMP variant, and server, port,
app and playpath have the same meaning as specified
for the RTMP native protocol. options
contains a list of space-separated options of the form
key=val.
See the librtmp manual page (man 3 librtmp) for more information.
For example, to stream a file in real-time to an
RTMP server using avconv:
avconv -re -i myfile -f flv rtmp://myserver/live/mystream
To play the same stream using avplay:
avplay "rtmp://myserver/live/mystream live=1"
rtp
Real-Time Protocol.
rtsp
RTSP is not technically a protocol handler in
libavformat, it is a demuxer and muxer. The demuxer supports both
normal RTSP (with data transferred over
RTP ; this is used by e.g. Apple and Microsoft)
and Real-RTSP (with data transferred over RDT ).
The muxer can be used to send a stream using RTSP
ANNOUNCE to a server supporting it (currently Darwin
Streaming Server and Mischa Spiegelmock’s
RTSP server
("http://github.com/revmischa/rtsp-server")).
The required syntax for a RTSP url is:
rtsp://<hostname>[:<port>]/<path>
The following options (set on the avconv/avplay
command line, or set in code via "AVOption"s or in
"avformat_open_input"), are supported:
Flags for "rtsp_transport":
udp
Use UDP as lower transport protocol.
tcp
Use TCP (interleaving within the
RTSP control channel) as lower transport protocol.
udp_multicast
Use UDP multicast as lower transport protocol.
http
Use HTTP tunneling as lower transport protocol,
which is useful for passing proxies.
Multiple lower transport protocols may be specified, in that case
they are tried one at a time (if the setup of one fails, the next
one is tried). For the muxer, only the "tcp" and
"udp" options are supported.
Flags for "rtsp_flags":
filter_src
Accept packets only from negotiated peer address and port.
When receiving data over UDP , the demuxer tries
to reorder received packets (since they may arrive out of order,
or packets may get lost totally). In order for this to be
enabled, a maximum delay must be specified in the
"max_delay" field of AVFormatContext.
When watching multi-bitrate Real-RTSP streams with avplay,
the streams to display can be chosen with "-vst"
n and "-ast" n for video and audio
respectively, and can be switched on the fly by pressing
"v" and "a".
Example command lines:
To watch a stream over UDP , with a max reordering
delay of 0.5 seconds:
avplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
To watch a stream tunneled over HTTP:
avplay -rtsp_transport http rtsp://server/video.mp4
To send a stream in realtime to a RTSP server, for
others to watch:
avconv -re -i <input> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
sap
Session Announcement Protocol ( RFC 2974). This is
not technically a protocol handler in libavformat, it is a muxer
and demuxer. It is used for signalling of RTP
streams, by announcing the SDP for the streams
regularly on a separate port.
Muxer
The syntax for a SAP url given to the muxer is:
sap://<destination>[:<port>][?<options>]
The RTP packets are sent to destination on
port port, or to port 5004 if no port is specified.
options is a "&"-separated list. The
following options are supported:
announce_addr=address
Specify the destination IP address for sending the
announcements to. If omitted, the announcements are sent to the
commonly used SAP announcement multicast address
224.2.127.254 (sap.mcast.net), or ff0e::2:7ffe if
destination is an IPv6 address.
announce_port=port
Specify the port to send the announcements on, defaults to 9875
if not specified.
ttl=ttl
Specify the time to live value for the announcements and
RTP packets, defaults to 255.
same_port=0|1
If set to 1, send all RTP streams on the same port
pair. If zero (the default), all streams are sent on unique
ports, with each stream on a port 2 numbers higher than the
previous. VLC/Live555 requires this to be set to 1, to be able to
receive the stream. The RTP stack in libavformat
for receiving requires all streams to be sent on unique ports.
Example command lines follow.
To broadcast a stream on the local subnet, for watching in
VLC:
avconv -re -i <input> -f sap sap://224.0.0.255?same_port=1
Similarly, for watching in avplay:
avconv -re -i <input> -f sap sap://224.0.0.255
And for watching in avplay, over IPv6:
avconv -re -i <input> -f sap sap://[ff0e::1:2:3:4]
Demuxer
The syntax for a SAP url given to the demuxer is:
sap://[<address>][:<port>]
address is the multicast address to listen for
announcements on, if omitted, the default 224.2.127.254
(sap.mcast.net) is used. port is the port that is listened
on, 9875 if omitted.
The demuxers listens for announcements on the given address and
port. Once an announcement is received, it tries to receive that
particular stream.
Example command lines follow.
To play back the first stream announced on the normal
SAP multicast address:
avplay sap://
To play back the first stream announced on one the default IPv6
SAP multicast address:
avplay sap://[ff0e::2:7ffe]
tcp
Trasmission Control Protocol.
The required syntax for a TCP url is:
tcp://<hostname>:<port>[?<options>]
listen
Listen for an incoming connection
avconv -i <input> -f <format> tcp://<hostname>:<port>?listen
avplay tcp://<hostname>:<port>
udp
User Datagram Protocol.
The required syntax for a UDP url is:
udp://<hostname>:<port>[?<options>]
options contains a list of &-seperated options of the
form key=val. Follow the list of supported options.
buffer_size=size
set the UDP buffer size in bytes
localport=port
override the local UDP port to bind with
localaddr=addr
Choose the local IP address. This is useful e.g.
if sending multicast and the host has multiple interfaces, where
the user can choose which interface to send on by specifying the
IP address of that interface.
pkt_size=size
set the size in bytes of UDP packets
reuse=1|0
explicitly allow or disallow reusing UDP sockets
ttl=ttl
set the time to live value (for multicast only)
connect=1|0
Initialize the UDP socket with
"connect()". In this case, the destination address can’t
be changed with ff_udp_set_remote_url later. If the destination
address isn’t known at the start, this option can be specified in
ff_udp_set_remote_url, too. This allows finding out the source
address for the packets with getsockname, and makes writes return
with AVERROR ( ECONNREFUSED ) if
"destination unreachable" is received. For receiving, this gives
the benefit of only receiving packets from the specified peer
address/port.
Some usage examples of the udp protocol with avconv
follow.
To stream over UDP to a remote endpoint:
avconv -i <input> -f <format> udp://<hostname>:<port>
To stream in mpegts format over UDP using 188
sized UDP packets, using a large input buffer:
avconv -i <input> -f mpegts udp://<hostname>:<port>?pkt_size=188&buffer_size=65535
To receive over UDP from a remote endpoint:
avconv -i udp://[<multicast-address>]:<port>
see also
avconv ,
avplay and the Libav HTML
documentation
authors
The Libav
developers