forked from KolibriOS/kolibrios
754f9336f0
git-svn-id: svn://kolibrios.org@4349 a494cfbc-eb01-0410-851d-a64ba20cac60
201 lines
4.5 KiB
Plaintext
201 lines
4.5 KiB
Plaintext
=head1 NAME
|
|
|
|
ffmpeg-bitstream-filters - FFmpeg bitstream filters
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
|
This document describes the bitstream filters provided by the
|
|
libavcodec library.
|
|
|
|
A bitstream filter operates on the encoded stream data, and performs
|
|
bitstream level modifications without performing decoding.
|
|
|
|
|
|
|
|
=head1 BITSTREAM FILTERS
|
|
|
|
|
|
When you configure your FFmpeg build, all the supported bitstream
|
|
filters are enabled by default. You can list all available ones using
|
|
the configure option C<--list-bsfs>.
|
|
|
|
You can disable all the bitstream filters using the configure option
|
|
C<--disable-bsfs>, and selectively enable any bitstream filter using
|
|
the option C<--enable-bsf=BSF>, or you can disable a particular
|
|
bitstream filter using the option C<--disable-bsf=BSF>.
|
|
|
|
The option C<-bsfs> of the ff* tools will display the list of
|
|
all the supported bitstream filters included in your build.
|
|
|
|
Below is a description of the currently available bitstream filters.
|
|
|
|
|
|
=head2 aac_adtstoasc
|
|
|
|
|
|
Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
|
|
bitstream filter.
|
|
|
|
This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
|
|
ADTS header and removes the ADTS header.
|
|
|
|
This is required for example when copying an AAC stream from a raw
|
|
ADTS AAC container to a FLV or a MOV/MP4 file.
|
|
|
|
|
|
=head2 chomp
|
|
|
|
|
|
Remove zero padding at the end of a packet.
|
|
|
|
|
|
=head2 dump_extra
|
|
|
|
|
|
Add extradata to the beginning of the filtered packets.
|
|
|
|
The additional argument specifies which packets should be filtered.
|
|
It accepts the values:
|
|
|
|
=over 4
|
|
|
|
|
|
=item B<a>
|
|
|
|
add extradata to all key packets, but only if I<local_header> is
|
|
set in the B<flags2> codec context field
|
|
|
|
|
|
=item B<k>
|
|
|
|
add extradata to all key packets
|
|
|
|
|
|
=item B<e>
|
|
|
|
add extradata to all packets
|
|
|
|
=back
|
|
|
|
|
|
If not specified it is assumed B<k>.
|
|
|
|
For example the following B<ffmpeg> command forces a global
|
|
header (thus disabling individual packet headers) in the H.264 packets
|
|
generated by the C<libx264> encoder, but corrects them by adding
|
|
the header stored in extradata to the key packets:
|
|
|
|
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
|
|
|
|
|
|
|
=head2 h264_mp4toannexb
|
|
|
|
|
|
Convert an H.264 bitstream from length prefixed mode to start code
|
|
prefixed mode (as defined in the Annex B of the ITU-T H.264
|
|
specification).
|
|
|
|
This is required by some streaming formats, typically the MPEG-2
|
|
transport stream format ("mpegts").
|
|
|
|
For example to remux an MP4 file containing an H.264 stream to mpegts
|
|
format with B<ffmpeg>, you can use the command:
|
|
|
|
|
|
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
|
|
|
|
|
|
|
|
=head2 imx_dump_header
|
|
|
|
|
|
|
|
=head2 mjpeg2jpeg
|
|
|
|
|
|
Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
|
|
|
|
MJPEG is a video codec wherein each video frame is essentially a
|
|
JPEG image. The individual frames can be extracted without loss,
|
|
e.g. by
|
|
|
|
|
|
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
|
|
|
|
|
|
Unfortunately, these chunks are incomplete JPEG images, because
|
|
they lack the DHT segment required for decoding. Quoting from
|
|
E<lt>B<http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml>E<gt>:
|
|
|
|
Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
|
|
commented that "MJPEG, or at least the MJPEG in AVIs having the
|
|
MJPG fourcc, is restricted JPEG with a fixed -- and *omitted* --
|
|
Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
|
|
and it must use basic Huffman encoding, not arithmetic or
|
|
progressive. . . . You can indeed extract the MJPEG frames and
|
|
decode them with a regular JPEG decoder, but you have to prepend
|
|
the DHT segment to them, or else the decoder won't have any idea
|
|
how to decompress the data. The exact table necessary is given in
|
|
the OpenDML spec."
|
|
|
|
This bitstream filter patches the header of frames extracted from an MJPEG
|
|
stream (carrying the AVI1 header ID and lacking a DHT segment) to
|
|
produce fully qualified JPEG images.
|
|
|
|
|
|
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
|
|
exiftran -i -9 frame*.jpg
|
|
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
|
|
|
|
|
|
|
|
=head2 mjpega_dump_header
|
|
|
|
|
|
|
|
=head2 movsub
|
|
|
|
|
|
|
|
=head2 mp3_header_compress
|
|
|
|
|
|
|
|
=head2 mp3_header_decompress
|
|
|
|
|
|
|
|
=head2 noise
|
|
|
|
|
|
|
|
=head2 remove_extra
|
|
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
|
|
|
ffmpeg(1), ffplay(1), ffprobe(1), ffserver(1), libavcodec(3)
|
|
|
|
|
|
=head1 AUTHORS
|
|
|
|
|
|
The FFmpeg developers.
|
|
|
|
For details about the authorship, see the Git history of the project
|
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
|
B<git log> in the FFmpeg source directory, or browsing the
|
|
online repository at E<lt>B<http://source.ffmpeg.org>E<gt>.
|
|
|
|
Maintainers for the specific components are listed in the file
|
|
F<MAINTAINERS> in the source code tree.
|
|
|
|
|
|
|