|
|
|
@ -50,166 +50,6 @@ specified for the inputs. |
|
|
|
|
|
|
|
|
|
@c man end DESCRIPTION |
|
|
|
|
|
|
|
|
|
@chapter Examples |
|
|
|
|
@c man begin EXAMPLES |
|
|
|
|
|
|
|
|
|
@section Video and Audio grabbing |
|
|
|
|
|
|
|
|
|
FFmpeg can grab video and audio from devices given that you specify the input |
|
|
|
|
format and device. |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Note that you must activate the right video source and channel before |
|
|
|
|
launching FFmpeg with any TV viewer such as xawtv |
|
|
|
|
(@url{http://linux.bytesex.org/xawtv/}) by Gerd Knorr. You also |
|
|
|
|
have to set the audio recording levels correctly with a |
|
|
|
|
standard mixer. |
|
|
|
|
|
|
|
|
|
@section X11 grabbing |
|
|
|
|
|
|
|
|
|
FFmpeg can grab the X11 display. |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
0.0 is display.screen number of your X11 server, same as |
|
|
|
|
the DISPLAY environment variable. |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
0.0 is display.screen number of your X11 server, same as the DISPLAY environment |
|
|
|
|
variable. 10 is the x-offset and 20 the y-offset for the grabbing. |
|
|
|
|
|
|
|
|
|
@section Video and Audio file format conversion |
|
|
|
|
|
|
|
|
|
* FFmpeg can use any supported file format and protocol as input: |
|
|
|
|
|
|
|
|
|
Examples: |
|
|
|
|
|
|
|
|
|
* You can use YUV files as input: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
It will use the files: |
|
|
|
|
@example |
|
|
|
|
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, |
|
|
|
|
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
The Y files use twice the resolution of the U and V files. They are |
|
|
|
|
raw files, without header. They can be generated by all decent video |
|
|
|
|
decoders. You must specify the size of the image with the @option{-s} option |
|
|
|
|
if FFmpeg cannot guess it. |
|
|
|
|
|
|
|
|
|
* You can input from a raw YUV420P file: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/test.yuv /tmp/out.avi |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
test.yuv is a file containing raw YUV planar data. Each frame is composed |
|
|
|
|
of the Y plane followed by the U and V planes at half vertical and |
|
|
|
|
horizontal resolution. |
|
|
|
|
|
|
|
|
|
* You can output to a raw YUV420P file: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i mydivx.avi hugefile.yuv |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
* You can set several input files and output files: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Converts the audio file a.wav and the raw YUV video file a.yuv |
|
|
|
|
to MPEG file a.mpg. |
|
|
|
|
|
|
|
|
|
* You can also do audio and video conversions at the same time: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Converts a.wav to MPEG audio at 22050 Hz sample rate. |
|
|
|
|
|
|
|
|
|
* You can encode to several formats at the same time and define a |
|
|
|
|
mapping from input stream to output streams: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0 |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map |
|
|
|
|
file:index' specifies which input stream is used for each output |
|
|
|
|
stream, in the order of the definition of output streams. |
|
|
|
|
|
|
|
|
|
* You can transcode decrypted VOBs: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
This is a typical DVD ripping example; the input is a VOB file, the |
|
|
|
|
output an AVI file with MPEG-4 video and MP3 audio. Note that in this |
|
|
|
|
command we use B-frames so the MPEG-4 stream is DivX5 compatible, and |
|
|
|
|
GOP size is 300 which means one intra frame every 10 seconds for 29.97fps |
|
|
|
|
input video. Furthermore, the audio stream is MP3-encoded so you need |
|
|
|
|
to enable LAME support by passing @code{--enable-libmp3lame} to configure. |
|
|
|
|
The mapping is particularly useful for DVD transcoding |
|
|
|
|
to get the desired audio language. |
|
|
|
|
|
|
|
|
|
NOTE: To see the supported input formats, use @code{ffmpeg -formats}. |
|
|
|
|
|
|
|
|
|
* You can extract images from a video, or create a video from many images: |
|
|
|
|
|
|
|
|
|
For extracting images from a video: |
|
|
|
|
@example |
|
|
|
|
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
This will extract one video frame per second from the video and will |
|
|
|
|
output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg}, |
|
|
|
|
etc. Images will be rescaled to fit the new WxH values. |
|
|
|
|
|
|
|
|
|
If you want to extract just a limited number of frames, you can use the |
|
|
|
|
above command in combination with the -vframes or -t option, or in |
|
|
|
|
combination with -ss to start extracting from a certain point in time. |
|
|
|
|
|
|
|
|
|
For creating a video from many images: |
|
|
|
|
@example |
|
|
|
|
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
The syntax @code{foo-%03d.jpeg} specifies to use a decimal number |
|
|
|
|
composed of three digits padded with zeroes to express the sequence |
|
|
|
|
number. It is the same syntax supported by the C printf function, but |
|
|
|
|
only formats accepting a normal integer are suitable. |
|
|
|
|
|
|
|
|
|
* You can put many streams of the same type in the output: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
In addition to the first video and audio streams, the resulting |
|
|
|
|
output file @file{test12.avi} will contain the second video |
|
|
|
|
and the second audio stream found in the input streams list. |
|
|
|
|
|
|
|
|
|
The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle} |
|
|
|
|
options have to be specified immediately after the name of the output |
|
|
|
|
file to which you want to add them. |
|
|
|
|
@c man end |
|
|
|
|
|
|
|
|
|
@chapter Invocation |
|
|
|
|
|
|
|
|
|
@section Syntax |
|
|
|
@ -947,6 +787,166 @@ It allows almost lossless encoding. |
|
|
|
|
@end itemize |
|
|
|
|
@c man end TIPS |
|
|
|
|
|
|
|
|
|
@chapter Examples |
|
|
|
|
@c man begin EXAMPLES |
|
|
|
|
|
|
|
|
|
@section Video and Audio grabbing |
|
|
|
|
|
|
|
|
|
FFmpeg can grab video and audio from devices given that you specify the input |
|
|
|
|
format and device. |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Note that you must activate the right video source and channel before |
|
|
|
|
launching FFmpeg with any TV viewer such as xawtv |
|
|
|
|
(@url{http://linux.bytesex.org/xawtv/}) by Gerd Knorr. You also |
|
|
|
|
have to set the audio recording levels correctly with a |
|
|
|
|
standard mixer. |
|
|
|
|
|
|
|
|
|
@section X11 grabbing |
|
|
|
|
|
|
|
|
|
FFmpeg can grab the X11 display. |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
0.0 is display.screen number of your X11 server, same as |
|
|
|
|
the DISPLAY environment variable. |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
0.0 is display.screen number of your X11 server, same as the DISPLAY environment |
|
|
|
|
variable. 10 is the x-offset and 20 the y-offset for the grabbing. |
|
|
|
|
|
|
|
|
|
@section Video and Audio file format conversion |
|
|
|
|
|
|
|
|
|
* FFmpeg can use any supported file format and protocol as input: |
|
|
|
|
|
|
|
|
|
Examples: |
|
|
|
|
|
|
|
|
|
* You can use YUV files as input: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
It will use the files: |
|
|
|
|
@example |
|
|
|
|
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, |
|
|
|
|
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
The Y files use twice the resolution of the U and V files. They are |
|
|
|
|
raw files, without header. They can be generated by all decent video |
|
|
|
|
decoders. You must specify the size of the image with the @option{-s} option |
|
|
|
|
if FFmpeg cannot guess it. |
|
|
|
|
|
|
|
|
|
* You can input from a raw YUV420P file: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/test.yuv /tmp/out.avi |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
test.yuv is a file containing raw YUV planar data. Each frame is composed |
|
|
|
|
of the Y plane followed by the U and V planes at half vertical and |
|
|
|
|
horizontal resolution. |
|
|
|
|
|
|
|
|
|
* You can output to a raw YUV420P file: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i mydivx.avi hugefile.yuv |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
* You can set several input files and output files: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Converts the audio file a.wav and the raw YUV video file a.yuv |
|
|
|
|
to MPEG file a.mpg. |
|
|
|
|
|
|
|
|
|
* You can also do audio and video conversions at the same time: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Converts a.wav to MPEG audio at 22050 Hz sample rate. |
|
|
|
|
|
|
|
|
|
* You can encode to several formats at the same time and define a |
|
|
|
|
mapping from input stream to output streams: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0 |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map |
|
|
|
|
file:index' specifies which input stream is used for each output |
|
|
|
|
stream, in the order of the definition of output streams. |
|
|
|
|
|
|
|
|
|
* You can transcode decrypted VOBs: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
This is a typical DVD ripping example; the input is a VOB file, the |
|
|
|
|
output an AVI file with MPEG-4 video and MP3 audio. Note that in this |
|
|
|
|
command we use B-frames so the MPEG-4 stream is DivX5 compatible, and |
|
|
|
|
GOP size is 300 which means one intra frame every 10 seconds for 29.97fps |
|
|
|
|
input video. Furthermore, the audio stream is MP3-encoded so you need |
|
|
|
|
to enable LAME support by passing @code{--enable-libmp3lame} to configure. |
|
|
|
|
The mapping is particularly useful for DVD transcoding |
|
|
|
|
to get the desired audio language. |
|
|
|
|
|
|
|
|
|
NOTE: To see the supported input formats, use @code{ffmpeg -formats}. |
|
|
|
|
|
|
|
|
|
* You can extract images from a video, or create a video from many images: |
|
|
|
|
|
|
|
|
|
For extracting images from a video: |
|
|
|
|
@example |
|
|
|
|
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
This will extract one video frame per second from the video and will |
|
|
|
|
output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg}, |
|
|
|
|
etc. Images will be rescaled to fit the new WxH values. |
|
|
|
|
|
|
|
|
|
If you want to extract just a limited number of frames, you can use the |
|
|
|
|
above command in combination with the -vframes or -t option, or in |
|
|
|
|
combination with -ss to start extracting from a certain point in time. |
|
|
|
|
|
|
|
|
|
For creating a video from many images: |
|
|
|
|
@example |
|
|
|
|
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
The syntax @code{foo-%03d.jpeg} specifies to use a decimal number |
|
|
|
|
composed of three digits padded with zeroes to express the sequence |
|
|
|
|
number. It is the same syntax supported by the C printf function, but |
|
|
|
|
only formats accepting a normal integer are suitable. |
|
|
|
|
|
|
|
|
|
* You can put many streams of the same type in the output: |
|
|
|
|
|
|
|
|
|
@example |
|
|
|
|
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio |
|
|
|
|
@end example |
|
|
|
|
|
|
|
|
|
In addition to the first video and audio streams, the resulting |
|
|
|
|
output file @file{test12.avi} will contain the second video |
|
|
|
|
and the second audio stream found in the input streams list. |
|
|
|
|
|
|
|
|
|
The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle} |
|
|
|
|
options have to be specified immediately after the name of the output |
|
|
|
|
file to which you want to add them. |
|
|
|
|
@c man end EXAMPLES |
|
|
|
|
|
|
|
|
|
@ignore |
|
|
|
|
|
|
|
|
|
@setfilename ffmpeg |
|
|
|
|