123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- @chapter Bitstream Filters
- @c man begin 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 @code{--list-bsfs}.
- You can disable all the bitstream filters using the configure option
- @code{--disable-bsfs}, and selectively enable any bitstream filter using
- the option @code{--enable-bsf=BSF}, or you can disable a particular
- bitstream filter using the option @code{--disable-bsf=BSF}.
- The option @code{-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.
- @section 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.
- @section chomp
- Remove zero padding at the end of a packet.
- @section dump_extra
- Add extradata to the beginning of the filtered packets.
- The additional argument specifies which packets should be filtered.
- It accepts the values:
- @table @samp
- @item a
- add extradata to all key packets, but only if @var{local_header} is
- set in the @option{flags2} codec context field
- @item k
- add extradata to all key packets
- @item e
- add extradata to all packets
- @end table
- If not specified it is assumed @samp{k}.
- For example the following @command{ffmpeg} command forces a global
- header (thus disabling individual packet headers) in the H.264 packets
- generated by the @code{libx264} encoder, but corrects them by adding
- the header stored in extradata to the key packets:
- @example
- ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
- @end example
- @section 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 @command{ffmpeg}, you can use the command:
- @example
- ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
- @end example
- @section imxdump
- Modifies the bitstream to fit in MOV and to be usable by the Final Cut
- Pro decoder. This filter only applies to the mpeg2video codec, and is
- likely not needed for Final Cut Pro 7 and newer with the appropriate
- @option{-tag:v}.
- For example, to remux 30 MB/sec NTSC IMX to MOV:
- @example
- ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
- @end example
- @section 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
- @example
- ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
- @end example
- Unfortunately, these chunks are incomplete JPEG images, because
- they lack the DHT segment required for decoding. Quoting from
- @url{http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml}:
- 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.
- @example
- 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
- @end example
- @section mjpega_dump_header
- @section movsub
- @section mp3_header_decompress
- @section noise
- Damages the contents of packets without damaging the container. Can be
- used for fuzzing or testing error resilience/concealment.
- @example
- ffmpeg -i INPUT -c copy -bsf noise output.mkv
- @end example
- @section remove_extra
- @c man end BITSTREAM FILTERS
|