| =encoding utf8 | |
| =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. | |
| The ff* tools have a -bsf option applied per stream, taking a | |
| comma-separated list of filters, whose parameters follow the filter | |
| name after a '='. | |
| ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT | |
| Below is a description of the currently available bitstream filters, | |
| with their parameters, if any. | |
| =head2 aac_adtstoasc | |
| Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration | |
| bitstream. | |
| This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4 | |
| ADTS header and removes the ADTS header. | |
| This filter is required for example when copying an AAC stream from a | |
| raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or | |
| to MOV/MP4 files and related formats such as 3GP or M4A. Please note | |
| that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats. | |
| =head2 av1_metadata | |
| Modify metadata embedded in an AV1 stream. | |
| =over 4 | |
| =item B<td> | |
| Insert or remove temporal delimiter OBUs in all temporal units of the | |
| stream. | |
| =over 4 | |
| =item B<insert> | |
| Insert a TD at the beginning of every TU which does not already have one. | |
| =item B<remove> | |
| Remove the TD from the beginning of every TU which has one. | |
| =back | |
| =item B<color_primaries> | |
| =item B<transfer_characteristics> | |
| =item B<matrix_coefficients> | |
| Set the color description fields in the stream (see AV1 section 6.4.2). | |
| =item B<color_range> | |
| Set the color range in the stream (see AV1 section 6.4.2; note that | |
| this cannot be set for streams using BT.709 primaries, sRGB transfer | |
| characteristic and identity (RGB) matrix coefficients). | |
| =over 4 | |
| =item B<tv> | |
| Limited range. | |
| =item B<pc> | |
| Full range. | |
| =back | |
| =item B<chroma_sample_position> | |
| Set the chroma sample location in the stream (see AV1 section 6.4.2). | |
| This can only be set for 4:2:0 streams. | |
| =over 4 | |
| =item B<vertical> | |
| Left position (matching the default in MPEG-2 and H.264). | |
| =item B<colocated> | |
| Top-left position. | |
| =back | |
| =item B<tick_rate> | |
| Set the tick rate (I<time_scale / num_units_in_display_tick>) in | |
| the timing info in the sequence header. | |
| =item B<num_ticks_per_picture> | |
| Set the number of ticks in each picture, to indicate that the stream | |
| has a fixed framerate. Ignored if B<tick_rate> is not also set. | |
| =item B<delete_padding> | |
| Deletes Padding OBUs. | |
| =back | |
| =head2 chomp | |
| Remove zero padding at the end of a packet. | |
| =head2 dca_core | |
| Extract the core from a DCA/DTS stream, dropping extensions such as | |
| DTS-HD. | |
| =head2 dump_extra | |
| Add extradata to the beginning of the filtered packets except when | |
| said packets already exactly begin with the extradata that is intended | |
| to be added. | |
| =over 4 | |
| =item B<freq> | |
| The additional argument specifies which packets should be filtered. | |
| It accepts the values: | |
| =over 4 | |
| =item B<k> | |
| =item B<keyframe> | |
| add extradata to all key packets | |
| =item B<e> | |
| =item B<all> | |
| add extradata to all packets | |
| =back | |
| =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 dv_error_marker | |
| Blocks in DV which are marked as damaged are replaced by blocks of the specified color. | |
| =over 4 | |
| =item B<color> | |
| The color to replace damaged blocks by | |
| =item B<sta> | |
| A 16 bit mask which specifies which of the 16 possible error status values are | |
| to be replaced by colored blocks. 0xFFFE is the default which replaces all non 0 | |
| error status values. | |
| =over 4 | |
| =item B<ok> | |
| No error, no concealment | |
| =item B<err> | |
| Error, No concealment | |
| =item B<res> | |
| Reserved | |
| =item B<notok> | |
| Error or concealment | |
| =item B<notres> | |
| Not reserved | |
| =item B<Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru> | |
| The specific error status code | |
| =back | |
| see page 44-46 or section 5.5 of | |
| E<lt>B<http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf>E<gt> | |
| =back | |
| =head2 eac3_core | |
| Extract the core from a E-AC-3 stream, dropping extra channels. | |
| =head2 extract_extradata | |
| Extract the in-band extradata. | |
| Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers, | |
| or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part | |
| of the bitstream containing the coded frames) or "out of band" (e.g. on the | |
| container level). This latter form is called "extradata" in FFmpeg terminology. | |
| This bitstream filter detects the in-band headers and makes them available as | |
| extradata. | |
| =over 4 | |
| =item B<remove> | |
| When this option is enabled, the long-term headers are removed from the | |
| bitstream after extraction. | |
| =back | |
| =head2 filter_units | |
| Remove units with types in or not in a given set from the stream. | |
| =over 4 | |
| =item B<pass_types> | |
| List of unit types or ranges of unit types to pass through while removing | |
| all others. This is specified as a '|'-separated list of unit type values | |
| or ranges of values with '-'. | |
| =item B<remove_types> | |
| Identical to B<pass_types>, except the units in the given set | |
| removed and all others passed through. | |
| =back | |
| Extradata is unchanged by this transformation, but note that if the stream | |
| contains inline parameter sets then the output may be unusable if they are | |
| removed. | |
| For example, to remove all non-VCL NAL units from an H.264 stream: | |
| ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT | |
| To remove all AUDs, SEI and filler from an H.265 stream: | |
| ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT | |
| =head2 hapqa_extract | |
| Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file. | |
| =over 4 | |
| =item B<texture> | |
| Specifies the texture to keep. | |
| =over 4 | |
| =item B<color> | |
| =item B<alpha> | |
| =back | |
| =back | |
| Convert HAPQA to HAPQ | |
| ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov | |
| Convert HAPQA to HAPAlphaOnly | |
| ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov | |
| =head2 h264_metadata | |
| Modify metadata embedded in an H.264 stream. | |
| =over 4 | |
| =item B<aud> | |
| Insert or remove AUD NAL units in all access units of the stream. | |
| =over 4 | |
| =item B<pass> | |
| =item B<insert> | |
| =item B<remove> | |
| =back | |
| Default is pass. | |
| =item B<sample_aspect_ratio> | |
| Set the sample aspect ratio of the stream in the VUI parameters. | |
| See H.264 table E-1. | |
| =item B<overscan_appropriate_flag> | |
| Set whether the stream is suitable for display using overscan | |
| or not (see H.264 section E.2.1). | |
| =item B<video_format> | |
| =item B<video_full_range_flag> | |
| Set the video format in the stream (see H.264 section E.2.1 and | |
| table E-2). | |
| =item B<colour_primaries> | |
| =item B<transfer_characteristics> | |
| =item B<matrix_coefficients> | |
| Set the colour description in the stream (see H.264 section E.2.1 | |
| and tables E-3, E-4 and E-5). | |
| =item B<chroma_sample_loc_type> | |
| Set the chroma sample location in the stream (see H.264 section | |
| E.2.1 and figure E-1). | |
| =item B<tick_rate> | |
| Set the tick rate (time_scale / num_units_in_tick) in the VUI | |
| parameters. This is the smallest time unit representable in the | |
| stream, and in many cases represents the field rate of the stream | |
| (double the frame rate). | |
| =item B<fixed_frame_rate_flag> | |
| Set whether the stream has fixed framerate - typically this indicates | |
| that the framerate is exactly half the tick rate, but the exact | |
| meaning is dependent on interlacing and the picture structure (see | |
| H.264 section E.2.1 and table E-6). | |
| =item B<zero_new_constraint_set_flags> | |
| Zero constraint_set4_flag and constraint_set5_flag in the SPS. These | |
| bits were reserved in a previous version of the H.264 spec, and thus | |
| some hardware decoders require these to be zero. The result of zeroing | |
| this is still a valid bitstream. | |
| =item B<crop_left> | |
| =item B<crop_right> | |
| =item B<crop_top> | |
| =item B<crop_bottom> | |
| Set the frame cropping offsets in the SPS. These values will replace | |
| the current ones if the stream is already cropped. | |
| These fields are set in pixels. Note that some sizes may not be | |
| representable if the chroma is subsampled or the stream is interlaced | |
| (see H.264 section 7.4.2.1.1). | |
| =item B<sei_user_data> | |
| Insert a string as SEI unregistered user data. The argument must | |
| be of the form I<UUID+string>, where the UUID is as hex digits | |
| possibly separated by hyphens, and the string can be anything. | |
| For example, B<086f3693-b7b3-4f2c-9653-21492feee5b8+hello> will | |
| insert the string ``hello'' associated with the given UUID. | |
| =item B<delete_filler> | |
| Deletes both filler NAL units and filler SEI messages. | |
| =item B<display_orientation> | |
| Insert, extract or remove Display orientation SEI messages. | |
| See H.264 section D.1.27 and D.2.27 for syntax and semantics. | |
| =over 4 | |
| =item B<pass> | |
| =item B<insert> | |
| =item B<remove> | |
| =item B<extract> | |
| =back | |
| Default is pass. | |
| Insert mode works in conjunction with C<rotate> and C<flip> options. | |
| Any pre-existing Display orientation messages will be removed in insert or remove mode. | |
| Extract mode attaches the display matrix to the packet as side data. | |
| =item B<rotate> | |
| Set rotation in display orientation SEI (anticlockwise angle in degrees). | |
| Range is -360 to +360. Default is NaN. | |
| =item B<flip> | |
| Set flip in display orientation SEI. | |
| =over 4 | |
| =item B<horizontal> | |
| =item B<vertical> | |
| =back | |
| Default is unset. | |
| =item B<level> | |
| Set the level in the SPS. Refer to H.264 section A.3 and tables A-1 | |
| to A-5. | |
| The argument must be the name of a level (for example, B<4.2>), a | |
| level_idc value (for example, B<42>), or the special name B<auto> | |
| indicating that the filter should attempt to guess the level from the | |
| input stream properties. | |
| =back | |
| =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 (muxer C<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 | |
| Please note that this filter is auto-inserted for MPEG-TS (muxer | |
| C<mpegts>) and raw H.264 (muxer C<h264>) output formats. | |
| =head2 h264_redundant_pps | |
| This applies a specific fixup to some Blu-ray streams which contain | |
| redundant PPSs modifying irrelevant parameters of the stream which | |
| confuse other transformations which require correct extradata. | |
| =head2 hevc_metadata | |
| Modify metadata embedded in an HEVC stream. | |
| =over 4 | |
| =item B<aud> | |
| Insert or remove AUD NAL units in all access units of the stream. | |
| =over 4 | |
| =item B<insert> | |
| =item B<remove> | |
| =back | |
| =item B<sample_aspect_ratio> | |
| Set the sample aspect ratio in the stream in the VUI parameters. | |
| =item B<video_format> | |
| =item B<video_full_range_flag> | |
| Set the video format in the stream (see H.265 section E.3.1 and | |
| table E.2). | |
| =item B<colour_primaries> | |
| =item B<transfer_characteristics> | |
| =item B<matrix_coefficients> | |
| Set the colour description in the stream (see H.265 section E.3.1 | |
| and tables E.3, E.4 and E.5). | |
| =item B<chroma_sample_loc_type> | |
| Set the chroma sample location in the stream (see H.265 section | |
| E.3.1 and figure E.1). | |
| =item B<tick_rate> | |
| Set the tick rate in the VPS and VUI parameters (time_scale / | |
| num_units_in_tick). Combined with B<num_ticks_poc_diff_one>, this can | |
| set a constant framerate in the stream. Note that it is likely to be | |
| overridden by container parameters when the stream is in a container. | |
| =item B<num_ticks_poc_diff_one> | |
| Set poc_proportional_to_timing_flag in VPS and VUI and use this value | |
| to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and | |
| E.3.1). Ignored if B<tick_rate> is not also set. | |
| =item B<crop_left> | |
| =item B<crop_right> | |
| =item B<crop_top> | |
| =item B<crop_bottom> | |
| Set the conformance window cropping offsets in the SPS. These values | |
| will replace the current ones if the stream is already cropped. | |
| These fields are set in pixels. Note that some sizes may not be | |
| representable if the chroma is subsampled (H.265 section 7.4.3.2.1). | |
| =item B<level> | |
| Set the level in the VPS and SPS. See H.265 section A.4 and tables | |
| A.6 and A.7. | |
| The argument must be the name of a level (for example, B<5.1>), a | |
| I<general_level_idc> value (for example, B<153> for level 5.1), | |
| or the special name B<auto> indicating that the filter should | |
| attempt to guess the level from the input stream properties. | |
| =back | |
| =head2 hevc_mp4toannexb | |
| Convert an HEVC/H.265 bitstream from length prefixed mode to start code | |
| prefixed mode (as defined in the Annex B of the ITU-T H.265 | |
| specification). | |
| This is required by some streaming formats, typically the MPEG-2 | |
| transport stream format (muxer C<mpegts>). | |
| For example to remux an MP4 file containing an HEVC stream to mpegts | |
| format with B<ffmpeg>, you can use the command: | |
| ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts | |
| Please note that this filter is auto-inserted for MPEG-TS (muxer | |
| C<mpegts>) and raw HEVC/H.265 (muxer C<h265> or | |
| C<hevc>) output formats. | |
| =head2 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 | |
| B<-tag:v>. | |
| For example, to remux 30 MB/sec NTSC IMX to MOV: | |
| ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov | |
| =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 mjpegadump | |
| Add an MJPEG A header to the bitstream, to enable decoding by | |
| Quicktime. | |
| =head2 mov2textsub | |
| Extract a representable text file from MOV subtitles, stripping the | |
| metadata header from each subtitle packet. | |
| See also the B<text2movsub> filter. | |
| =head2 mp3decomp | |
| Decompress non-standard compressed MP3 audio headers. | |
| =head2 mpeg2_metadata | |
| Modify metadata embedded in an MPEG-2 stream. | |
| =over 4 | |
| =item B<display_aspect_ratio> | |
| Set the display aspect ratio in the stream. | |
| The following fixed values are supported: | |
| =over 4 | |
| =item B<4/3> | |
| =item B<16/9> | |
| =item B<221/100> | |
| =back | |
| Any other value will result in square pixels being signalled instead | |
| (see H.262 section 6.3.3 and table 6-3). | |
| =item B<frame_rate> | |
| Set the frame rate in the stream. This is constructed from a table | |
| of known values combined with a small multiplier and divisor - if | |
| the supplied value is not exactly representable, the nearest | |
| representable value will be used instead (see H.262 section 6.3.3 | |
| and table 6-4). | |
| =item B<video_format> | |
| Set the video format in the stream (see H.262 section 6.3.6 and | |
| table 6-6). | |
| =item B<colour_primaries> | |
| =item B<transfer_characteristics> | |
| =item B<matrix_coefficients> | |
| Set the colour description in the stream (see H.262 section 6.3.6 | |
| and tables 6-7, 6-8 and 6-9). | |
| =back | |
| =head2 mpeg4_unpack_bframes | |
| Unpack DivX-style packed B-frames. | |
| DivX-style packed B-frames are not valid MPEG-4 and were only a | |
| workaround for the broken Video for Windows subsystem. | |
| They use more space, can cause minor AV sync issues, require more | |
| CPU power to decode (unless the player has some decoded picture queue | |
| to compensate the 2,0,2,0 frame per packet style) and cause | |
| trouble if copied into a standard container like mp4 or mpeg-ps/ts, | |
| because MPEG-4 decoders may not be able to decode them, since they are | |
| not valid MPEG-4. | |
| For example to fix an AVI file containing an MPEG-4 stream with | |
| DivX-style packed B-frames using B<ffmpeg>, you can use the command: | |
| ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi | |
| =head2 noise | |
| Damages the contents of packets or simply drops them without damaging the | |
| container. Can be used for fuzzing or testing error resilience/concealment. | |
| Parameters: | |
| =over 4 | |
| =item B<amount> | |
| Accepts an expression whose evaluation per-packet determines how often bytes in that | |
| packet will be modified. A value below 0 will result in a variable frequency. | |
| Default is 0 which results in no modification. However, if neither amount nor drop is specified, | |
| amount will be set to I<-1>. See below for accepted variables. | |
| =item B<drop> | |
| Accepts an expression evaluated per-packet whose value determines whether that packet is dropped. | |
| Evaluation to a positive value results in the packet being dropped. Evaluation to a negative | |
| value results in a variable chance of it being dropped, roughly inverse in proportion to the magnitude | |
| of the value. Default is 0 which results in no drops. See below for accepted variables. | |
| =item B<dropamount> | |
| Accepts a non-negative integer, which assigns a variable chance of it being dropped, roughly inverse | |
| in proportion to the value. Default is 0 which results in no drops. This option is kept for backwards | |
| compatibility and is equivalent to setting drop to a negative value with the same magnitude | |
| i.e. C<dropamount=4> is the same as C<drop=-4>. Ignored if drop is also specified. | |
| =back | |
| Both C<amount> and C<drop> accept expressions containing the following variables: | |
| =over 4 | |
| =item B<n> | |
| The index of the packet, starting from zero. | |
| =item B<tb> | |
| The timebase for packet timestamps. | |
| =item B<pts> | |
| Packet presentation timestamp. | |
| =item B<dts> | |
| Packet decoding timestamp. | |
| =item B<nopts> | |
| Constant representing AV_NOPTS_VALUE. | |
| =item B<startpts> | |
| First non-AV_NOPTS_VALUE PTS seen in the stream. | |
| =item B<startdts> | |
| First non-AV_NOPTS_VALUE DTS seen in the stream. | |
| =item B<duration> | |
| =item B<d> | |
| Packet duration, in timebase units. | |
| =item B<pos> | |
| Packet position in input; may be -1 when unknown or not set. | |
| =item B<size> | |
| Packet size, in bytes. | |
| =item B<key> | |
| Whether packet is marked as a keyframe. | |
| =item B<state> | |
| A pseudo random integer, primarily derived from the content of packet payload. | |
| =back | |
| =head3 Examples | |
| Apply modification to every byte but don't drop any packets. | |
| ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv | |
| Drop every video packet not marked as a keyframe after timestamp 30s but do not | |
| modify any of the remaining packets. | |
| ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv | |
| Drop one second of audio every 10 seconds and add some random noise to the rest. | |
| ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv | |
| =head2 null | |
| This bitstream filter passes the packets through unchanged. | |
| =head2 pcm_rechunk | |
| Repacketize PCM audio to a fixed number of samples per packet or a fixed packet | |
| rate per second. This is similar to the B<asetnsamples audio | |
| filter> but works on audio packets instead of audio frames. | |
| =over 4 | |
| =item B<nb_out_samples, n> | |
| Set the number of samples per each output audio packet. The number is intended | |
| as the number of samples I<per each channel>. Default value is 1024. | |
| =item B<pad, p> | |
| If set to 1, the filter will pad the last audio packet with silence, so that it | |
| will contain the same number of samples (or roughly the same number of samples, | |
| see B<frame_rate>) as the previous ones. Default value is 1. | |
| =item B<frame_rate, r> | |
| This option makes the filter output a fixed number of packets per second instead | |
| of a fixed number of samples per packet. If the audio sample rate is not | |
| divisible by the frame rate then the number of samples will not be constant but | |
| will vary slightly so that each packet will start as close to the frame | |
| boundary as possible. Using this option has precedence over B<nb_out_samples>. | |
| =back | |
| You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio | |
| for NTSC frame rate using the B<frame_rate> option. | |
| ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc - | |
| =head2 pgs_frame_merge | |
| Merge a sequence of PGS Subtitle segments ending with an "end of display set" | |
| segment into a single packet. | |
| This is required by some containers that support PGS subtitles | |
| (muxer C<matroska>). | |
| =head2 prores_metadata | |
| Modify color property metadata embedded in prores stream. | |
| =over 4 | |
| =item B<color_primaries> | |
| Set the color primaries. | |
| Available values are: | |
| =over 4 | |
| =item B<auto> | |
| Keep the same color primaries property (default). | |
| =item B<unknown> | |
| =item B<bt709> | |
| =item B<bt470bg> | |
| BT601 625 | |
| =item B<smpte170m> | |
| BT601 525 | |
| =item B<bt2020> | |
| =item B<smpte431> | |
| DCI P3 | |
| =item B<smpte432> | |
| P3 D65 | |
| =back | |
| =item B<transfer_characteristics> | |
| Set the color transfer. | |
| Available values are: | |
| =over 4 | |
| =item B<auto> | |
| Keep the same transfer characteristics property (default). | |
| =item B<unknown> | |
| =item B<bt709> | |
| BT 601, BT 709, BT 2020 | |
| =item B<smpte2084> | |
| SMPTE ST 2084 | |
| =item B<arib-std-b67> | |
| ARIB STD-B67 | |
| =back | |
| =item B<matrix_coefficients> | |
| Set the matrix coefficient. | |
| Available values are: | |
| =over 4 | |
| =item B<auto> | |
| Keep the same colorspace property (default). | |
| =item B<unknown> | |
| =item B<bt709> | |
| =item B<smpte170m> | |
| BT 601 | |
| =item B<bt2020nc> | |
| =back | |
| =back | |
| Set Rec709 colorspace for each frame of the file | |
| ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov | |
| Set Hybrid Log-Gamma parameters for each frame of the file | |
| ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov | |
| =head2 remove_extra | |
| Remove extradata from packets. | |
| It accepts the following parameter: | |
| =over 4 | |
| =item B<freq> | |
| Set which frame types to remove extradata from. | |
| =over 4 | |
| =item B<k> | |
| Remove extradata from non-keyframes only. | |
| =item B<keyframe> | |
| Remove extradata from keyframes only. | |
| =item B<e, all> | |
| Remove extradata from all frames. | |
| =back | |
| =back | |
| =head2 setts | |
| Set PTS and DTS in packets. | |
| It accepts the following parameters: | |
| =over 4 | |
| =item B<ts> | |
| =item B<pts> | |
| =item B<dts> | |
| Set expressions for PTS, DTS or both. | |
| =item B<duration> | |
| Set expression for duration. | |
| =item B<time_base> | |
| Set output time base. | |
| =back | |
| The expressions are evaluated through the eval API and can contain the following | |
| constants: | |
| =over 4 | |
| =item B<N> | |
| The count of the input packet. Starting from 0. | |
| =item B<TS> | |
| The demux timestamp in input in case of C<ts> or C<dts> option or presentation | |
| timestamp in case of C<pts> option. | |
| =item B<POS> | |
| The original position in the file of the packet, or undefined if undefined | |
| for the current packet | |
| =item B<DTS> | |
| The demux timestamp in input. | |
| =item B<PTS> | |
| The presentation timestamp in input. | |
| =item B<DURATION> | |
| The duration in input. | |
| =item B<STARTDTS> | |
| The DTS of the first packet. | |
| =item B<STARTPTS> | |
| The PTS of the first packet. | |
| =item B<PREV_INDTS> | |
| The previous input DTS. | |
| =item B<PREV_INPTS> | |
| The previous input PTS. | |
| =item B<PREV_INDURATION> | |
| The previous input duration. | |
| =item B<PREV_OUTDTS> | |
| The previous output DTS. | |
| =item B<PREV_OUTPTS> | |
| The previous output PTS. | |
| =item B<PREV_OUTDURATION> | |
| The previous output duration. | |
| =item B<NEXT_DTS> | |
| The next input DTS. | |
| =item B<NEXT_PTS> | |
| The next input PTS. | |
| =item B<NEXT_DURATION> | |
| The next input duration. | |
| =item B<TB> | |
| The timebase of stream packet belongs. | |
| =item B<TB_OUT> | |
| The output timebase. | |
| =item B<SR> | |
| The sample rate of stream packet belongs. | |
| =item B<NOPTS> | |
| The AV_NOPTS_VALUE constant. | |
| =back | |
| =head2 text2movsub | |
| Convert text subtitles to MOV subtitles (as used by the C<mov_text> | |
| codec) with metadata headers. | |
| See also the B<mov2textsub> filter. | |
| =head2 trace_headers | |
| Log trace output containing all syntax elements in the coded stream | |
| headers (everything above the level of individual coded blocks). | |
| This can be useful for debugging low-level stream issues. | |
| Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending | |
| on the build only a subset of these may be available. | |
| =head2 truehd_core | |
| Extract the core from a TrueHD stream, dropping ATMOS data. | |
| =head2 vp9_metadata | |
| Modify metadata embedded in a VP9 stream. | |
| =over 4 | |
| =item B<color_space> | |
| Set the color space value in the frame header. Note that any frame | |
| set to RGB will be implicitly set to PC range and that RGB is | |
| incompatible with profiles 0 and 2. | |
| =over 4 | |
| =item B<unknown> | |
| =item B<bt601> | |
| =item B<bt709> | |
| =item B<smpte170> | |
| =item B<smpte240> | |
| =item B<bt2020> | |
| =item B<rgb> | |
| =back | |
| =item B<color_range> | |
| Set the color range value in the frame header. Note that any value | |
| imposed by the color space will take precedence over this value. | |
| =over 4 | |
| =item B<tv> | |
| =item B<pc> | |
| =back | |
| =back | |
| =head2 vp9_superframe | |
| Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This | |
| fixes merging of split/segmented VP9 streams where the alt-ref frame | |
| was split from its visible counterpart. | |
| =head2 vp9_superframe_split | |
| Split VP9 superframes into single frames. | |
| =head2 vp9_raw_reorder | |
| Given a VP9 stream with correct timestamps but possibly out of order, | |
| insert additional show-existing-frame packets to correct the ordering. | |
| =head1 SEE ALSO | |
| ffmpeg(1), ffplay(1), ffprobe(1), libavcodec(3) | |
| =head1 AUTHORS | |
| The FFmpeg developers. | |
| For details about the authorship, see the Git history of the project | |
| (https://git.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<https://git.ffmpeg.org/ffmpeg>E<gt>. | |
| Maintainers for the specific components are listed in the file | |
| F<MAINTAINERS> in the source code tree. | |