|
|
|
@@ -80,7 +80,7 @@ The format option may be needed for raw input files. |
|
|
|
The transcoding process in @command{ffmpeg} for each output can be described by |
|
|
|
the following diagram: |
|
|
|
|
|
|
|
@example |
|
|
|
@verbatim |
|
|
|
_______ ______________ |
|
|
|
| | | | |
|
|
|
| input | demuxer | encoded data | decoder |
|
|
|
@@ -99,7 +99,7 @@ the following diagram: |
|
|
|
|________| |______________| |
|
|
|
|
|
|
|
|
|
|
|
@end example |
|
|
|
@end verbatim |
|
|
|
|
|
|
|
@command{ffmpeg} calls the libavformat library (containing demuxers) to read |
|
|
|
input files and get packets containing encoded data from them. When there are |
|
|
|
@@ -124,7 +124,7 @@ Simple filtergraphs are those that have exactly one input and output, both of |
|
|
|
the same type. In the above diagram they can be represented by simply inserting |
|
|
|
an additional step between decoding and encoding: |
|
|
|
|
|
|
|
@example |
|
|
|
@verbatim |
|
|
|
_________ ______________ |
|
|
|
| | | | |
|
|
|
| decoded | | encoded data | |
|
|
|
@@ -136,19 +136,19 @@ an additional step between decoding and encoding: |
|
|
|
| frames | |
|
|
|
|__________| |
|
|
|
|
|
|
|
@end example |
|
|
|
@end verbatim |
|
|
|
|
|
|
|
Simple filtergraphs are configured with the per-stream @option{-filter} option |
|
|
|
(with @option{-vf} and @option{-af} aliases for video and audio respectively). |
|
|
|
A simple filtergraph for video can look for example like this: |
|
|
|
|
|
|
|
@example |
|
|
|
@verbatim |
|
|
|
_______ _____________ _______ ________ |
|
|
|
| | | | | | | | |
|
|
|
| input | ---> | deinterlace | ---> | scale | ---> | output | |
|
|
|
|_______| |_____________| |_______| |________| |
|
|
|
|
|
|
|
@end example |
|
|
|
@end verbatim |
|
|
|
|
|
|
|
Note that some filters change frame properties but not frame contents. E.g. the |
|
|
|
@code{fps} filter in the example above changes number of frames, but does not |
|
|
|
@@ -161,7 +161,7 @@ processing chain applied to one stream. This is the case, for example, when the |
|
|
|
more than one input and/or output, or when output stream type is different from |
|
|
|
input. They can be represented with the following diagram: |
|
|
|
|
|
|
|
@example |
|
|
|
@verbatim |
|
|
|
_________ |
|
|
|
| | |
|
|
|
| input 0 |\ __________ |
|
|
|
@@ -179,7 +179,7 @@ input. They can be represented with the following diagram: |
|
|
|
| input 2 |/ |
|
|
|
|_________| |
|
|
|
|
|
|
|
@end example |
|
|
|
@end verbatim |
|
|
|
|
|
|
|
Complex filtergraphs are configured with the @option{-filter_complex} option. |
|
|
|
Note that this option is global, since a complex filtergraph, by its nature, |
|
|
|
@@ -198,14 +198,14 @@ step for the specified stream, so it does only demuxing and muxing. It is useful |
|
|
|
for changing the container format or modifying container-level metadata. The |
|
|
|
diagram above will, in this case, simplify to this: |
|
|
|
|
|
|
|
@example |
|
|
|
@verbatim |
|
|
|
_______ ______________ ________ |
|
|
|
| | | | | | |
|
|
|
| input | demuxer | encoded data | muxer | output | |
|
|
|
| file | ---------> | packets | -------> | file | |
|
|
|
|_______| |______________| |________| |
|
|
|
|
|
|
|
@end example |
|
|
|
@end verbatim |
|
|
|
|
|
|
|
Since there is no decoding or encoding, it is very fast and there is no quality |
|
|
|
loss. However, it might not work in some cases because of many factors. Applying |
|
|
|
|