mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-01-06 01:41:17 +00:00
24682 lines
920 KiB
HTML
24682 lines
920 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<!-- Created on April 4, 2014 by texi2html 1.82 -->
|
|
<!--
|
|
texi2html was written by:
|
|
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
|
Karl Berry <karl@freefriends.org>
|
|
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
|
and many others.
|
|
Maintained by: Many creative people.
|
|
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
|
|
|
-->
|
|
<head>
|
|
<title>FFmpeg documentation : ffmpeg </title>
|
|
|
|
<meta name="description" content="ffmpeg Documentation: ">
|
|
<meta name="keywords" content="FFmpeg documentation : ffmpeg ">
|
|
<meta name="Generator" content="texi2html 1.82">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" type="text/css" href="default.css" />
|
|
|
|
<link rel="icon" href="favicon.png" type="image/png" />
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<div id="body">
|
|
|
|
<a name="SEC_Top"></a>
|
|
<h1 class="settitle">ffmpeg Documentation</h1>
|
|
|
|
<a name="SEC_Contents"></a>
|
|
<h1>Table of Contents</h1>
|
|
<div class="contents">
|
|
|
|
<ul class="toc">
|
|
<li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
|
|
<li><a name="toc-Description" href="#Description">2. Description</a></li>
|
|
<li><a name="toc-Detailed-description" href="#Detailed-description">3. Detailed description</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Filtering" href="#Filtering">3.1 Filtering</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Simple-filtergraphs" href="#Simple-filtergraphs">3.1.1 Simple filtergraphs</a></li>
|
|
<li><a name="toc-Complex-filtergraphs" href="#Complex-filtergraphs">3.1.2 Complex filtergraphs</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Stream-copy" href="#Stream-copy">3.2 Stream copy</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Stream-selection" href="#Stream-selection">4. Stream selection</a></li>
|
|
<li><a name="toc-Options-38" href="#Options-38">5. Options</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">5.1 Stream specifiers</a></li>
|
|
<li><a name="toc-Generic-options" href="#Generic-options">5.2 Generic options</a></li>
|
|
<li><a name="toc-AVOptions" href="#AVOptions">5.3 AVOptions</a></li>
|
|
<li><a name="toc-Main-options" href="#Main-options">5.4 Main options</a></li>
|
|
<li><a name="toc-Video-Options" href="#Video-Options">5.5 Video Options</a></li>
|
|
<li><a name="toc-Advanced-Video-Options" href="#Advanced-Video-Options">5.6 Advanced Video Options</a></li>
|
|
<li><a name="toc-Audio-Options" href="#Audio-Options">5.7 Audio Options</a></li>
|
|
<li><a name="toc-Advanced-Audio-options_003a" href="#Advanced-Audio-options_003a">5.8 Advanced Audio options:</a></li>
|
|
<li><a name="toc-Subtitle-options_003a" href="#Subtitle-options_003a">5.9 Subtitle options:</a></li>
|
|
<li><a name="toc-Advanced-Subtitle-options_003a" href="#Advanced-Subtitle-options_003a">5.10 Advanced Subtitle options:</a></li>
|
|
<li><a name="toc-Advanced-options" href="#Advanced-options">5.11 Advanced options</a></li>
|
|
<li><a name="toc-Preset-files" href="#Preset-files">5.12 Preset files</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Tips" href="#Tips">6. Tips</a></li>
|
|
<li><a name="toc-Examples-60" href="#Examples-60">7. Examples</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Preset-files-1" href="#Preset-files-1">7.1 Preset files</a></li>
|
|
<li><a name="toc-Video-and-Audio-grabbing" href="#Video-and-Audio-grabbing">7.2 Video and Audio grabbing</a></li>
|
|
<li><a name="toc-X11-grabbing" href="#X11-grabbing">7.3 X11 grabbing</a></li>
|
|
<li><a name="toc-Video-and-Audio-file-format-conversion" href="#Video-and-Audio-file-format-conversion">7.4 Video and Audio file format conversion</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Syntax-2" href="#Syntax-2">8. Syntax</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Quoting-and-escaping" href="#Quoting-and-escaping">8.1 Quoting and escaping</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-70" href="#Examples-70">8.1.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Date" href="#Date">8.2 Date</a></li>
|
|
<li><a name="toc-Time-duration" href="#Time-duration">8.3 Time duration</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-45" href="#Examples-45">8.3.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Video-size" href="#Video-size">8.4 Video size</a></li>
|
|
<li><a name="toc-Video-rate" href="#Video-rate">8.5 Video rate</a></li>
|
|
<li><a name="toc-Ratio" href="#Ratio">8.6 Ratio</a></li>
|
|
<li><a name="toc-Color" href="#Color">8.7 Color</a></li>
|
|
<li><a name="toc-Channel-Layout" href="#Channel-Layout">8.8 Channel Layout</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">9. Expression Evaluation</a></li>
|
|
<li><a name="toc-OpenCL-Options" href="#OpenCL-Options">10. OpenCL Options</a></li>
|
|
<li><a name="toc-Codec-Options" href="#Codec-Options">11. Codec Options</a></li>
|
|
<li><a name="toc-Decoders" href="#Decoders">12. Decoders</a></li>
|
|
<li><a name="toc-Video-Decoders" href="#Video-Decoders">13. Video Decoders</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-rawvideo" href="#rawvideo">13.1 rawvideo</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-26" href="#Options-26">13.1.1 Options</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Audio-Decoders" href="#Audio-Decoders">14. Audio Decoders</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-ac3" href="#ac3">14.1 ac3</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-AC_002d3-Decoder-Options" href="#AC_002d3-Decoder-Options">14.1.1 AC-3 Decoder Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ffwavesynth" href="#ffwavesynth">14.2 ffwavesynth</a></li>
|
|
<li><a name="toc-libcelt" href="#libcelt">14.3 libcelt</a></li>
|
|
<li><a name="toc-libgsm" href="#libgsm">14.4 libgsm</a></li>
|
|
<li><a name="toc-libilbc" href="#libilbc">14.5 libilbc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-46" href="#Options-46">14.5.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libopencore_002damrnb-1" href="#libopencore_002damrnb-1">14.6 libopencore-amrnb</a></li>
|
|
<li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">14.7 libopencore-amrwb</a></li>
|
|
<li><a name="toc-libopus-1" href="#libopus-1">14.8 libopus</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Subtitles-Decoders" href="#Subtitles-Decoders">15. Subtitles Decoders</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-dvdsub" href="#dvdsub">15.1 dvdsub</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-28" href="#Options-28">15.1.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libzvbi_002dteletext" href="#libzvbi_002dteletext">15.2 libzvbi-teletext</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-13" href="#Options-13">15.2.1 Options</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Encoders" href="#Encoders">16. Encoders</a></li>
|
|
<li><a name="toc-Audio-Encoders" href="#Audio-Encoders">17. Audio Encoders</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-aac" href="#aac">17.1 aac</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-22" href="#Options-22">17.1.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ac3-and-ac3_005ffixed" href="#ac3-and-ac3_005ffixed">17.2 ac3 and ac3_fixed</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-AC_002d3-Metadata" href="#AC_002d3-Metadata">17.2.1 AC-3 Metadata</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Metadata-Control-Options" href="#Metadata-Control-Options">17.2.1.1 Metadata Control Options</a></li>
|
|
<li><a name="toc-Downmix-Levels" href="#Downmix-Levels">17.2.1.2 Downmix Levels</a></li>
|
|
<li><a name="toc-Audio-Production-Information" href="#Audio-Production-Information">17.2.1.3 Audio Production Information</a></li>
|
|
<li><a name="toc-Other-Metadata-Options" href="#Other-Metadata-Options">17.2.1.4 Other Metadata Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Extended-Bitstream-Information" href="#Extended-Bitstream-Information">17.2.2 Extended Bitstream Information</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Extended-Bitstream-Information-_002d-Part-1" href="#Extended-Bitstream-Information-_002d-Part-1">17.2.2.1 Extended Bitstream Information - Part 1</a></li>
|
|
<li><a name="toc-Extended-Bitstream-Information-_002d-Part-2" href="#Extended-Bitstream-Information-_002d-Part-2">17.2.2.2 Extended Bitstream Information - Part 2</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Other-AC_002d3-Encoding-Options" href="#Other-AC_002d3-Encoding-Options">17.2.3 Other AC-3 Encoding Options</a></li>
|
|
<li><a name="toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options" href="#Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">17.2.4 Floating-Point-Only AC-3 Encoding Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libfaac-1" href="#libfaac-1">17.3 libfaac</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-27" href="#Options-27">17.3.1 Options</a></li>
|
|
<li><a name="toc-Examples-11" href="#Examples-11">17.3.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libfdk_005faac" href="#libfdk_005faac">17.4 libfdk_aac</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-15" href="#Options-15">17.4.1 Options</a></li>
|
|
<li><a name="toc-Examples-17" href="#Examples-17">17.4.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libmp3lame-1" href="#libmp3lame-1">17.5 libmp3lame</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-2" href="#Options-2">17.5.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">17.6 libopencore-amrnb</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-20" href="#Options-20">17.6.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libshine-1" href="#libshine-1">17.7 libshine</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-9" href="#Options-9">17.7.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libtwolame" href="#libtwolame">17.8 libtwolame</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-6" href="#Options-6">17.8.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libvo_002daacenc-1" href="#libvo_002daacenc-1">17.9 libvo-aacenc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-4" href="#Options-4">17.9.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libvo_002damrwbenc" href="#libvo_002damrwbenc">17.10 libvo-amrwbenc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-37" href="#Options-37">17.10.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libopus" href="#libopus">17.11 libopus</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Option-Mapping" href="#Option-Mapping">17.11.1 Option Mapping</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libvorbis" href="#libvorbis">17.12 libvorbis</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-32" href="#Options-32">17.12.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libwavpack-1" href="#libwavpack-1">17.13 libwavpack</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-19" href="#Options-19">17.13.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-wavpack" href="#wavpack">17.14 wavpack</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-31" href="#Options-31">17.14.1 Options</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Shared-options" href="#Shared-options">17.14.1.1 Shared options</a></li>
|
|
<li><a name="toc-Private-options-1" href="#Private-options-1">17.14.1.2 Private options</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Video-Encoders" href="#Video-Encoders">18. Video Encoders</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-libtheora" href="#libtheora">18.1 libtheora</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-16" href="#Options-16">18.1.1 Options</a></li>
|
|
<li><a name="toc-Examples-29" href="#Examples-29">18.1.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libvpx" href="#libvpx">18.2 libvpx</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-36" href="#Options-36">18.2.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libwebp" href="#libwebp">18.3 libwebp</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Pixel-Format" href="#Pixel-Format">18.3.1 Pixel Format</a></li>
|
|
<li><a name="toc-Options-34" href="#Options-34">18.3.2 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libx264_002c-libx264rgb" href="#libx264_002c-libx264rgb">18.4 libx264, libx264rgb</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Supported-Pixel-Formats" href="#Supported-Pixel-Formats">18.4.1 Supported Pixel Formats</a></li>
|
|
<li><a name="toc-Options-33" href="#Options-33">18.4.2 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libxvid" href="#libxvid">18.5 libxvid</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-3" href="#Options-3">18.5.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-png" href="#png">18.6 png</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Private-options" href="#Private-options">18.6.1 Private options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ProRes" href="#ProRes">18.7 ProRes</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">18.7.1 Private Options for prores-ks</a></li>
|
|
<li><a name="toc-Speed-considerations" href="#Speed-considerations">18.7.2 Speed considerations</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">19. Bitstream Filters</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">19.1 aac_adtstoasc</a></li>
|
|
<li><a name="toc-chomp" href="#chomp">19.2 chomp</a></li>
|
|
<li><a name="toc-dump_005fextra" href="#dump_005fextra">19.3 dump_extra</a></li>
|
|
<li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">19.4 h264_mp4toannexb</a></li>
|
|
<li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">19.5 imx_dump_header</a></li>
|
|
<li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">19.6 mjpeg2jpeg</a></li>
|
|
<li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">19.7 mjpega_dump_header</a></li>
|
|
<li><a name="toc-movsub" href="#movsub">19.8 movsub</a></li>
|
|
<li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">19.9 mp3_header_decompress</a></li>
|
|
<li><a name="toc-noise-1" href="#noise-1">19.10 noise</a></li>
|
|
<li><a name="toc-remove_005fextra" href="#remove_005fextra">19.11 remove_extra</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Format-Options" href="#Format-Options">20. Format Options</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">20.1 Format stream specifiers</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Demuxers" href="#Demuxers">21. Demuxers</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-applehttp" href="#applehttp">21.1 applehttp</a></li>
|
|
<li><a name="toc-asf" href="#asf">21.2 asf</a></li>
|
|
<li><a name="toc-concat-3" href="#concat-3">21.3 concat</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Syntax" href="#Syntax">21.3.1 Syntax</a></li>
|
|
<li><a name="toc-Options-14" href="#Options-14">21.3.2 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-flv" href="#flv">21.4 flv</a></li>
|
|
<li><a name="toc-libgme" href="#libgme">21.5 libgme</a></li>
|
|
<li><a name="toc-libquvi" href="#libquvi">21.6 libquvi</a></li>
|
|
<li><a name="toc-image2-1" href="#image2-1">21.7 image2</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-73" href="#Examples-73">21.7.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mpegts" href="#mpegts">21.8 mpegts</a></li>
|
|
<li><a name="toc-rawvideo-1" href="#rawvideo-1">21.9 rawvideo</a></li>
|
|
<li><a name="toc-sbg" href="#sbg">21.10 sbg</a></li>
|
|
<li><a name="toc-tedcaptions" href="#tedcaptions">21.11 tedcaptions</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Muxers" href="#Muxers">22. Muxers</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-aiff-1" href="#aiff-1">22.1 aiff</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-42" href="#Options-42">22.1.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-crc-1" href="#crc-1">22.2 crc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-65" href="#Examples-65">22.2.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-framecrc-1" href="#framecrc-1">22.3 framecrc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-41" href="#Examples-41">22.3.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-framemd5-1" href="#framemd5-1">22.4 framemd5</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-4" href="#Examples-4">22.4.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-gif-1" href="#gif-1">22.5 gif</a></li>
|
|
<li><a name="toc-hls-1" href="#hls-1">22.6 hls</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-12" href="#Options-12">22.6.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ico-1" href="#ico-1">22.7 ico</a></li>
|
|
<li><a name="toc-image2-2" href="#image2-2">22.8 image2</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-27" href="#Examples-27">22.8.1 Examples</a></li>
|
|
<li><a name="toc-Options-7" href="#Options-7">22.8.2 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-matroska" href="#matroska">22.9 matroska</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Metadata-1" href="#Metadata-1">22.9.1 Metadata</a></li>
|
|
<li><a name="toc-Options-39" href="#Options-39">22.9.2 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-md5-1" href="#md5-1">22.10 md5</a></li>
|
|
<li><a name="toc-mov_002c-mp4_002c-ismv" href="#mov_002c-mp4_002c-ismv">22.11 mov, mp4, ismv</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-8" href="#Options-8">22.11.1 Options</a></li>
|
|
<li><a name="toc-Example-1" href="#Example-1">22.11.2 Example</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mp3" href="#mp3">22.12 mp3</a></li>
|
|
<li><a name="toc-mpegts-1" href="#mpegts-1">22.13 mpegts</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-24" href="#Options-24">22.13.1 Options</a></li>
|
|
<li><a name="toc-Example" href="#Example">22.13.2 Example</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-null" href="#null">22.14 null</a></li>
|
|
<li><a name="toc-ogg" href="#ogg">22.15 ogg</a></li>
|
|
<li><a name="toc-segment_002c-stream_005fsegment_002c-ssegment" href="#segment_002c-stream_005fsegment_002c-ssegment">22.16 segment, stream_segment, ssegment</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-11" href="#Options-11">22.16.1 Options</a></li>
|
|
<li><a name="toc-Examples-99" href="#Examples-99">22.16.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-tee" href="#tee">22.17 tee</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-57" href="#Examples-57">22.17.1 Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Metadata" href="#Metadata">23. Metadata</a></li>
|
|
<li><a name="toc-Protocols" href="#Protocols">24. Protocols</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-bluray" href="#bluray">24.1 bluray</a></li>
|
|
<li><a name="toc-cache" href="#cache">24.2 cache</a></li>
|
|
<li><a name="toc-concat-2" href="#concat-2">24.3 concat</a></li>
|
|
<li><a name="toc-crypto" href="#crypto">24.4 crypto</a></li>
|
|
<li><a name="toc-data" href="#data">24.5 data</a></li>
|
|
<li><a name="toc-file" href="#file">24.6 file</a></li>
|
|
<li><a name="toc-ftp" href="#ftp">24.7 ftp</a></li>
|
|
<li><a name="toc-gopher" href="#gopher">24.8 gopher</a></li>
|
|
<li><a name="toc-hls-2" href="#hls-2">24.9 hls</a></li>
|
|
<li><a name="toc-http" href="#http">24.10 http</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">24.10.1 HTTP Cookies</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mmst" href="#mmst">24.11 mmst</a></li>
|
|
<li><a name="toc-mmsh" href="#mmsh">24.12 mmsh</a></li>
|
|
<li><a name="toc-md5-2" href="#md5-2">24.13 md5</a></li>
|
|
<li><a name="toc-pipe" href="#pipe">24.14 pipe</a></li>
|
|
<li><a name="toc-rtmp" href="#rtmp">24.15 rtmp</a></li>
|
|
<li><a name="toc-rtmpe" href="#rtmpe">24.16 rtmpe</a></li>
|
|
<li><a name="toc-rtmps" href="#rtmps">24.17 rtmps</a></li>
|
|
<li><a name="toc-rtmpt" href="#rtmpt">24.18 rtmpt</a></li>
|
|
<li><a name="toc-rtmpte" href="#rtmpte">24.19 rtmpte</a></li>
|
|
<li><a name="toc-rtmpts" href="#rtmpts">24.20 rtmpts</a></li>
|
|
<li><a name="toc-libssh" href="#libssh">24.21 libssh</a></li>
|
|
<li><a name="toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">24.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
|
|
<li><a name="toc-rtp" href="#rtp">24.23 rtp</a></li>
|
|
<li><a name="toc-rtsp" href="#rtsp">24.24 rtsp</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-75" href="#Examples-75">24.24.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sap" href="#sap">24.25 sap</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Muxer" href="#Muxer">24.25.1 Muxer</a></li>
|
|
<li><a name="toc-Demuxer" href="#Demuxer">24.25.2 Demuxer</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sctp" href="#sctp">24.26 sctp</a></li>
|
|
<li><a name="toc-srtp" href="#srtp">24.27 srtp</a></li>
|
|
<li><a name="toc-subfile" href="#subfile">24.28 subfile</a></li>
|
|
<li><a name="toc-tcp" href="#tcp">24.29 tcp</a></li>
|
|
<li><a name="toc-tls" href="#tls">24.30 tls</a></li>
|
|
<li><a name="toc-udp" href="#udp">24.31 udp</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-15" href="#Examples-15">24.31.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-unix" href="#unix">24.32 unix</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Device-Options" href="#Device-Options">25. Device Options</a></li>
|
|
<li><a name="toc-Input-Devices" href="#Input-Devices">26. Input Devices</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-alsa-1" href="#alsa-1">26.1 alsa</a></li>
|
|
<li><a name="toc-bktr" href="#bktr">26.2 bktr</a></li>
|
|
<li><a name="toc-dshow" href="#dshow">26.3 dshow</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-44" href="#Options-44">26.3.1 Options</a></li>
|
|
<li><a name="toc-Examples-98" href="#Examples-98">26.3.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-dv1394" href="#dv1394">26.4 dv1394</a></li>
|
|
<li><a name="toc-fbdev-1" href="#fbdev-1">26.5 fbdev</a></li>
|
|
<li><a name="toc-gdigrab" href="#gdigrab">26.6 gdigrab</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-23" href="#Options-23">26.6.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-iec61883" href="#iec61883">26.7 iec61883</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-35" href="#Options-35">26.7.1 Options</a></li>
|
|
<li><a name="toc-Examples-77" href="#Examples-77">26.7.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-jack" href="#jack">26.8 jack</a></li>
|
|
<li><a name="toc-lavfi" href="#lavfi">26.9 lavfi</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-30" href="#Options-30">26.9.1 Options</a></li>
|
|
<li><a name="toc-Examples-30" href="#Examples-30">26.9.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-libdc1394" href="#libdc1394">26.10 libdc1394</a></li>
|
|
<li><a name="toc-openal" href="#openal">26.11 openal</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-18" href="#Options-18">26.11.1 Options</a></li>
|
|
<li><a name="toc-Examples-101" href="#Examples-101">26.11.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-oss" href="#oss">26.12 oss</a></li>
|
|
<li><a name="toc-pulse" href="#pulse">26.13 pulse</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options" href="#Options">26.13.1 Options</a></li>
|
|
<li><a name="toc-Examples-48" href="#Examples-48">26.13.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-qtkit" href="#qtkit">26.14 qtkit</a></li>
|
|
<li><a name="toc-sndio-1" href="#sndio-1">26.15 sndio</a></li>
|
|
<li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">26.16 video4linux2, v4l2</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-29" href="#Options-29">26.16.1 Options</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-vfwcap" href="#vfwcap">26.17 vfwcap</a></li>
|
|
<li><a name="toc-x11grab" href="#x11grab">26.18 x11grab</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-5" href="#Options-5">26.18.1 Options</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Output-Devices" href="#Output-Devices">27. Output Devices</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-alsa" href="#alsa">27.1 alsa</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-32" href="#Examples-32">27.1.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-caca" href="#caca">27.2 caca</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-45" href="#Options-45">27.2.1 Options</a></li>
|
|
<li><a name="toc-Examples-31" href="#Examples-31">27.2.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-decklink" href="#decklink">27.3 decklink</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-10" href="#Options-10">27.3.1 Options</a></li>
|
|
<li><a name="toc-Examples-5" href="#Examples-5">27.3.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-fbdev" href="#fbdev">27.4 fbdev</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-41" href="#Options-41">27.4.1 Options</a></li>
|
|
<li><a name="toc-Examples-12" href="#Examples-12">27.4.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-opengl" href="#opengl">27.5 opengl</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-25" href="#Options-25">27.5.1 Options</a></li>
|
|
<li><a name="toc-Examples-46" href="#Examples-46">27.5.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-oss-1" href="#oss-1">27.6 oss</a></li>
|
|
<li><a name="toc-pulse-1" href="#pulse-1">27.7 pulse</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-17" href="#Options-17">27.7.1 Options</a></li>
|
|
<li><a name="toc-Examples-74" href="#Examples-74">27.7.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sdl" href="#sdl">27.8 sdl</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-40" href="#Options-40">27.8.1 Options</a></li>
|
|
<li><a name="toc-Interactive-commands" href="#Interactive-commands">27.8.2 Interactive commands</a></li>
|
|
<li><a name="toc-Examples-89" href="#Examples-89">27.8.3 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sndio" href="#sndio">27.9 sndio</a></li>
|
|
<li><a name="toc-xv" href="#xv">27.10 xv</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-21" href="#Options-21">27.10.1 Options</a></li>
|
|
<li><a name="toc-Examples-56" href="#Examples-56">27.10.2 Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Resampler-Options" href="#Resampler-Options">28. Resampler Options</a></li>
|
|
<li><a name="toc-Scaler-Options" href="#Scaler-Options">29. Scaler Options</a></li>
|
|
<li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">30. Filtering Introduction</a></li>
|
|
<li><a name="toc-graph2dot" href="#graph2dot">31. graph2dot</a></li>
|
|
<li><a name="toc-Filtergraph-description" href="#Filtergraph-description">32. Filtergraph description</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">32.1 Filtergraph syntax</a></li>
|
|
<li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">32.2 Notes on filtergraph escaping</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Timeline-editing" href="#Timeline-editing">33. Timeline editing</a></li>
|
|
<li><a name="toc-Audio-Filters" href="#Audio-Filters">34. Audio Filters</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-aconvert" href="#aconvert">34.1 aconvert</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-80" href="#Examples-80">34.1.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-adelay" href="#adelay">34.2 adelay</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-76" href="#Examples-76">34.2.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-aecho" href="#aecho">34.3 aecho</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples" href="#Examples">34.3.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-aeval" href="#aeval">34.4 aeval</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-16" href="#Examples-16">34.4.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-afade" href="#afade">34.5 afade</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-26" href="#Examples-26">34.5.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-aformat-1" href="#aformat-1">34.6 aformat</a></li>
|
|
<li><a name="toc-allpass" href="#allpass">34.7 allpass</a></li>
|
|
<li><a name="toc-amerge" href="#amerge">34.8 amerge</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-64" href="#Examples-64">34.8.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-amix" href="#amix">34.9 amix</a></li>
|
|
<li><a name="toc-anull" href="#anull">34.10 anull</a></li>
|
|
<li><a name="toc-apad" href="#apad">34.11 apad</a></li>
|
|
<li><a name="toc-aphaser" href="#aphaser">34.12 aphaser</a></li>
|
|
<li><a name="toc-aresample-1" href="#aresample-1">34.13 aresample</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-50" href="#Examples-50">34.13.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-asetnsamples" href="#asetnsamples">34.14 asetnsamples</a></li>
|
|
<li><a name="toc-asetrate" href="#asetrate">34.15 asetrate</a></li>
|
|
<li><a name="toc-ashowinfo" href="#ashowinfo">34.16 ashowinfo</a></li>
|
|
<li><a name="toc-astats" href="#astats">34.17 astats</a></li>
|
|
<li><a name="toc-astreamsync" href="#astreamsync">34.18 astreamsync</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-14" href="#Examples-14">34.18.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-asyncts" href="#asyncts">34.19 asyncts</a></li>
|
|
<li><a name="toc-atempo" href="#atempo">34.20 atempo</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-18" href="#Examples-18">34.20.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-atrim" href="#atrim">34.21 atrim</a></li>
|
|
<li><a name="toc-bandpass" href="#bandpass">34.22 bandpass</a></li>
|
|
<li><a name="toc-bandreject" href="#bandreject">34.23 bandreject</a></li>
|
|
<li><a name="toc-bass" href="#bass">34.24 bass</a></li>
|
|
<li><a name="toc-biquad" href="#biquad">34.25 biquad</a></li>
|
|
<li><a name="toc-channelmap" href="#channelmap">34.26 channelmap</a></li>
|
|
<li><a name="toc-channelsplit" href="#channelsplit">34.27 channelsplit</a></li>
|
|
<li><a name="toc-compand" href="#compand">34.28 compand</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-49" href="#Examples-49">34.28.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-earwax" href="#earwax">34.29 earwax</a></li>
|
|
<li><a name="toc-equalizer" href="#equalizer">34.30 equalizer</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-55" href="#Examples-55">34.30.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-highpass" href="#highpass">34.31 highpass</a></li>
|
|
<li><a name="toc-join" href="#join">34.32 join</a></li>
|
|
<li><a name="toc-ladspa" href="#ladspa">34.33 ladspa</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-43" href="#Examples-43">34.33.1 Examples</a></li>
|
|
<li><a name="toc-Commands-3" href="#Commands-3">34.33.2 Commands</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-lowpass" href="#lowpass">34.34 lowpass</a></li>
|
|
<li><a name="toc-pan" href="#pan">34.35 pan</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Mixing-examples" href="#Mixing-examples">34.35.1 Mixing examples</a></li>
|
|
<li><a name="toc-Remapping-examples" href="#Remapping-examples">34.35.2 Remapping examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-replaygain" href="#replaygain">34.36 replaygain</a></li>
|
|
<li><a name="toc-resample" href="#resample">34.37 resample</a></li>
|
|
<li><a name="toc-silencedetect" href="#silencedetect">34.38 silencedetect</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-90" href="#Examples-90">34.38.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-treble" href="#treble">34.39 treble</a></li>
|
|
<li><a name="toc-volume" href="#volume">34.40 volume</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Commands-2" href="#Commands-2">34.40.1 Commands</a></li>
|
|
<li><a name="toc-Examples-58" href="#Examples-58">34.40.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-volumedetect" href="#volumedetect">34.41 volumedetect</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-6" href="#Examples-6">34.41.1 Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Audio-Sources" href="#Audio-Sources">35. Audio Sources</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-abuffer" href="#abuffer">35.1 abuffer</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-92" href="#Examples-92">35.1.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-aevalsrc" href="#aevalsrc">35.2 aevalsrc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-38" href="#Examples-38">35.2.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-anullsrc" href="#anullsrc">35.3 anullsrc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-22" href="#Examples-22">35.3.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-flite" href="#flite">35.4 flite</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-35" href="#Examples-35">35.4.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sine" href="#sine">35.5 sine</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-44" href="#Examples-44">35.5.1 Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Audio-Sinks" href="#Audio-Sinks">36. Audio Sinks</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-abuffersink" href="#abuffersink">36.1 abuffersink</a></li>
|
|
<li><a name="toc-anullsink" href="#anullsink">36.2 anullsink</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Video-Filters" href="#Video-Filters">37. Video Filters</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-alphaextract" href="#alphaextract">37.1 alphaextract</a></li>
|
|
<li><a name="toc-alphamerge" href="#alphamerge">37.2 alphamerge</a></li>
|
|
<li><a name="toc-ass" href="#ass">37.3 ass</a></li>
|
|
<li><a name="toc-bbox" href="#bbox">37.4 bbox</a></li>
|
|
<li><a name="toc-blackdetect" href="#blackdetect">37.5 blackdetect</a></li>
|
|
<li><a name="toc-blackframe" href="#blackframe">37.6 blackframe</a></li>
|
|
<li><a name="toc-blend" href="#blend">37.7 blend</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-47" href="#Examples-47">37.7.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-boxblur" href="#boxblur">37.8 boxblur</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-97" href="#Examples-97">37.8.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-colorbalance" href="#colorbalance">37.9 colorbalance</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-94" href="#Examples-94">37.9.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-colorchannelmixer" href="#colorchannelmixer">37.10 colorchannelmixer</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-40" href="#Examples-40">37.10.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-colormatrix" href="#colormatrix">37.11 colormatrix</a></li>
|
|
<li><a name="toc-copy" href="#copy">37.12 copy</a></li>
|
|
<li><a name="toc-crop" href="#crop">37.13 crop</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-34" href="#Examples-34">37.13.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-cropdetect" href="#cropdetect">37.14 cropdetect</a></li>
|
|
<li><a name="toc-curves-1" href="#curves-1">37.15 curves</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-69" href="#Examples-69">37.15.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-dctdnoiz" href="#dctdnoiz">37.16 dctdnoiz</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-84" href="#Examples-84">37.16.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-decimate-1" href="#decimate-1">37.17 decimate</a></li>
|
|
<li><a name="toc-dejudder" href="#dejudder">37.18 dejudder</a></li>
|
|
<li><a name="toc-delogo" href="#delogo">37.19 delogo</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-82" href="#Examples-82">37.19.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-deshake" href="#deshake">37.20 deshake</a></li>
|
|
<li><a name="toc-drawbox" href="#drawbox">37.21 drawbox</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-10" href="#Examples-10">37.21.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-drawgrid" href="#drawgrid">37.22 drawgrid</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-54" href="#Examples-54">37.22.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-drawtext-1" href="#drawtext-1">37.23 drawtext</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Syntax-1" href="#Syntax-1">37.23.1 Syntax</a></li>
|
|
<li><a name="toc-Text-expansion" href="#Text-expansion">37.23.2 Text expansion</a></li>
|
|
<li><a name="toc-Examples-28" href="#Examples-28">37.23.3 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-edgedetect" href="#edgedetect">37.24 edgedetect</a></li>
|
|
<li><a name="toc-extractplanes" href="#extractplanes">37.25 extractplanes</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-78" href="#Examples-78">37.25.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-elbg" href="#elbg">37.26 elbg</a></li>
|
|
<li><a name="toc-fade" href="#fade">37.27 fade</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-61" href="#Examples-61">37.27.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-field" href="#field">37.28 field</a></li>
|
|
<li><a name="toc-fieldmatch" href="#fieldmatch">37.29 fieldmatch</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">37.29.1 p/c/n/u/b meaning</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">37.29.1.1 p/c/n</a></li>
|
|
<li><a name="toc-u_002fb" href="#u_002fb">37.29.1.2 u/b</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Examples-62" href="#Examples-62">37.29.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-fieldorder" href="#fieldorder">37.30 fieldorder</a></li>
|
|
<li><a name="toc-fifo" href="#fifo">37.31 fifo</a></li>
|
|
<li><a name="toc-format-1" href="#format-1">37.32 format</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-36" href="#Examples-36">37.32.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-fps-1" href="#fps-1">37.33 fps</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-86" href="#Examples-86">37.33.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-framepack" href="#framepack">37.34 framepack</a></li>
|
|
<li><a name="toc-framestep" href="#framestep">37.35 framestep</a></li>
|
|
<li><a name="toc-frei0r-1" href="#frei0r-1">37.36 frei0r</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-87" href="#Examples-87">37.36.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-geq" href="#geq">37.37 geq</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-2" href="#Examples-2">37.37.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-gradfun" href="#gradfun">37.38 gradfun</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-52" href="#Examples-52">37.38.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-haldclut-1" href="#haldclut-1">37.39 haldclut</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Workflow-examples" href="#Workflow-examples">37.39.1 Workflow examples</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">37.39.1.1 Hald CLUT video stream</a></li>
|
|
<li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">37.39.1.2 Hald CLUT with preview</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-hflip" href="#hflip">37.40 hflip</a></li>
|
|
<li><a name="toc-histeq" href="#histeq">37.41 histeq</a></li>
|
|
<li><a name="toc-histogram" href="#histogram">37.42 histogram</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-67" href="#Examples-67">37.42.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-hqdn3d-1" href="#hqdn3d-1">37.43 hqdn3d</a></li>
|
|
<li><a name="toc-hue" href="#hue">37.44 hue</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-9" href="#Examples-9">37.44.1 Examples</a></li>
|
|
<li><a name="toc-Commands-4" href="#Commands-4">37.44.2 Commands</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-idet" href="#idet">37.45 idet</a></li>
|
|
<li><a name="toc-il" href="#il">37.46 il</a></li>
|
|
<li><a name="toc-interlace" href="#interlace">37.47 interlace</a></li>
|
|
<li><a name="toc-kerndeint" href="#kerndeint">37.48 kerndeint</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-88" href="#Examples-88">37.48.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-lut3d-1" href="#lut3d-1">37.49 lut3d</a></li>
|
|
<li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">37.50 lut, lutrgb, lutyuv</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-51" href="#Examples-51">37.50.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mergeplanes" href="#mergeplanes">37.51 mergeplanes</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-59" href="#Examples-59">37.51.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mcdeint" href="#mcdeint">37.52 mcdeint</a></li>
|
|
<li><a name="toc-mp" href="#mp">37.53 mp</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-21" href="#Examples-21">37.53.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mpdecimate" href="#mpdecimate">37.54 mpdecimate</a></li>
|
|
<li><a name="toc-negate" href="#negate">37.55 negate</a></li>
|
|
<li><a name="toc-noformat" href="#noformat">37.56 noformat</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-100" href="#Examples-100">37.56.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-noise" href="#noise">37.57 noise</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-53" href="#Examples-53">37.57.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-null-1" href="#null-1">37.58 null</a></li>
|
|
<li><a name="toc-ocv" href="#ocv">37.59 ocv</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-dilate-1" href="#dilate-1">37.59.1 dilate</a></li>
|
|
<li><a name="toc-erode" href="#erode">37.59.2 erode</a></li>
|
|
<li><a name="toc-smooth" href="#smooth">37.59.3 smooth</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-overlay-1" href="#overlay-1">37.60 overlay</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Commands-5" href="#Commands-5">37.60.1 Commands</a></li>
|
|
<li><a name="toc-Examples-85" href="#Examples-85">37.60.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-owdenoise" href="#owdenoise">37.61 owdenoise</a></li>
|
|
<li><a name="toc-pad" href="#pad">37.62 pad</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-96" href="#Examples-96">37.62.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-perspective" href="#perspective">37.63 perspective</a></li>
|
|
<li><a name="toc-phase" href="#phase">37.64 phase</a></li>
|
|
<li><a name="toc-pixdesctest" href="#pixdesctest">37.65 pixdesctest</a></li>
|
|
<li><a name="toc-pp" href="#pp">37.66 pp</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-102" href="#Examples-102">37.66.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-psnr" href="#psnr">37.67 psnr</a></li>
|
|
<li><a name="toc-pullup-1" href="#pullup-1">37.68 pullup</a></li>
|
|
<li><a name="toc-removelogo" href="#removelogo">37.69 removelogo</a></li>
|
|
<li><a name="toc-rotate" href="#rotate">37.70 rotate</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-33" href="#Examples-33">37.70.1 Examples</a></li>
|
|
<li><a name="toc-Commands" href="#Commands">37.70.2 Commands</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sab" href="#sab">37.71 sab</a></li>
|
|
<li><a name="toc-scale-1" href="#scale-1">37.72 scale</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-43" href="#Options-43">37.72.1 Options</a></li>
|
|
<li><a name="toc-Examples-23" href="#Examples-23">37.72.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-separatefields" href="#separatefields">37.73 separatefields</a></li>
|
|
<li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">37.74 setdar, setsar</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-42" href="#Examples-42">37.74.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-setfield-1" href="#setfield-1">37.75 setfield</a></li>
|
|
<li><a name="toc-showinfo" href="#showinfo">37.76 showinfo</a></li>
|
|
<li><a name="toc-shuffleplanes" href="#shuffleplanes">37.77 shuffleplanes</a></li>
|
|
<li><a name="toc-smartblur-1" href="#smartblur-1">37.78 smartblur</a></li>
|
|
<li><a name="toc-stereo3d" href="#stereo3d">37.79 stereo3d</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-3" href="#Examples-3">37.79.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-spp" href="#spp">37.80 spp</a></li>
|
|
<li><a name="toc-subtitles-1" href="#subtitles-1">37.81 subtitles</a></li>
|
|
<li><a name="toc-super2xsai" href="#super2xsai">37.82 super2xsai</a></li>
|
|
<li><a name="toc-swapuv" href="#swapuv">37.83 swapuv</a></li>
|
|
<li><a name="toc-telecine" href="#telecine">37.84 telecine</a></li>
|
|
<li><a name="toc-thumbnail" href="#thumbnail">37.85 thumbnail</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-7" href="#Examples-7">37.85.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-tile" href="#tile">37.86 tile</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-20" href="#Examples-20">37.86.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-tinterlace" href="#tinterlace">37.87 tinterlace</a></li>
|
|
<li><a name="toc-transpose" href="#transpose">37.88 transpose</a></li>
|
|
<li><a name="toc-trim" href="#trim">37.89 trim</a></li>
|
|
<li><a name="toc-unsharp" href="#unsharp">37.90 unsharp</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-79" href="#Examples-79">37.90.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">37.91 vidstabdetect</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-81" href="#Examples-81">37.91.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">37.92 vidstabtransform</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Options-1" href="#Options-1">37.92.1 Options</a></li>
|
|
<li><a name="toc-Examples-72" href="#Examples-72">37.92.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-vflip" href="#vflip">37.93 vflip</a></li>
|
|
<li><a name="toc-vignette" href="#vignette">37.94 vignette</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Expressions" href="#Expressions">37.94.1 Expressions</a></li>
|
|
<li><a name="toc-Examples-93" href="#Examples-93">37.94.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-w3fdif" href="#w3fdif">37.95 w3fdif</a></li>
|
|
<li><a name="toc-yadif-1" href="#yadif-1">37.96 yadif</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Video-Sources" href="#Video-Sources">38. Video Sources</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-buffer" href="#buffer">38.1 buffer</a></li>
|
|
<li><a name="toc-cellauto" href="#cellauto">38.2 cellauto</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-8" href="#Examples-8">38.2.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-mandelbrot" href="#mandelbrot">38.3 mandelbrot</a></li>
|
|
<li><a name="toc-mptestsrc" href="#mptestsrc">38.4 mptestsrc</a></li>
|
|
<li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">38.5 frei0r_src</a></li>
|
|
<li><a name="toc-life" href="#life">38.6 life</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-95" href="#Examples-95">38.6.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc" href="#color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">38.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Commands-1" href="#Commands-1">38.7.1 Commands</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Video-Sinks" href="#Video-Sinks">39. Video Sinks</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-buffersink" href="#buffersink">39.1 buffersink</a></li>
|
|
<li><a name="toc-nullsink" href="#nullsink">39.2 nullsink</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">40. Multimedia Filters</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-avectorscope" href="#avectorscope">40.1 avectorscope</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-63" href="#Examples-63">40.1.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-concat-1" href="#concat-1">40.2 concat</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-37" href="#Examples-37">40.2.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-ebur128" href="#ebur128">40.3 ebur128</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-24" href="#Examples-24">40.3.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">40.4 interleave, ainterleave</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-83" href="#Examples-83">40.4.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">40.5 perms, aperms</a></li>
|
|
<li><a name="toc-select_002c-aselect" href="#select_002c-aselect">40.6 select, aselect</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-68" href="#Examples-68">40.6.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">40.7 sendcmd, asendcmd</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Commands-syntax" href="#Commands-syntax">40.7.1 Commands syntax</a></li>
|
|
<li><a name="toc-Examples-66" href="#Examples-66">40.7.2 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">40.8 setpts, asetpts</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-39" href="#Examples-39">40.8.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">40.9 settb, asettb</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-13" href="#Examples-13">40.9.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-showspectrum" href="#showspectrum">40.10 showspectrum</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-1" href="#Examples-1">40.10.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-showwaves" href="#showwaves">40.11 showwaves</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-71" href="#Examples-71">40.11.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-split_002c-asplit" href="#split_002c-asplit">40.12 split, asplit</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-19" href="#Examples-19">40.12.1 Examples</a></li>
|
|
</ul></li>
|
|
<li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">40.13 zmq, azmq</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-91" href="#Examples-91">40.13.1 Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">41. Multimedia Sources</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-amovie" href="#amovie">41.1 amovie</a></li>
|
|
<li><a name="toc-movie-1" href="#movie-1">41.2 movie</a>
|
|
<ul class="toc">
|
|
<li><a name="toc-Examples-25" href="#Examples-25">41.2.1 Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul></li>
|
|
<li><a name="toc-See-Also" href="#See-Also">42. See Also</a></li>
|
|
<li><a name="toc-Authors" href="#Authors">43. Authors</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<a name="Synopsis"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Synopsis">1. Synopsis</a></h1>
|
|
|
|
<p>ffmpeg [<var>global_options</var>] {[<var>input_file_options</var>] -i ‘<tt>input_file</tt>’} ... {[<var>output_file_options</var>] ‘<tt>output_file</tt>’} ...
|
|
</p>
|
|
<a name="Description"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Description">2. Description</a></h1>
|
|
|
|
<p><code>ffmpeg</code> is a very fast video and audio converter that can also grab from
|
|
a live audio/video source. It can also convert between arbitrary sample
|
|
rates and resize video on the fly with a high quality polyphase filter.
|
|
</p>
|
|
<p><code>ffmpeg</code> reads from an arbitrary number of input "files" (which can be regular
|
|
files, pipes, network streams, grabbing devices, etc.), specified by the
|
|
<code>-i</code> option, and writes to an arbitrary number of output "files", which are
|
|
specified by a plain output filename. Anything found on the command line which
|
|
cannot be interpreted as an option is considered to be an output filename.
|
|
</p>
|
|
<p>Each input or output file can, in principle, contain any number of streams of
|
|
different types (video/audio/subtitle/attachment/data). The allowed number and/or
|
|
types of streams may be limited by the container format. Selecting which
|
|
streams from which inputs will go into which output is either done automatically
|
|
or with the <code>-map</code> option (see the Stream selection chapter).
|
|
</p>
|
|
<p>To refer to input files in options, you must use their indices (0-based). E.g.
|
|
the first input file is <code>0</code>, the second is <code>1</code>, etc. Similarly, streams
|
|
within a file are referred to by their indices. E.g. <code>2:3</code> refers to the
|
|
fourth stream in the third input file. Also see the Stream specifiers chapter.
|
|
</p>
|
|
<p>As a general rule, options are applied to the next specified
|
|
file. Therefore, order is important, and you can have the same
|
|
option on the command line multiple times. Each occurrence is
|
|
then applied to the next input or output file.
|
|
Exceptions from this rule are the global options (e.g. verbosity level),
|
|
which should be specified first.
|
|
</p>
|
|
<p>Do not mix input and output files – first specify all input files, then all
|
|
output files. Also do not mix options which belong to different files. All
|
|
options apply ONLY to the next input or output file and are reset between files.
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
To set the video bitrate of the output file to 64 kbit/s:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To force the frame rate of the output file to 24 fps:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.avi -r 24 output.avi
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To force the frame rate of the input file (valid for raw formats only)
|
|
to 1 fps and the frame rate of the output file to 24 fps:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -r 1 -i input.m2v -r 24 output.avi
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>The format option may be needed for raw input files.
|
|
</p>
|
|
|
|
<a name="Detailed-description"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Detailed-description">3. Detailed description</a></h1>
|
|
|
|
<p>The transcoding process in <code>ffmpeg</code> for each output can be described by
|
|
the following diagram:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> _______ ______________
|
|
| | | |
|
|
| input | demuxer | encoded data | decoder
|
|
| file | ---------> | packets | -----+
|
|
|_______| |______________| |
|
|
v
|
|
_________
|
|
| |
|
|
| decoded |
|
|
| frames |
|
|
|_________|
|
|
________ ______________ |
|
|
| | | | |
|
|
| output | <-------- | encoded data | <----+
|
|
| file | muxer | packets | encoder
|
|
|________| |______________|
|
|
|
|
|
|
</pre></td></tr></table>
|
|
|
|
<p><code>ffmpeg</code> calls the libavformat library (containing demuxers) to read
|
|
input files and get packets containing encoded data from them. When there are
|
|
multiple input files, <code>ffmpeg</code> tries to keep them synchronized by
|
|
tracking lowest timestamp on any active input stream.
|
|
</p>
|
|
<p>Encoded packets are then passed to the decoder (unless streamcopy is selected
|
|
for the stream, see further for a description). The decoder produces
|
|
uncompressed frames (raw video/PCM audio/...) which can be processed further by
|
|
filtering (see next section). After filtering, the frames are passed to the
|
|
encoder, which encodes them and outputs encoded packets. Finally those are
|
|
passed to the muxer, which writes the encoded packets to the output file.
|
|
</p>
|
|
<a name="Filtering"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Filtering">3.1 Filtering</a></h2>
|
|
<p>Before encoding, <code>ffmpeg</code> can process raw audio and video frames using
|
|
filters from the libavfilter library. Several chained filters form a filter
|
|
graph. <code>ffmpeg</code> distinguishes between two types of filtergraphs:
|
|
simple and complex.
|
|
</p>
|
|
<a name="Simple-filtergraphs"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Simple-filtergraphs">3.1.1 Simple filtergraphs</a></h3>
|
|
<p>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:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> _________ ______________
|
|
| | | |
|
|
| decoded | | encoded data |
|
|
| frames |\ _ | packets |
|
|
|_________| \ /||______________|
|
|
\ __________ /
|
|
simple _\|| | / encoder
|
|
filtergraph | filtered |/
|
|
| frames |
|
|
|__________|
|
|
|
|
</pre></td></tr></table>
|
|
|
|
<p>Simple filtergraphs are configured with the per-stream ‘<samp>-filter</samp>’ option
|
|
(with ‘<samp>-vf</samp>’ and ‘<samp>-af</samp>’ aliases for video and audio respectively).
|
|
A simple filtergraph for video can look for example like this:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> _______ _____________ _______ ________
|
|
| | | | | | | |
|
|
| input | ---> | deinterlace | ---> | scale | ---> | output |
|
|
|_______| |_____________| |_______| |________|
|
|
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that some filters change frame properties but not frame contents. E.g. the
|
|
<code>fps</code> filter in the example above changes number of frames, but does not
|
|
touch the frame contents. Another example is the <code>setpts</code> filter, which
|
|
only sets timestamps and otherwise passes the frames unchanged.
|
|
</p>
|
|
<a name="Complex-filtergraphs"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Complex-filtergraphs">3.1.2 Complex filtergraphs</a></h3>
|
|
<p>Complex filtergraphs are those which cannot be described as simply a linear
|
|
processing chain applied to one stream. This is the case, for example, when the graph has
|
|
more than one input and/or output, or when output stream type is different from
|
|
input. They can be represented with the following diagram:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> _________
|
|
| |
|
|
| input 0 |\ __________
|
|
|_________| \ | |
|
|
\ _________ /| output 0 |
|
|
\ | | / |__________|
|
|
_________ \| complex | /
|
|
| | | |/
|
|
| input 1 |---->| filter |\
|
|
|_________| | | \ __________
|
|
/| graph | \ | |
|
|
/ | | \| output 1 |
|
|
_________ / |_________| |__________|
|
|
| | /
|
|
| input 2 |/
|
|
|_________|
|
|
|
|
</pre></td></tr></table>
|
|
|
|
<p>Complex filtergraphs are configured with the ‘<samp>-filter_complex</samp>’ option.
|
|
Note that this option is global, since a complex filtergraph, by its nature,
|
|
cannot be unambiguously associated with a single stream or file.
|
|
</p>
|
|
<p>The ‘<samp>-lavfi</samp>’ option is equivalent to ‘<samp>-filter_complex</samp>’.
|
|
</p>
|
|
<p>A trivial example of a complex filtergraph is the <code>overlay</code> filter, which
|
|
has two video inputs and one video output, containing one video overlaid on top
|
|
of the other. Its audio counterpart is the <code>amix</code> filter.
|
|
</p>
|
|
<a name="Stream-copy"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Stream-copy">3.2 Stream copy</a></h2>
|
|
<p>Stream copy is a mode selected by supplying the <code>copy</code> parameter to the
|
|
‘<samp>-codec</samp>’ option. It makes <code>ffmpeg</code> omit the decoding and encoding
|
|
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:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> _______ ______________ ________
|
|
| | | | | |
|
|
| input | demuxer | encoded data | muxer | output |
|
|
| file | ---------> | packets | -------> | file |
|
|
|_______| |______________| |________|
|
|
|
|
</pre></td></tr></table>
|
|
|
|
<p>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
|
|
filters is obviously also impossible, since filters work on uncompressed data.
|
|
</p>
|
|
|
|
<a name="Stream-selection"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Stream-selection">4. Stream selection</a></h1>
|
|
|
|
<p>By default, <code>ffmpeg</code> includes only one stream of each type (video, audio, subtitle)
|
|
present in the input files and adds them to each output file. It picks the
|
|
"best" of each based upon the following criteria: for video, it is the stream
|
|
with the highest resolution, for audio, it is the stream with the most channels, for
|
|
subtitles, it is the first subtitle stream. In the case where several streams of
|
|
the same type rate equally, the stream with the lowest index is chosen.
|
|
</p>
|
|
<p>You can disable some of those defaults by using the <code>-vn/-an/-sn</code> options. For
|
|
full manual control, use the <code>-map</code> option, which disables the defaults just
|
|
described.
|
|
</p>
|
|
|
|
<a name="Options-38"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Options-38">5. Options</a></h1>
|
|
|
|
<p>All the numerical options, if not specified otherwise, accept a string
|
|
representing a number as input, which may be followed by one of the SI
|
|
unit prefixes, for example: ’K’, ’M’, or ’G’.
|
|
</p>
|
|
<p>If ’i’ is appended to the SI unit prefix, the complete prefix will be
|
|
interpreted as a unit prefix for binary multiplies, which are based on
|
|
powers of 1024 instead of powers of 1000. Appending ’B’ to the SI unit
|
|
prefix multiplies the value by 8. This allows using, for example:
|
|
’KB’, ’MiB’, ’G’ and ’B’ as number suffixes.
|
|
</p>
|
|
<p>Options which do not take arguments are boolean options, and set the
|
|
corresponding value to true. They can be set to false by prefixing
|
|
the option name with "no". For example using "-nofoo"
|
|
will set the boolean option with name "foo" to false.
|
|
</p>
|
|
<p><a name="Stream-specifiers"></a>
|
|
</p><a name="Stream-specifiers-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Stream-specifiers-1">5.1 Stream specifiers</a></h2>
|
|
<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
|
|
are used to precisely specify which stream(s) a given option belongs to.
|
|
</p>
|
|
<p>A stream specifier is a string generally appended to the option name and
|
|
separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
|
|
<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
|
|
would select the ac3 codec for the second audio stream.
|
|
</p>
|
|
<p>A stream specifier can match several streams, so that the option is applied to all
|
|
of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
|
|
streams.
|
|
</p>
|
|
<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
|
|
or <code>-codec: copy</code> would copy all the streams without reencoding.
|
|
</p>
|
|
<p>Possible forms of stream specifiers are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp><var>stream_index</var></samp>’</dt>
|
|
<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
|
|
thread count for the second stream to 4.
|
|
</p></dd>
|
|
<dt> ‘<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>’</dt>
|
|
<dd><p><var>stream_type</var> is one of following: ’v’ for video, ’a’ for audio, ’s’ for subtitle,
|
|
’d’ for data, and ’t’ for attachments. If <var>stream_index</var> is given, then it matches
|
|
stream number <var>stream_index</var> of this type. Otherwise, it matches all
|
|
streams of this type.
|
|
</p></dd>
|
|
<dt> ‘<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>’</dt>
|
|
<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
|
|
in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
|
|
program.
|
|
</p></dd>
|
|
<dt> ‘<samp>#<var>stream_id</var> or i:<var>stream_id</var></samp>’</dt>
|
|
<dd><p>Match the stream by stream id (e.g. PID in MPEG-TS container).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Generic-options"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Generic-options">5.2 Generic options</a></h2>
|
|
|
|
<p>These options are shared amongst the ff* tools.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-L</samp>’</dt>
|
|
<dd><p>Show license.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-h, -?, -help, --help [<var>arg</var>]</samp>’</dt>
|
|
<dd><p>Show help. An optional parameter may be specified to print help about a specific
|
|
item. If no argument is specified, only basic (non advanced) tool
|
|
options are shown.
|
|
</p>
|
|
<p>Possible values of <var>arg</var> are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>long</samp>’</dt>
|
|
<dd><p>Print advanced tool options in addition to the basic tool options.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>full</samp>’</dt>
|
|
<dd><p>Print complete list of options, including shared and private options
|
|
for encoders, decoders, demuxers, muxers, filters, etc.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>decoder=<var>decoder_name</var></samp>’</dt>
|
|
<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
|
|
‘<samp>-decoders</samp>’ option to get a list of all decoders.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>encoder=<var>encoder_name</var></samp>’</dt>
|
|
<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
|
|
‘<samp>-encoders</samp>’ option to get a list of all encoders.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>demuxer=<var>demuxer_name</var></samp>’</dt>
|
|
<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
|
|
‘<samp>-formats</samp>’ option to get a list of all demuxers and muxers.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>muxer=<var>muxer_name</var></samp>’</dt>
|
|
<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
|
|
‘<samp>-formats</samp>’ option to get a list of all muxers and demuxers.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filter=<var>filter_name</var></samp>’</dt>
|
|
<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
|
|
‘<samp>-filters</samp>’ option to get a list of all filters.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-version</samp>’</dt>
|
|
<dd><p>Show version.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-formats</samp>’</dt>
|
|
<dd><p>Show available formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-codecs</samp>’</dt>
|
|
<dd><p>Show all codecs known to libavcodec.
|
|
</p>
|
|
<p>Note that the term ’codec’ is used throughout this documentation as a shortcut
|
|
for what is more correctly called a media bitstream format.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-decoders</samp>’</dt>
|
|
<dd><p>Show available decoders.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-encoders</samp>’</dt>
|
|
<dd><p>Show all available encoders.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-bsfs</samp>’</dt>
|
|
<dd><p>Show available bitstream filters.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-protocols</samp>’</dt>
|
|
<dd><p>Show available protocols.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-filters</samp>’</dt>
|
|
<dd><p>Show available libavfilter filters.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-pix_fmts</samp>’</dt>
|
|
<dd><p>Show available pixel formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-sample_fmts</samp>’</dt>
|
|
<dd><p>Show available sample formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-layouts</samp>’</dt>
|
|
<dd><p>Show channel names and standard channel layouts.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-colors</samp>’</dt>
|
|
<dd><p>Show recognized color names.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>’</dt>
|
|
<dd><p>Set the logging level used by the library.
|
|
Adding "repeat+" indicates that repeated log output should not be compressed
|
|
to the first line and the "Last message repeated n times" line will be
|
|
omitted. "repeat" can also be used alone.
|
|
If "repeat" is used alone, and with no prior loglevel set, the default
|
|
loglevel will be used. If multiple loglevel parameters are given, using
|
|
’repeat’ will not change the loglevel.
|
|
<var>loglevel</var> is a number or a string containing one of the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>quiet</samp>’</dt>
|
|
<dd><p>Show nothing at all; be silent.
|
|
</p></dd>
|
|
<dt> ‘<samp>panic</samp>’</dt>
|
|
<dd><p>Only show fatal errors which could lead the process to crash, such as
|
|
and assert failure. This is not currently used for anything.
|
|
</p></dd>
|
|
<dt> ‘<samp>fatal</samp>’</dt>
|
|
<dd><p>Only show fatal errors. These are errors after which the process absolutely
|
|
cannot continue after.
|
|
</p></dd>
|
|
<dt> ‘<samp>error</samp>’</dt>
|
|
<dd><p>Show all errors, including ones which can be recovered from.
|
|
</p></dd>
|
|
<dt> ‘<samp>warning</samp>’</dt>
|
|
<dd><p>Show all warnings and errors. Any message related to possibly
|
|
incorrect or unexpected events will be shown.
|
|
</p></dd>
|
|
<dt> ‘<samp>info</samp>’</dt>
|
|
<dd><p>Show informative messages during processing. This is in addition to
|
|
warnings and errors. This is the default value.
|
|
</p></dd>
|
|
<dt> ‘<samp>verbose</samp>’</dt>
|
|
<dd><p>Same as <code>info</code>, except more verbose.
|
|
</p></dd>
|
|
<dt> ‘<samp>debug</samp>’</dt>
|
|
<dd><p>Show everything, including debugging information.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>By default the program logs to stderr, if coloring is supported by the
|
|
terminal, colors are used to mark errors and warnings. Log coloring
|
|
can be disabled setting the environment variable
|
|
<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
|
|
the environment variable <code>AV_LOG_FORCE_COLOR</code>.
|
|
The use of the environment variable <code>NO_COLOR</code> is deprecated and
|
|
will be dropped in a following FFmpeg version.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-report</samp>’</dt>
|
|
<dd><p>Dump full command line and console output to a file named
|
|
<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
|
|
directory.
|
|
This file can be useful for bug reports.
|
|
It also implies <code>-loglevel verbose</code>.
|
|
</p>
|
|
<p>Setting the environment variable <code>FFREPORT</code> to any value has the
|
|
same effect. If the value is a ’:’-separated key=value sequence, these
|
|
options will affect the report; options values must be escaped if they
|
|
contain special characters or the options delimiter ’:’ (see the
|
|
“Quoting and escaping” section in the ffmpeg-utils manual). The
|
|
following option is recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>file</samp>’</dt>
|
|
<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
|
|
of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
|
|
to a plain <code>%</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Errors in parsing the environment variable are not fatal, and will not
|
|
appear in the report.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-hide_banner</samp>’</dt>
|
|
<dd><p>Suppress printing banner.
|
|
</p>
|
|
<p>All FFmpeg tools will normally show a copyright notice, build options
|
|
and library versions. This option can be used to suppress printing
|
|
this information.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-cpuflags flags (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Allows setting and clearing cpu flags. This option is intended
|
|
for testing. Do not use it unless you know what you’re doing.
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
|
|
ffmpeg -cpuflags mmx ...
|
|
ffmpeg -cpuflags 0 ...
|
|
</pre></td></tr></table>
|
|
<p>Possible flags for this option are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>x86</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>mmx</samp>’</dt>
|
|
<dt> ‘<samp>mmxext</samp>’</dt>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dt> ‘<samp>sse2</samp>’</dt>
|
|
<dt> ‘<samp>sse2slow</samp>’</dt>
|
|
<dt> ‘<samp>sse3</samp>’</dt>
|
|
<dt> ‘<samp>sse3slow</samp>’</dt>
|
|
<dt> ‘<samp>ssse3</samp>’</dt>
|
|
<dt> ‘<samp>atom</samp>’</dt>
|
|
<dt> ‘<samp>sse4.1</samp>’</dt>
|
|
<dt> ‘<samp>sse4.2</samp>’</dt>
|
|
<dt> ‘<samp>avx</samp>’</dt>
|
|
<dt> ‘<samp>xop</samp>’</dt>
|
|
<dt> ‘<samp>fma4</samp>’</dt>
|
|
<dt> ‘<samp>3dnow</samp>’</dt>
|
|
<dt> ‘<samp>3dnowext</samp>’</dt>
|
|
<dt> ‘<samp>cmov</samp>’</dt>
|
|
</dl>
|
|
</dd>
|
|
<dt> ‘<samp>ARM</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>armv5te</samp>’</dt>
|
|
<dt> ‘<samp>armv6</samp>’</dt>
|
|
<dt> ‘<samp>armv6t2</samp>’</dt>
|
|
<dt> ‘<samp>vfp</samp>’</dt>
|
|
<dt> ‘<samp>vfpv3</samp>’</dt>
|
|
<dt> ‘<samp>neon</samp>’</dt>
|
|
</dl>
|
|
</dd>
|
|
<dt> ‘<samp>PowerPC</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>altivec</samp>’</dt>
|
|
</dl>
|
|
</dd>
|
|
<dt> ‘<samp>Specific Processors</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>pentium2</samp>’</dt>
|
|
<dt> ‘<samp>pentium3</samp>’</dt>
|
|
<dt> ‘<samp>pentium4</samp>’</dt>
|
|
<dt> ‘<samp>k6</samp>’</dt>
|
|
<dt> ‘<samp>k62</samp>’</dt>
|
|
<dt> ‘<samp>athlon</samp>’</dt>
|
|
<dt> ‘<samp>athlonxp</samp>’</dt>
|
|
<dt> ‘<samp>k8</samp>’</dt>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-opencl_bench</samp>’</dt>
|
|
<dd><p>Benchmark all available OpenCL devices and show the results. This option
|
|
is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-opencl_options options (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Set OpenCL environment options. This option is only available when
|
|
FFmpeg has been compiled with <code>--enable-opencl</code>.
|
|
</p>
|
|
<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
|
|
separated by ’:’. See the “OpenCL Options” section in the
|
|
ffmpeg-utils manual for the list of supported options.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="AVOptions"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-AVOptions">5.3 AVOptions</a></h2>
|
|
|
|
<p>These options are provided directly by the libavformat, libavdevice and
|
|
libavcodec libraries. To see the list of available AVOptions, use the
|
|
‘<samp>-help</samp>’ option. They are separated into two categories:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>generic</samp>’</dt>
|
|
<dd><p>These options can be set for any container, codec or device. Generic options
|
|
are listed under AVFormatContext options for containers/devices and under
|
|
AVCodecContext options for codecs.
|
|
</p></dd>
|
|
<dt> ‘<samp>private</samp>’</dt>
|
|
<dd><p>These options are specific to the given container, device or codec. Private
|
|
options are listed under their corresponding containers/devices/codecs.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
|
|
an MP3 file, use the ‘<samp>id3v2_version</samp>’ private option of the MP3
|
|
muxer:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
|
|
</pre></td></tr></table>
|
|
|
|
<p>All codec AVOptions are per-stream, and thus a stream specifier
|
|
should be attached to them.
|
|
</p>
|
|
<p>Note: the ‘<samp>-nooption</samp>’ syntax cannot be used for boolean
|
|
AVOptions, use ‘<samp>-option 0</samp>’/‘<samp>-option 1</samp>’.
|
|
</p>
|
|
<p>Note: the old undocumented way of specifying per-stream AVOptions by
|
|
prepending v/a/s to the options name is now obsolete and will be
|
|
removed soon.
|
|
</p>
|
|
<a name="Main-options"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Main-options">5.4 Main options</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-f <var>fmt</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Force input or output file format. The format is normally auto detected for input
|
|
files and guessed from the file extension for output files, so this option is not
|
|
needed in most cases.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-i <var>filename</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>input file name
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-y (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Overwrite output files without asking.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-n (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Do not overwrite output files, and exit immediately if a specified
|
|
output file already exists.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-c[:<var>stream_specifier</var>] <var>codec</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dt> ‘<samp>-codec[:<var>stream_specifier</var>] <var>codec</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Select an encoder (when used before an output file) or a decoder (when used
|
|
before an input file) for one or more streams. <var>codec</var> is the name of a
|
|
decoder/encoder or a special value <code>copy</code> (output only) to indicate that
|
|
the stream is not to be re-encoded.
|
|
</p>
|
|
<p>For example
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
|
|
</pre></td></tr></table>
|
|
<p>encodes all video streams with libx264 and copies all audio streams.
|
|
</p>
|
|
<p>For each stream, the last matching <code>c</code> option is applied, so
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
|
|
</pre></td></tr></table>
|
|
<p>will copy all the streams except the second video, which will be encoded with
|
|
libx264, and the 138th audio, which will be encoded with libvorbis.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-t <var>duration</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Stop writing the output after its duration reaches <var>duration</var>.
|
|
<var>duration</var> may be a number in seconds, or in <code>hh:mm:ss[.xxx]</code> form.
|
|
</p>
|
|
<p>-to and -t are mutually exclusive and -t has priority.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-to <var>position</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Stop writing the output at <var>position</var>.
|
|
<var>position</var> may be a number in seconds, or in <code>hh:mm:ss[.xxx]</code> form.
|
|
</p>
|
|
<p>-to and -t are mutually exclusive and -t has priority.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-fs <var>limit_size</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the file size limit, expressed in bytes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-ss <var>position</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>When used as an input option (before <code>-i</code>), seeks in this input file to
|
|
<var>position</var>. Note the in most formats it is not possible to seek exactly, so
|
|
<code>ffmpeg</code> will seek to the closest seek point before <var>position</var>.
|
|
When transcoding and ‘<samp>-accurate_seek</samp>’ is enabled (the default), this
|
|
extra segment between the seek point and <var>position</var> will be decoded and
|
|
discarded. When doing stream copy or when ‘<samp>-noaccurate_seek</samp>’ is used, it
|
|
will be preserved.
|
|
</p>
|
|
<p>When used as an output option (before an output filename), decodes but discards
|
|
input until the timestamps reach <var>position</var>.
|
|
</p>
|
|
<p><var>position</var> may be either in seconds or in <code>hh:mm:ss[.xxx]</code> form.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-itsoffset <var>offset</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set the input time offset.
|
|
</p>
|
|
<p><var>offset</var> must be a time duration specification,
|
|
see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
|
|
</p>
|
|
<p>The offset is added to the timestamps of the input files. Specifying
|
|
a positive offset means that the corresponding streams are delayed by
|
|
the time duration specified in <var>offset</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-timestamp <var>date</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the recording timestamp in the container.
|
|
</p>
|
|
<p><var>date</var> must be a time duration specification,
|
|
see <a href="ffmpeg-utils.html#date-syntax">(ffmpeg-utils)date syntax</a>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-metadata[:metadata_specifier] <var>key</var>=<var>value</var> (<em>output,per-metadata</em>)</samp>’</dt>
|
|
<dd><p>Set a metadata key/value pair.
|
|
</p>
|
|
<p>An optional <var>metadata_specifier</var> may be given to set metadata
|
|
on streams or chapters. See <code>-map_metadata</code> documentation for
|
|
details.
|
|
</p>
|
|
<p>This option overrides metadata set with <code>-map_metadata</code>. It is
|
|
also possible to delete metadata by using an empty value.
|
|
</p>
|
|
<p>For example, for setting the title in the output file:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -metadata title="my title" out.flv
|
|
</pre></td></tr></table>
|
|
|
|
<p>To set the language of the first audio stream:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -metadata:s:a:1 language=eng OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-target <var>type</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Specify target file type (<code>vcd</code>, <code>svcd</code>, <code>dvd</code>, <code>dv</code>,
|
|
<code>dv50</code>). <var>type</var> may be prefixed with <code>pal-</code>, <code>ntsc-</code> or
|
|
<code>film-</code> to use the corresponding standard. All the format options
|
|
(bitrate, codecs, buffer sizes) are then set automatically. You can just type:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Nevertheless you can specify additional options as long as you know
|
|
they do not conflict with the standard, as in:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-dframes <var>number</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the number of data frames to record. This is an alias for <code>-frames:d</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-frames[:<var>stream_specifier</var>] <var>framecount</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Stop writing to the stream after <var>framecount</var> frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-q[:<var>stream_specifier</var>] <var>q</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dt> ‘<samp>-qscale[:<var>stream_specifier</var>] <var>q</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Use fixed quality scale (VBR). The meaning of <var>q</var>/<var>qscale</var> is
|
|
codec-dependent.
|
|
If <var>qscale</var> is used without a <var>stream_specifier</var> then it applies only
|
|
to the video stream, this is to maintain compatibility with previous behavior
|
|
and as specifying the same codec specific value to 2 different codecs that is
|
|
audio and video generally is not what is intended when no stream_specifier is
|
|
used.
|
|
</p>
|
|
<p><a name="filter_005foption"></a>
|
|
</p></dd>
|
|
<dt> ‘<samp>-filter[:<var>stream_specifier</var>] <var>filtergraph</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
|
|
filter the stream.
|
|
</p>
|
|
<p><var>filtergraph</var> is a description of the filtergraph to apply to
|
|
the stream, and must have a single input and a single output of the
|
|
same type of the stream. In the filtergraph, the input is associated
|
|
to the label <code>in</code>, and the output to the label <code>out</code>. See
|
|
the ffmpeg-filters manual for more information about the filtergraph
|
|
syntax.
|
|
</p>
|
|
<p>See the <a href="#filter_005fcomplex_005foption">-filter_complex option</a> if you
|
|
want to create filtergraphs with multiple inputs and/or outputs.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-filter_script[:<var>stream_specifier</var>] <var>filename</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>This option is similar to ‘<samp>-filter</samp>’, the only difference is that its
|
|
argument is the name of the file from which a filtergraph description is to be
|
|
read.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-pre[:<var>stream_specifier</var>] <var>preset_name</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Specify the preset for matching stream(s).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-stats (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Print encoding progress/statistics. It is on by default, to explicitly
|
|
disable it you need to specify <code>-nostats</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-progress <var>url</var> (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Send program-friendly progress information to <var>url</var>.
|
|
</p>
|
|
<p>Progress information is written approximately every second and at the end of
|
|
the encoding process. It is made of "<var>key</var>=<var>value</var>" lines. <var>key</var>
|
|
consists of only alphanumeric characters. The last key of a sequence of
|
|
progress information is always "progress".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-stdin</samp>’</dt>
|
|
<dd><p>Enable interaction on standard input. On by default unless standard input is
|
|
used as an input. To explicitly disable interaction you need to specify
|
|
<code>-nostdin</code>.
|
|
</p>
|
|
<p>Disabling interaction on standard input is useful, for example, if
|
|
ffmpeg is in the background process group. Roughly the same result can
|
|
be achieved with <code>ffmpeg ... < /dev/null</code> but it requires a
|
|
shell.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-debug_ts (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Print timestamp information. It is off by default. This option is
|
|
mostly useful for testing and debugging purposes, and the output
|
|
format may change from one version to another, so it should not be
|
|
employed by portable scripts.
|
|
</p>
|
|
<p>See also the option <code>-fdebug ts</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-attach <var>filename</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Add an attachment to the output file. This is supported by a few formats
|
|
like Matroska for e.g. fonts used in rendering subtitles. Attachments
|
|
are implemented as a specific type of stream, so this option will add
|
|
a new stream to the file. It is then possible to use per-stream options
|
|
on this stream in the usual way. Attachment streams created with this
|
|
option will be created after all the other streams (i.e. those created
|
|
with <code>-map</code> or automatic mappings).
|
|
</p>
|
|
<p>Note that for Matroska you also have to set the mimetype metadata tag:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
|
|
</pre></td></tr></table>
|
|
<p>(assuming that the attachment stream will be third in the output file).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-dump_attachment[:<var>stream_specifier</var>] <var>filename</var> (<em>input,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Extract the matching attachment stream into a file named <var>filename</var>. If
|
|
<var>filename</var> is empty, then the value of the <code>filename</code> metadata tag
|
|
will be used.
|
|
</p>
|
|
<p>E.g. to extract the first attachment to a file named ’out.ttf’:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
|
|
</pre></td></tr></table>
|
|
<p>To extract all attachments to files determined by the <code>filename</code> tag:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -dump_attachment:t "" -i INPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>Technical note – attachments are implemented as codec extradata, so this
|
|
option can actually be used to extract extradata from any stream, not just
|
|
attachments.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Video-Options"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Video-Options">5.5 Video Options</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-vframes <var>number</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the number of video frames to record. This is an alias for <code>-frames:v</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-r[:<var>stream_specifier</var>] <var>fps</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set frame rate (Hz value, fraction or abbreviation).
|
|
</p>
|
|
<p>As an input option, ignore any timestamps stored in the file and instead
|
|
generate timestamps assuming constant frame rate <var>fps</var>.
|
|
</p>
|
|
<p>As an output option, duplicate or drop input frames to achieve constant output
|
|
frame rate <var>fps</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-s[:<var>stream_specifier</var>] <var>size</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set frame size.
|
|
</p>
|
|
<p>As an input option, this is a shortcut for the ‘<samp>video_size</samp>’ private
|
|
option, recognized by some demuxers for which the frame size is either not
|
|
stored in the file or is configurable – e.g. raw video or video grabbers.
|
|
</p>
|
|
<p>As an output option, this inserts the <code>scale</code> video filter to the
|
|
<em>end</em> of the corresponding filtergraph. Please use the <code>scale</code> filter
|
|
directly to insert it at the beginning or some other place.
|
|
</p>
|
|
<p>The format is ‘<samp>wxh</samp>’ (default - same as source).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-aspect[:<var>stream_specifier</var>] <var>aspect</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set the video display aspect ratio specified by <var>aspect</var>.
|
|
</p>
|
|
<p><var>aspect</var> can be a floating point number string, or a string of the
|
|
form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
|
|
numerator and denominator of the aspect ratio. For example "4:3",
|
|
"16:9", "1.3333", and "1.7777" are valid argument values.
|
|
</p>
|
|
<p>If used together with ‘<samp>-vcodec copy</samp>’, it will affect the aspect ratio
|
|
stored at container level, but not the aspect ratio stored in encoded
|
|
frames, if it exists.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-vn (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Disable video recording.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-vcodec <var>codec</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the video codec. This is an alias for <code>-codec:v</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-pass[:<var>stream_specifier</var>] <var>n</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Select the pass number (1 or 2). It is used to do two-pass
|
|
video encoding. The statistics of the video are recorded in the first
|
|
pass into a log file (see also the option -passlogfile),
|
|
and in the second pass that log file is used to generate the video
|
|
at the exact requested bitrate.
|
|
On pass 1, you may just deactivate audio and set output to null,
|
|
examples for Windows and Unix:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
|
|
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-passlogfile[:<var>stream_specifier</var>] <var>prefix</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set two-pass log file name prefix to <var>prefix</var>, the default file name
|
|
prefix is “ffmpeg2pass”. The complete file name will be
|
|
‘<tt>PREFIX-N.log</tt>’, where N is a number specific to the output
|
|
stream
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-vf <var>filtergraph</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
|
|
filter the stream.
|
|
</p>
|
|
<p>This is an alias for <code>-filter:v</code>, see the <a href="#filter_005foption">-filter option</a>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Advanced-Video-Options"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-Video-Options">5.6 Advanced Video Options</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-pix_fmt[:<var>stream_specifier</var>] <var>format</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set pixel format. Use <code>-pix_fmts</code> to show all the supported
|
|
pixel formats.
|
|
If the selected pixel format can not be selected, ffmpeg will print a
|
|
warning and select the best pixel format supported by the encoder.
|
|
If <var>pix_fmt</var> is prefixed by a <code>+</code>, ffmpeg will exit with an error
|
|
if the requested pixel format can not be selected, and automatic conversions
|
|
inside filtergraphs are disabled.
|
|
If <var>pix_fmt</var> is a single <code>+</code>, ffmpeg selects the same pixel format
|
|
as the input (or graph output) and automatic conversions are disabled.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-sws_flags <var>flags</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Set SwScaler flags.
|
|
</p></dd>
|
|
<dt> ‘<samp>-vdt <var>n</var></samp>’</dt>
|
|
<dd><p>Discard threshold.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-rc_override[:<var>stream_specifier</var>] <var>override</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Rate control override for specific intervals, formatted as "int,int,int"
|
|
list separated with slashes. Two first values are the beginning and
|
|
end frame numbers, last one is quantizer to use if positive, or quality
|
|
factor if negative.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-ilme</samp>’</dt>
|
|
<dd><p>Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
|
|
Use this option if your input file is interlaced and you want
|
|
to keep the interlaced format for minimum losses.
|
|
The alternative is to deinterlace the input stream with
|
|
‘<samp>-deinterlace</samp>’, but deinterlacing introduces losses.
|
|
</p></dd>
|
|
<dt> ‘<samp>-psnr</samp>’</dt>
|
|
<dd><p>Calculate PSNR of compressed frames.
|
|
</p></dd>
|
|
<dt> ‘<samp>-vstats</samp>’</dt>
|
|
<dd><p>Dump video coding statistics to ‘<tt>vstats_HHMMSS.log</tt>’.
|
|
</p></dd>
|
|
<dt> ‘<samp>-vstats_file <var>file</var></samp>’</dt>
|
|
<dd><p>Dump video coding statistics to <var>file</var>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-top[:<var>stream_specifier</var>] <var>n</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>top=1/bottom=0/auto=-1 field first
|
|
</p></dd>
|
|
<dt> ‘<samp>-dc <var>precision</var></samp>’</dt>
|
|
<dd><p>Intra_dc_precision.
|
|
</p></dd>
|
|
<dt> ‘<samp>-vtag <var>fourcc/tag</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Force video tag/fourcc. This is an alias for <code>-tag:v</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-qphist (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Show QP histogram
|
|
</p></dd>
|
|
<dt> ‘<samp>-vbsf <var>bitstream_filter</var></samp>’</dt>
|
|
<dd><p>Deprecated see -bsf
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-force_key_frames[:<var>stream_specifier</var>] <var>time</var>[,<var>time</var>...] (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dt> ‘<samp>-force_key_frames[:<var>stream_specifier</var>] expr:<var>expr</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Force key frames at the specified timestamps, more precisely at the first
|
|
frames after each specified time.
|
|
</p>
|
|
<p>If the argument is prefixed with <code>expr:</code>, the string <var>expr</var>
|
|
is interpreted like an expression and is evaluated for each frame. A
|
|
key frame is forced in case the evaluation is non-zero.
|
|
</p>
|
|
<p>If one of the times is "<code>chapters</code>[<var>delta</var>]", it is expanded into
|
|
the time of the beginning of all chapters in the file, shifted by
|
|
<var>delta</var>, expressed as a time in seconds.
|
|
This option can be useful to ensure that a seek point is present at a
|
|
chapter mark or any other designated place in the output file.
|
|
</p>
|
|
<p>For example, to insert a key frame at 5 minutes, plus key frames 0.1 second
|
|
before the beginning of every chapter:
|
|
</p><table><tr><td> </td><td><pre class="example">-force_key_frames 0:05:00,chapters-0.1
|
|
</pre></td></tr></table>
|
|
|
|
<p>The expression in <var>expr</var> can contain the following constants:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>the number of current processed frame, starting from 0
|
|
</p></dd>
|
|
<dt> ‘<samp>n_forced</samp>’</dt>
|
|
<dd><p>the number of forced frames
|
|
</p></dd>
|
|
<dt> ‘<samp>prev_forced_n</samp>’</dt>
|
|
<dd><p>the number of the previous forced frame, it is <code>NAN</code> when no
|
|
keyframe was forced yet
|
|
</p></dd>
|
|
<dt> ‘<samp>prev_forced_t</samp>’</dt>
|
|
<dd><p>the time of the previous forced frame, it is <code>NAN</code> when no
|
|
keyframe was forced yet
|
|
</p></dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>the time of the current processed frame
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example to force a key frame every 5 seconds, you can specify:
|
|
</p><table><tr><td> </td><td><pre class="example">-force_key_frames expr:gte(t,n_forced*5)
|
|
</pre></td></tr></table>
|
|
|
|
<p>To force a key frame 5 seconds after the time of the last forced one,
|
|
starting from second 13:
|
|
</p><table><tr><td> </td><td><pre class="example">-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that forcing too many keyframes is very harmful for the lookahead
|
|
algorithms of certain encoders: using fixed-GOP options or similar
|
|
would be more efficient.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-copyinkf[:<var>stream_specifier</var>] (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>When doing stream copy, copy also non-key frames found at the
|
|
beginning.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-hwaccel[:<var>stream_specifier</var>] <var>hwaccel</var> (<em>input,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Use hardware acceleration to decode the matching stream(s). The allowed values
|
|
of <var>hwaccel</var> are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Do not use any hardware acceleration (the default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Automatically select the hardware acceleration method.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>vdpau</samp>’</dt>
|
|
<dd><p>Use VDPAU (Video Decode and Presentation API for Unix) hardware acceleration.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>This option has no effect if the selected hwaccel is not available or not
|
|
supported by the chosen decoder.
|
|
</p>
|
|
<p>Note that most acceleration methods are intended for playback and will not be
|
|
faster than software decoding on modern CPUs. Additionally, <code>ffmpeg</code>
|
|
will usually need to copy the decoded frames from the GPU memory into the system
|
|
memory, resulting in further performance loss. This option is thus mainly
|
|
useful for testing.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-hwaccel_device[:<var>stream_specifier</var>] <var>hwaccel_device</var> (<em>input,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Select a device to use for hardware acceleration.
|
|
</p>
|
|
<p>This option only makes sense when the ‘<samp>-hwaccel</samp>’ option is also
|
|
specified. Its exact meaning depends on the specific hardware acceleration
|
|
method chosen.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>vdpau</samp>’</dt>
|
|
<dd><p>For VDPAU, this option specifies the X11 display/screen to use. If this option
|
|
is not specified, the value of the <var>DISPLAY</var> environment variable is used
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Audio-Options"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Audio-Options">5.7 Audio Options</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-aframes <var>number</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the number of audio frames to record. This is an alias for <code>-frames:a</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-ar[:<var>stream_specifier</var>] <var>freq</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set the audio sampling frequency. For output streams it is set by
|
|
default to the frequency of the corresponding input stream. For input
|
|
streams this option only makes sense for audio grabbing devices and raw
|
|
demuxers and is mapped to the corresponding demuxer options.
|
|
</p></dd>
|
|
<dt> ‘<samp>-aq <var>q</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the audio quality (codec-specific, VBR). This is an alias for -q:a.
|
|
</p></dd>
|
|
<dt> ‘<samp>-ac[:<var>stream_specifier</var>] <var>channels</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set the number of audio channels. For output streams it is set by
|
|
default to the number of input audio channels. For input streams
|
|
this option only makes sense for audio grabbing devices and raw demuxers
|
|
and is mapped to the corresponding demuxer options.
|
|
</p></dd>
|
|
<dt> ‘<samp>-an (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Disable audio recording.
|
|
</p></dd>
|
|
<dt> ‘<samp>-acodec <var>codec</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Set the audio codec. This is an alias for <code>-codec:a</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-sample_fmt[:<var>stream_specifier</var>] <var>sample_fmt</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set the audio sample format. Use <code>-sample_fmts</code> to get a list
|
|
of supported sample formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-af <var>filtergraph</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
|
|
filter the stream.
|
|
</p>
|
|
<p>This is an alias for <code>-filter:a</code>, see the <a href="#filter_005foption">-filter option</a>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Advanced-Audio-options_003a"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-Audio-options_003a">5.8 Advanced Audio options:</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-atag <var>fourcc/tag</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Force audio tag/fourcc. This is an alias for <code>-tag:a</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-absf <var>bitstream_filter</var></samp>’</dt>
|
|
<dd><p>Deprecated, see -bsf
|
|
</p></dd>
|
|
<dt> ‘<samp>-guess_layout_max <var>channels</var> (<em>input,per-stream</em>)</samp>’</dt>
|
|
<dd><p>If some input channel layout is not known, try to guess only if it
|
|
corresponds to at most the specified number of channels. For example, 2
|
|
tells to <code>ffmpeg</code> to recognize 1 channel as mono and 2 channels as
|
|
stereo but not 6 channels as 5.1. The default is to always try to guess. Use
|
|
0 to disable all guessing.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Subtitle-options_003a"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Subtitle-options_003a">5.9 Subtitle options:</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-scodec <var>codec</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Set the subtitle codec. This is an alias for <code>-codec:s</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>-sn (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Disable subtitle recording.
|
|
</p></dd>
|
|
<dt> ‘<samp>-sbsf <var>bitstream_filter</var></samp>’</dt>
|
|
<dd><p>Deprecated, see -bsf
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Advanced-Subtitle-options_003a"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-Subtitle-options_003a">5.10 Advanced Subtitle options:</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-fix_sub_duration</samp>’</dt>
|
|
<dd><p>Fix subtitles durations. For each subtitle, wait for the next packet in the
|
|
same stream and adjust the duration of the first to avoid overlap. This is
|
|
necessary with some subtitles codecs, especially DVB subtitles, because the
|
|
duration in the original packet is only a rough estimate and the end is
|
|
actually marked by an empty subtitle frame. Failing to use this option when
|
|
necessary can result in exaggerated durations or muxing failures due to
|
|
non-monotonic timestamps.
|
|
</p>
|
|
<p>Note that this option will delay the output of all data until the next
|
|
subtitle packet is decoded: it may increase memory consumption and latency a
|
|
lot.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-canvas_size <var>size</var></samp>’</dt>
|
|
<dd><p>Set the size of the canvas used to render subtitles.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Advanced-options"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-options">5.11 Advanced options</a></h2>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-map [-]<var>input_file_id</var>[:<var>stream_specifier</var>][,<var>sync_file_id</var>[:<var>stream_specifier</var>]] | <var>[linklabel]</var> (<em>output</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Designate one or more input streams as a source for the output file. Each input
|
|
stream is identified by the input file index <var>input_file_id</var> and
|
|
the input stream index <var>input_stream_id</var> within the input
|
|
file. Both indices start at 0. If specified,
|
|
<var>sync_file_id</var>:<var>stream_specifier</var> sets which input stream
|
|
is used as a presentation sync reference.
|
|
</p>
|
|
<p>The first <code>-map</code> option on the command line specifies the
|
|
source for output stream 0, the second <code>-map</code> option specifies
|
|
the source for output stream 1, etc.
|
|
</p>
|
|
<p>A <code>-</code> character before the stream identifier creates a "negative" mapping.
|
|
It disables matching streams from already created mappings.
|
|
</p>
|
|
<p>An alternative <var>[linklabel]</var> form will map outputs from complex filter
|
|
graphs (see the ‘<samp>-filter_complex</samp>’ option) to the output file.
|
|
<var>linklabel</var> must correspond to a defined output link label in the graph.
|
|
</p>
|
|
<p>For example, to map ALL streams from the first input file to output
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0 output
|
|
</pre></td></tr></table>
|
|
|
|
<p>For example, if you have two audio streams in the first input file,
|
|
these streams are identified by "0:0" and "0:1". You can use
|
|
<code>-map</code> to select which streams to place in an output file. For
|
|
example:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0:1 out.wav
|
|
</pre></td></tr></table>
|
|
<p>will map the input stream in ‘<tt>INPUT</tt>’ identified by "0:1" to
|
|
the (single) output stream in ‘<tt>out.wav</tt>’.
|
|
</p>
|
|
<p>For example, to select the stream with index 2 from input file
|
|
‘<tt>a.mov</tt>’ (specified by the identifier "0:2"), and stream with
|
|
index 6 from input ‘<tt>b.mov</tt>’ (specified by the identifier "1:6"),
|
|
and copy them to the output file ‘<tt>out.mov</tt>’:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
|
|
</pre></td></tr></table>
|
|
|
|
<p>To select all video and the third audio stream from an input file:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>To map all the streams except the second audio, use negative mappings
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that using this option disables the default mappings for this output file.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-map_channel [<var>input_file_id</var>.<var>stream_specifier</var>.<var>channel_id</var>|-1][:<var>output_file_id</var>.<var>stream_specifier</var>]</samp>’</dt>
|
|
<dd><p>Map an audio channel from a given input to an output. If
|
|
<var>output_file_id</var>.<var>stream_specifier</var> is not set, the audio channel will
|
|
be mapped on all the audio streams.
|
|
</p>
|
|
<p>Using "-1" instead of
|
|
<var>input_file_id</var>.<var>stream_specifier</var>.<var>channel_id</var> will map a muted
|
|
channel.
|
|
</p>
|
|
<p>For example, assuming <var>INPUT</var> is a stereo audio file, you can switch the
|
|
two audio channels with the following command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map_channel 0.0.1 -map_channel 0.0.0 OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>If you want to mute the first channel and keep the second:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map_channel -1 -map_channel 0.0.1 OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>The order of the "-map_channel" option specifies the order of the channels in
|
|
the output stream. The output channel layout is guessed from the number of
|
|
channels mapped (mono if one "-map_channel", stereo if two, etc.). Using "-ac"
|
|
in combination of "-map_channel" makes the channel gain levels to be updated if
|
|
input and output channel layouts don’t match (for instance two "-map_channel"
|
|
options and "-ac 6").
|
|
</p>
|
|
<p>You can also extract each channel of an input to specific outputs; the following
|
|
command extracts two channels of the <var>INPUT</var> audio stream (file 0, stream 0)
|
|
to the respective <var>OUTPUT_CH0</var> and <var>OUTPUT_CH1</var> outputs:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map_channel 0.0.0 OUTPUT_CH0 -map_channel 0.0.1 OUTPUT_CH1
|
|
</pre></td></tr></table>
|
|
|
|
<p>The following example splits the channels of a stereo input into two separate
|
|
streams, which are put into the same output file:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i stereo.wav -map 0:0 -map 0:0 -map_channel 0.0.0:0.0 -map_channel 0.0.1:0.1 -y out.ogg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that currently each output stream can only contain channels from a single
|
|
input stream; you can’t for example use "-map_channel" to pick multiple input
|
|
audio channels contained in different streams (from the same or different files)
|
|
and merge them into a single output stream. It is therefore not currently
|
|
possible, for example, to turn two separate mono streams into a single stereo
|
|
stream. However splitting a stereo stream into two single channel mono streams
|
|
is possible.
|
|
</p>
|
|
<p>If you need this feature, a possible workaround is to use the <em>amerge</em>
|
|
filter. For example, if you need to merge a media (here ‘<tt>input.mkv</tt>’) with 2
|
|
mono audio streams into one single stereo channel audio stream (and keep the
|
|
video stream), you can use the following command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-map_metadata[:<var>metadata_spec_out</var>] <var>infile</var>[:<var>metadata_spec_in</var>] (<em>output,per-metadata</em>)</samp>’</dt>
|
|
<dd><p>Set metadata information of the next output file from <var>infile</var>. Note that
|
|
those are file indices (zero-based), not filenames.
|
|
Optional <var>metadata_spec_in/out</var> parameters specify, which metadata to copy.
|
|
A metadata specifier can have the following forms:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp><var>g</var></samp>’</dt>
|
|
<dd><p>global metadata, i.e. metadata that applies to the whole file
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><var>s</var>[:<var>stream_spec</var>]</samp>’</dt>
|
|
<dd><p>per-stream metadata. <var>stream_spec</var> is a stream specifier as described
|
|
in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. In an input metadata specifier, the first
|
|
matching stream is copied from. In an output metadata specifier, all matching
|
|
streams are copied to.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><var>c</var>:<var>chapter_index</var></samp>’</dt>
|
|
<dd><p>per-chapter metadata. <var>chapter_index</var> is the zero-based chapter index.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><var>p</var>:<var>program_index</var></samp>’</dt>
|
|
<dd><p>per-program metadata. <var>program_index</var> is the zero-based program index.
|
|
</p></dd>
|
|
</dl>
|
|
<p>If metadata specifier is omitted, it defaults to global.
|
|
</p>
|
|
<p>By default, global metadata is copied from the first input file,
|
|
per-stream and per-chapter metadata is copied along with streams/chapters. These
|
|
default mappings are disabled by creating any mapping of the relevant type. A negative
|
|
file index can be used to create a dummy mapping that just disables automatic copying.
|
|
</p>
|
|
<p>For example to copy metadata from the first stream of the input file to global metadata
|
|
of the output file:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
|
|
</pre></td></tr></table>
|
|
|
|
<p>To do the reverse, i.e. copy global metadata to all audio streams:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
|
|
</pre></td></tr></table>
|
|
<p>Note that simple <code>0</code> would work as well in this example, since global
|
|
metadata is assumed by default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-map_chapters <var>input_file_index</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Copy chapters from input file with index <var>input_file_index</var> to the next
|
|
output file. If no chapter mapping is specified, then chapters are copied from
|
|
the first input file with at least one chapter. Use a negative file index to
|
|
disable any chapter copying.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-benchmark (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Show benchmarking information at the end of an encode.
|
|
Shows CPU time used and maximum memory consumption.
|
|
Maximum memory consumption is not supported on all systems,
|
|
it will usually display as 0 if not supported.
|
|
</p></dd>
|
|
<dt> ‘<samp>-benchmark_all (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Show benchmarking information during the encode.
|
|
Shows CPU time used in various steps (audio/video encode/decode).
|
|
</p></dd>
|
|
<dt> ‘<samp>-timelimit <var>duration</var> (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Exit after ffmpeg has been running for <var>duration</var> seconds.
|
|
</p></dd>
|
|
<dt> ‘<samp>-dump (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Dump each input packet to stderr.
|
|
</p></dd>
|
|
<dt> ‘<samp>-hex (<em>global</em>)</samp>’</dt>
|
|
<dd><p>When dumping packets, also dump the payload.
|
|
</p></dd>
|
|
<dt> ‘<samp>-re (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Read input at native frame rate. Mainly used to simulate a grab device.
|
|
or live input stream (e.g. when reading from a file). Should not be used
|
|
with actual grab devices or live input streams (where it can cause packet
|
|
loss).
|
|
By default <code>ffmpeg</code> attempts to read the input(s) as fast as possible.
|
|
This option will slow down the reading of the input(s) to the native frame rate
|
|
of the input(s). It is useful for real-time output (e.g. live streaming).
|
|
</p></dd>
|
|
<dt> ‘<samp>-loop_input</samp>’</dt>
|
|
<dd><p>Loop over the input stream. Currently it works only for image
|
|
streams. This option is used for automatic FFserver testing.
|
|
This option is deprecated, use -loop 1.
|
|
</p></dd>
|
|
<dt> ‘<samp>-loop_output <var>number_of_times</var></samp>’</dt>
|
|
<dd><p>Repeatedly loop output for formats that support looping such as animated GIF
|
|
(0 will loop the output infinitely).
|
|
This option is deprecated, use -loop.
|
|
</p></dd>
|
|
<dt> ‘<samp>-vsync <var>parameter</var></samp>’</dt>
|
|
<dd><p>Video sync method.
|
|
For compatibility reasons old values can be specified as numbers.
|
|
Newly added values will have to be specified as strings always.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>0, passthrough</samp>’</dt>
|
|
<dd><p>Each frame is passed with its timestamp from the demuxer to the muxer.
|
|
</p></dd>
|
|
<dt> ‘<samp>1, cfr</samp>’</dt>
|
|
<dd><p>Frames will be duplicated and dropped to achieve exactly the requested
|
|
constant frame rate.
|
|
</p></dd>
|
|
<dt> ‘<samp>2, vfr</samp>’</dt>
|
|
<dd><p>Frames are passed through with their timestamp or dropped so as to
|
|
prevent 2 frames from having the same timestamp.
|
|
</p></dd>
|
|
<dt> ‘<samp>drop</samp>’</dt>
|
|
<dd><p>As passthrough but destroys all timestamps, making the muxer generate
|
|
fresh timestamps based on frame-rate.
|
|
</p></dd>
|
|
<dt> ‘<samp>-1, auto</samp>’</dt>
|
|
<dd><p>Chooses between 1 and 2 depending on muxer capabilities. This is the
|
|
default method.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note that the timestamps may be further modified by the muxer, after this.
|
|
For example, in the case that the format option ‘<samp>avoid_negative_ts</samp>’
|
|
is enabled.
|
|
</p>
|
|
<p>With -map you can select from which stream the timestamps should be
|
|
taken. You can leave either video or audio unchanged and sync the
|
|
remaining stream(s) to the unchanged one.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-async <var>samples_per_second</var></samp>’</dt>
|
|
<dd><p>Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
|
|
the parameter is the maximum samples per second by which the audio is changed.
|
|
-async 1 is a special case where only the start of the audio stream is corrected
|
|
without any later correction.
|
|
</p>
|
|
<p>Note that the timestamps may be further modified by the muxer, after this.
|
|
For example, in the case that the format option ‘<samp>avoid_negative_ts</samp>’
|
|
is enabled.
|
|
</p>
|
|
<p>This option has been deprecated. Use the <code>aresample</code> audio filter instead.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-copyts</samp>’</dt>
|
|
<dd><p>Do not process input timestamps, but keep their values without trying
|
|
to sanitize them. In particular, do not remove the initial start time
|
|
offset value.
|
|
</p>
|
|
<p>Note that, depending on the ‘<samp>vsync</samp>’ option or on specific muxer
|
|
processing (e.g. in case the format option ‘<samp>avoid_negative_ts</samp>’
|
|
is enabled) the output timestamps may mismatch with the input
|
|
timestamps even when this option is selected.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-copytb <var>mode</var></samp>’</dt>
|
|
<dd><p>Specify how to set the encoder timebase when stream copying. <var>mode</var> is an
|
|
integer numeric value, and can assume one of the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>Use the demuxer timebase.
|
|
</p>
|
|
<p>The time base is copied to the output encoder from the corresponding input
|
|
demuxer. This is sometimes required to avoid non monotonically increasing
|
|
timestamps when copying video streams with variable frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dd><p>Use the decoder timebase.
|
|
</p>
|
|
<p>The time base is copied to the output encoder from the corresponding input
|
|
decoder.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-1</samp>’</dt>
|
|
<dd><p>Try to make the choice automatically, in order to generate a sane output.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is -1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-shortest (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Finish encoding when the shortest input stream ends.
|
|
</p></dd>
|
|
<dt> ‘<samp>-dts_delta_threshold</samp>’</dt>
|
|
<dd><p>Timestamp discontinuity delta threshold.
|
|
</p></dd>
|
|
<dt> ‘<samp>-muxdelay <var>seconds</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set the maximum demux-decode delay.
|
|
</p></dd>
|
|
<dt> ‘<samp>-muxpreload <var>seconds</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set the initial demux-decode delay.
|
|
</p></dd>
|
|
<dt> ‘<samp>-streamid <var>output-stream-index</var>:<var>new-value</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Assign a new stream-id value to an output stream. This option should be
|
|
specified prior to the output filename to which it applies.
|
|
For the situation where multiple output files exist, a streamid
|
|
may be reassigned to a different value.
|
|
</p>
|
|
<p>For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for
|
|
an output mpegts file:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-bsf[:<var>stream_specifier</var>] <var>bitstream_filters</var> (<em>output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Set bitstream filters for matching streams. <var>bitstream_filters</var> is
|
|
a comma-separated list of bitstream filters. Use the <code>-bsfs</code> option
|
|
to get the list of bitstream filters.
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
|
|
</pre></td></tr></table>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-tag[:<var>stream_specifier</var>] <var>codec_tag</var> (<em>input/output,per-stream</em>)</samp>’</dt>
|
|
<dd><p>Force a tag/fourcc for matching streams.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-timecode <var>hh</var>:<var>mm</var>:<var>ss</var>SEP<var>ff</var></samp>’</dt>
|
|
<dd><p>Specify Timecode for writing. <var>SEP</var> is ’:’ for non drop timecode and ’;’
|
|
(or ’.’) for drop.
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p><a name="filter_005fcomplex_005foption"></a>
|
|
</p></dd>
|
|
<dt> ‘<samp>-filter_complex <var>filtergraph</var> (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or
|
|
outputs. For simple graphs – those with one input and one output of the same
|
|
type – see the ‘<samp>-filter</samp>’ options. <var>filtergraph</var> is a description of
|
|
the filtergraph, as described in the “Filtergraph syntax” section of the
|
|
ffmpeg-filters manual.
|
|
</p>
|
|
<p>Input link labels must refer to input streams using the
|
|
<code>[file_index:stream_specifier]</code> syntax (i.e. the same as ‘<samp>-map</samp>’
|
|
uses). If <var>stream_specifier</var> matches multiple streams, the first one will be
|
|
used. An unlabeled input will be connected to the first unused input stream of
|
|
the matching type.
|
|
</p>
|
|
<p>Output link labels are referred to with ‘<samp>-map</samp>’. Unlabeled outputs are
|
|
added to the first output file.
|
|
</p>
|
|
<p>Note that with this option it is possible to use only lavfi sources without
|
|
normal input files.
|
|
</p>
|
|
<p>For example, to overlay an image over video
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map
|
|
'[out]' out.mkv
|
|
</pre></td></tr></table>
|
|
<p>Here <code>[0:v]</code> refers to the first video stream in the first input file,
|
|
which is linked to the first (main) input of the overlay filter. Similarly the
|
|
first video stream in the second input is linked to the second (overlay) input
|
|
of overlay.
|
|
</p>
|
|
<p>Assuming there is only one video stream in each input file, we can omit input
|
|
labels, so the above is equivalent to
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map
|
|
'[out]' out.mkv
|
|
</pre></td></tr></table>
|
|
|
|
<p>Furthermore we can omit the output label and the single output from the filter
|
|
graph will be added to the output file automatically, so we can simply write
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
|
|
</pre></td></tr></table>
|
|
|
|
<p>To generate 5 seconds of pure red video using lavfi <code>color</code> source:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-lavfi <var>filtergraph</var> (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or
|
|
outputs. Equivalent to ‘<samp>-filter_complex</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-filter_complex_script <var>filename</var> (<em>global</em>)</samp>’</dt>
|
|
<dd><p>This option is similar to ‘<samp>-filter_complex</samp>’, the only difference is that
|
|
its argument is the name of the file from which a complex filtergraph
|
|
description is to be read.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-accurate_seek (<em>input</em>)</samp>’</dt>
|
|
<dd><p>This option enables or disables accurate seeking in input files with the
|
|
‘<samp>-ss</samp>’ option. It is enabled by default, so seeking is accurate when
|
|
transcoding. Use ‘<samp>-noaccurate_seek</samp>’ to disable it, which may be useful
|
|
e.g. when copying some streams and transcoding the others.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-override_ffserver (<em>global</em>)</samp>’</dt>
|
|
<dd><p>Overrides the input specifications from <code>ffserver</code>. Using this
|
|
option you can map any input stream to <code>ffserver</code> and control
|
|
many aspects of the encoding from <code>ffmpeg</code>. Without this
|
|
option <code>ffmpeg</code> will transmit to <code>ffserver</code> what is
|
|
requested by <code>ffserver</code>.
|
|
</p>
|
|
<p>The option is intended for cases where features are needed that cannot be
|
|
specified to <code>ffserver</code> but can be to <code>ffmpeg</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>As a special exception, you can use a bitmap subtitle stream as input: it
|
|
will be converted into a video with the same size as the largest video in
|
|
the file, or 720x576 if no video is present. Note that this is an
|
|
experimental and temporary solution. It will be removed once libavfilter has
|
|
proper support for subtitles.
|
|
</p>
|
|
<p>For example, to hardcode subtitles on top of a DVB-T recording stored in
|
|
MPEG-TS format, delaying the subtitles by 1 second:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input.ts -filter_complex \
|
|
'[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \
|
|
-sn -map '#0x2dc' output.mkv
|
|
</pre></td></tr></table>
|
|
<p>(0x2d0, 0x2dc and 0x2ef are the MPEG-TS PIDs of respectively the video,
|
|
audio and subtitles streams; 0:0, 0:3 and 0:7 would have worked too)
|
|
</p>
|
|
<a name="Preset-files"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Preset-files">5.12 Preset files</a></h2>
|
|
<p>A preset file contains a sequence of <var>option</var>=<var>value</var> pairs,
|
|
one for each line, specifying a sequence of options which would be
|
|
awkward to specify on the command line. Lines starting with the hash
|
|
(’#’) character are ignored and are used to provide comments. Check
|
|
the ‘<tt>presets</tt>’ directory in the FFmpeg source tree for examples.
|
|
</p>
|
|
<p>Preset files are specified with the <code>vpre</code>, <code>apre</code>,
|
|
<code>spre</code>, and <code>fpre</code> options. The <code>fpre</code> option takes the
|
|
filename of the preset instead of a preset name as input and can be
|
|
used for any kind of codec. For the <code>vpre</code>, <code>apre</code>, and
|
|
<code>spre</code> options, the options specified in a preset file are
|
|
applied to the currently selected codec of the same type as the preset
|
|
option.
|
|
</p>
|
|
<p>The argument passed to the <code>vpre</code>, <code>apre</code>, and <code>spre</code>
|
|
preset options identifies the preset file to use according to the
|
|
following rules:
|
|
</p>
|
|
<p>First ffmpeg searches for a file named <var>arg</var>.ffpreset in the
|
|
directories ‘<tt>$FFMPEG_DATADIR</tt>’ (if set), and ‘<tt>$HOME/.ffmpeg</tt>’, and in
|
|
the datadir defined at configuration time (usually ‘<tt>PREFIX/share/ffmpeg</tt>’)
|
|
or in a ‘<tt>ffpresets</tt>’ folder along the executable on win32,
|
|
in that order. For example, if the argument is <code>libvpx-1080p</code>, it will
|
|
search for the file ‘<tt>libvpx-1080p.ffpreset</tt>’.
|
|
</p>
|
|
<p>If no such file is found, then ffmpeg will search for a file named
|
|
<var>codec_name</var>-<var>arg</var>.ffpreset in the above-mentioned
|
|
directories, where <var>codec_name</var> is the name of the codec to which
|
|
the preset file options will be applied. For example, if you select
|
|
the video codec with <code>-vcodec libvpx</code> and use <code>-vpre 1080p</code>,
|
|
then it will search for the file ‘<tt>libvpx-1080p.ffpreset</tt>’.
|
|
</p>
|
|
<a name="Tips"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Tips">6. Tips</a></h1>
|
|
|
|
<ul>
|
|
<li>
|
|
For streaming at very low bitrates, use a low frame rate
|
|
and a small GOP size. This is especially true for RealVideo where
|
|
the Linux player does not seem to be very fast, so it can miss
|
|
frames. An example is:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -g 3 -r 3 -t 10 -b:v 50k -s qcif -f rv10 /tmp/b.rm
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
The parameter ’q’ which is displayed while encoding is the current
|
|
quantizer. The value 1 indicates that a very good quality could
|
|
be achieved. The value 31 indicates the worst quality. If q=31 appears
|
|
too often, it means that the encoder cannot compress enough to meet
|
|
your bitrate. You must either increase the bitrate, decrease the
|
|
frame rate or decrease the frame size.
|
|
|
|
</li><li>
|
|
If your computer is not fast enough, you can speed up the
|
|
compression at the expense of the compression ratio. You can use
|
|
’-me zero’ to speed up motion estimation, and ’-g 0’ to disable
|
|
motion estimation completely (you have only I-frames, which means it
|
|
is about as good as JPEG compression).
|
|
|
|
</li><li>
|
|
To have very low audio bitrates, reduce the sampling frequency
|
|
(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
|
|
|
|
</li><li>
|
|
To have a constant quality (but a variable bitrate), use the option
|
|
’-qscale n’ when ’n’ is between 1 (excellent quality) and 31 (worst
|
|
quality).
|
|
|
|
</li></ul>
|
|
|
|
<a name="Examples-60"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Examples-60">7. Examples</a></h1>
|
|
|
|
<a name="Preset-files-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Preset-files-1">7.1 Preset files</a></h2>
|
|
|
|
<p>A preset file contains a sequence of <var>option=value</var> pairs, one for
|
|
each line, specifying a sequence of options which can be specified also on
|
|
the command line. Lines starting with the hash (’#’) character are ignored and
|
|
are used to provide comments. Empty lines are also ignored. Check the
|
|
‘<tt>presets</tt>’ directory in the FFmpeg source tree for examples.
|
|
</p>
|
|
<p>Preset files are specified with the <code>pre</code> option, this option takes a
|
|
preset name as input. FFmpeg searches for a file named <var>preset_name</var>.avpreset in
|
|
the directories ‘<tt>$AVCONV_DATADIR</tt>’ (if set), and ‘<tt>$HOME/.ffmpeg</tt>’, and in
|
|
the data directory defined at configuration time (usually ‘<tt>$PREFIX/share/ffmpeg</tt>’)
|
|
in that order. For example, if the argument is <code>libx264-max</code>, it will
|
|
search for the file ‘<tt>libx264-max.avpreset</tt>’.
|
|
</p>
|
|
<a name="Video-and-Audio-grabbing"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Video-and-Audio-grabbing">7.2 Video and Audio grabbing</a></h2>
|
|
|
|
<p>If you specify the input format and device then ffmpeg can grab video
|
|
and audio directly.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Or with an ALSA audio source (mono input, card id 1) instead of OSS:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that you must activate the right video source and channel before
|
|
launching ffmpeg with any TV viewer such as
|
|
<a href="http://linux.bytesex.org/xawtv/">xawtv</a> by Gerd Knorr. You also
|
|
have to set the audio recording levels correctly with a
|
|
standard mixer.
|
|
</p>
|
|
<a name="X11-grabbing"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-X11-grabbing">7.3 X11 grabbing</a></h2>
|
|
|
|
<p>Grab the X11 display with ffmpeg via
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>0.0 is display.screen number of your X11 server, same as
|
|
the DISPLAY environment variable.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>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.
|
|
</p>
|
|
<a name="Video-and-Audio-file-format-conversion"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Video-and-Audio-file-format-conversion">7.4 Video and Audio file format conversion</a></h2>
|
|
|
|
<p>Any supported file format and protocol can serve as input to ffmpeg:
|
|
</p>
|
|
<p>Examples:
|
|
</p><ul>
|
|
<li>
|
|
You can use YUV files as input:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>It will use the files:
|
|
</p><table><tr><td> </td><td><pre class="example">/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
|
|
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
|
|
</pre></td></tr></table>
|
|
|
|
<p>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 ‘<samp>-s</samp>’ option
|
|
if ffmpeg cannot guess it.
|
|
</p>
|
|
</li><li>
|
|
You can input from a raw YUV420P file:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i /tmp/test.yuv /tmp/out.avi
|
|
</pre></td></tr></table>
|
|
|
|
<p>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.
|
|
</p>
|
|
</li><li>
|
|
You can output to a raw YUV420P file:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i mydivx.avi hugefile.yuv
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
You can set several input files and output files:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Converts the audio file a.wav and the raw YUV video file a.yuv
|
|
to MPEG file a.mpg.
|
|
</p>
|
|
</li><li>
|
|
You can also do audio and video conversions at the same time:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
|
|
</pre></td></tr></table>
|
|
|
|
<p>Converts a.wav to MPEG audio at 22050 Hz sample rate.
|
|
</p>
|
|
</li><li>
|
|
You can encode to several formats at the same time and define a
|
|
mapping from input stream to output streams:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
|
|
</pre></td></tr></table>
|
|
|
|
<p>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.
|
|
</p>
|
|
</li><li>
|
|
You can transcode decrypted VOBs:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
|
|
</pre></td></tr></table>
|
|
|
|
<p>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</code> to configure.
|
|
The mapping is particularly useful for DVD transcoding
|
|
to get the desired audio language.
|
|
</p>
|
|
<p>NOTE: To see the supported input formats, use <code>ffmpeg -formats</code>.
|
|
</p>
|
|
</li><li>
|
|
You can extract images from a video, or create a video from many images:
|
|
|
|
<p>For extracting images from a video:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>This will extract one video frame per second from the video and will
|
|
output them in files named ‘<tt>foo-001.jpeg</tt>’, ‘<tt>foo-002.jpeg</tt>’,
|
|
etc. Images will be rescaled to fit the new WxH values.
|
|
</p>
|
|
<p>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.
|
|
</p>
|
|
<p>For creating a video from many images:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
|
|
</pre></td></tr></table>
|
|
|
|
<p>The syntax <code>foo-%03d.jpeg</code> 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.
|
|
</p>
|
|
<p>When importing an image sequence, -i also supports expanding
|
|
shell-like wildcard patterns (globbing) internally, by selecting the
|
|
image2-specific <code>-pattern_type glob</code> option.
|
|
</p>
|
|
<p>For example, for creating a video from filenames matching the glob pattern
|
|
<code>foo-*.jpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f image2 -pattern_type glob -i 'foo-*.jpeg' -r 12 -s WxH foo.avi
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
You can put many streams of the same type in the output:
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i test1.avi -i test2.avi -map 0:3 -map 0:2 -map 0:1 -map 0:0 -c copy test12.nut
|
|
</pre></td></tr></table>
|
|
|
|
<p>The resulting output file ‘<tt>test12.avi</tt>’ will contain first four streams from
|
|
the input file in reverse order.
|
|
</p>
|
|
</li><li>
|
|
To force CBR video output:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
The four options lmin, lmax, mblmin and mblmax use ’lambda’ units,
|
|
but you may use the QP2LAMBDA constant to easily convert from ’q’ units:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="Syntax-2"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Syntax-2">8. Syntax</a></h1>
|
|
|
|
<p>This section documents the syntax and formats employed by the FFmpeg
|
|
libraries and tools.
|
|
</p>
|
|
<p><a name="quoting_005fand_005fescaping"></a>
|
|
</p><a name="Quoting-and-escaping"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Quoting-and-escaping">8.1 Quoting and escaping</a></h2>
|
|
|
|
<p>FFmpeg adopts the following quoting and escaping mechanism, unless
|
|
explicitly specified. The following rules are applied:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<code>'</code> and <code>\</code> are special characters (respectively used for
|
|
quoting and escaping). In addition to them, there might be other
|
|
special characters depending on the specific syntax where the escaping
|
|
and quoting are employed.
|
|
|
|
</li><li>
|
|
A special character is escaped by prefixing it with a ’\’.
|
|
|
|
</li><li>
|
|
All characters enclosed between ” are included literally in the
|
|
parsed string. The quote character <code>'</code> itself cannot be quoted,
|
|
so you may need to close the quote and escape it.
|
|
|
|
</li><li>
|
|
Leading and trailing whitespaces, unless escaped or quoted, are
|
|
removed from the parsed string.
|
|
</li></ul>
|
|
|
|
<p>Note that you may need to add a second level of escaping when using
|
|
the command line or a script, which depends on the syntax of the
|
|
adopted shell language.
|
|
</p>
|
|
<p>The function <code>av_get_token</code> defined in
|
|
‘<tt>libavutil/avstring.h</tt>’ can be used to parse a token quoted or
|
|
escaped according to the rules defined above.
|
|
</p>
|
|
<p>The tool ‘<tt>tools/ffescape</tt>’ in the FFmpeg source tree can be used
|
|
to automatically quote or escape a string in a script.
|
|
</p>
|
|
<a name="Examples-70"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-70">8.1.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Escape the string <code>Crime d'Amour</code> containing the <code>'</code> special
|
|
character:
|
|
<table><tr><td> </td><td><pre class="example">Crime d\'Amour
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
The string above contains a quote, so the <code>'</code> needs to be escaped
|
|
when quoting it:
|
|
<table><tr><td> </td><td><pre class="example">'Crime d'\''Amour'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Include leading or trailing whitespaces using quoting:
|
|
<table><tr><td> </td><td><pre class="example">' this string starts and ends with whitespaces '
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Escaping and quoting can be mixed together:
|
|
<table><tr><td> </td><td><pre class="example">' The string '\'string\'' is a string '
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To include a literal <code>\</code> you can use either escaping or quoting:
|
|
<table><tr><td> </td><td><pre class="example">'c:\foo' can be written as c:\\foo
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="date-syntax"></a>
|
|
</p><a name="Date"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Date">8.2 Date</a></h2>
|
|
|
|
<p>The accepted syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
|
|
now
|
|
</pre></td></tr></table>
|
|
|
|
<p>If the value is "now" it takes the current time.
|
|
</p>
|
|
<p>Time is local time unless Z is appended, in which case it is
|
|
interpreted as UTC.
|
|
If the year-month-day part is not specified it takes the current
|
|
year-month-day.
|
|
</p>
|
|
<p><a name="time-duration-syntax"></a>
|
|
</p><a name="Time-duration"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Time-duration">8.3 Time duration</a></h2>
|
|
|
|
<p>There are two accepted syntaxes for expressing time duration.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">[-][<var>HH</var>:]<var>MM</var>:<var>SS</var>[.<var>m</var>...]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>HH</var> expresses the number of hours, <var>MM</var> the number of minutes
|
|
for a maximum of 2 digits, and <var>SS</var> the number of seconds for a
|
|
maximum of 2 digits. The <var>m</var> at the end expresses decimal value for
|
|
<var>SS</var>.
|
|
</p>
|
|
<p><em>or</em>
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">[-]<var>S</var>+[.<var>m</var>...]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>S</var> expresses the number of seconds, with the optional decimal part
|
|
<var>m</var>.
|
|
</p>
|
|
<p>In both expressions, the optional ‘<samp>-</samp>’ indicates negative duration.
|
|
</p>
|
|
<a name="Examples-45"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-45">8.3.1 Examples</a></h3>
|
|
|
|
<p>The following examples are all valid time duration:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>55</samp>’</dt>
|
|
<dd><p>55 seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>12:03:45</samp>’</dt>
|
|
<dd><p>12 hours, 03 minutes and 45 seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>23.189</samp>’</dt>
|
|
<dd><p>23.189 seconds
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="video-size-syntax"></a>
|
|
</p><a name="Video-size"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Video-size">8.4 Video size</a></h2>
|
|
<p>Specify the size of the sourced video, it may be a string of the form
|
|
<var>width</var>x<var>height</var>, or the name of a size abbreviation.
|
|
</p>
|
|
<p>The following abbreviations are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>ntsc</samp>’</dt>
|
|
<dd><p>720x480
|
|
</p></dd>
|
|
<dt> ‘<samp>pal</samp>’</dt>
|
|
<dd><p>720x576
|
|
</p></dd>
|
|
<dt> ‘<samp>qntsc</samp>’</dt>
|
|
<dd><p>352x240
|
|
</p></dd>
|
|
<dt> ‘<samp>qpal</samp>’</dt>
|
|
<dd><p>352x288
|
|
</p></dd>
|
|
<dt> ‘<samp>sntsc</samp>’</dt>
|
|
<dd><p>640x480
|
|
</p></dd>
|
|
<dt> ‘<samp>spal</samp>’</dt>
|
|
<dd><p>768x576
|
|
</p></dd>
|
|
<dt> ‘<samp>film</samp>’</dt>
|
|
<dd><p>352x240
|
|
</p></dd>
|
|
<dt> ‘<samp>ntsc-film</samp>’</dt>
|
|
<dd><p>352x240
|
|
</p></dd>
|
|
<dt> ‘<samp>sqcif</samp>’</dt>
|
|
<dd><p>128x96
|
|
</p></dd>
|
|
<dt> ‘<samp>qcif</samp>’</dt>
|
|
<dd><p>176x144
|
|
</p></dd>
|
|
<dt> ‘<samp>cif</samp>’</dt>
|
|
<dd><p>352x288
|
|
</p></dd>
|
|
<dt> ‘<samp>4cif</samp>’</dt>
|
|
<dd><p>704x576
|
|
</p></dd>
|
|
<dt> ‘<samp>16cif</samp>’</dt>
|
|
<dd><p>1408x1152
|
|
</p></dd>
|
|
<dt> ‘<samp>qqvga</samp>’</dt>
|
|
<dd><p>160x120
|
|
</p></dd>
|
|
<dt> ‘<samp>qvga</samp>’</dt>
|
|
<dd><p>320x240
|
|
</p></dd>
|
|
<dt> ‘<samp>vga</samp>’</dt>
|
|
<dd><p>640x480
|
|
</p></dd>
|
|
<dt> ‘<samp>svga</samp>’</dt>
|
|
<dd><p>800x600
|
|
</p></dd>
|
|
<dt> ‘<samp>xga</samp>’</dt>
|
|
<dd><p>1024x768
|
|
</p></dd>
|
|
<dt> ‘<samp>uxga</samp>’</dt>
|
|
<dd><p>1600x1200
|
|
</p></dd>
|
|
<dt> ‘<samp>qxga</samp>’</dt>
|
|
<dd><p>2048x1536
|
|
</p></dd>
|
|
<dt> ‘<samp>sxga</samp>’</dt>
|
|
<dd><p>1280x1024
|
|
</p></dd>
|
|
<dt> ‘<samp>qsxga</samp>’</dt>
|
|
<dd><p>2560x2048
|
|
</p></dd>
|
|
<dt> ‘<samp>hsxga</samp>’</dt>
|
|
<dd><p>5120x4096
|
|
</p></dd>
|
|
<dt> ‘<samp>wvga</samp>’</dt>
|
|
<dd><p>852x480
|
|
</p></dd>
|
|
<dt> ‘<samp>wxga</samp>’</dt>
|
|
<dd><p>1366x768
|
|
</p></dd>
|
|
<dt> ‘<samp>wsxga</samp>’</dt>
|
|
<dd><p>1600x1024
|
|
</p></dd>
|
|
<dt> ‘<samp>wuxga</samp>’</dt>
|
|
<dd><p>1920x1200
|
|
</p></dd>
|
|
<dt> ‘<samp>woxga</samp>’</dt>
|
|
<dd><p>2560x1600
|
|
</p></dd>
|
|
<dt> ‘<samp>wqsxga</samp>’</dt>
|
|
<dd><p>3200x2048
|
|
</p></dd>
|
|
<dt> ‘<samp>wquxga</samp>’</dt>
|
|
<dd><p>3840x2400
|
|
</p></dd>
|
|
<dt> ‘<samp>whsxga</samp>’</dt>
|
|
<dd><p>6400x4096
|
|
</p></dd>
|
|
<dt> ‘<samp>whuxga</samp>’</dt>
|
|
<dd><p>7680x4800
|
|
</p></dd>
|
|
<dt> ‘<samp>cga</samp>’</dt>
|
|
<dd><p>320x200
|
|
</p></dd>
|
|
<dt> ‘<samp>ega</samp>’</dt>
|
|
<dd><p>640x350
|
|
</p></dd>
|
|
<dt> ‘<samp>hd480</samp>’</dt>
|
|
<dd><p>852x480
|
|
</p></dd>
|
|
<dt> ‘<samp>hd720</samp>’</dt>
|
|
<dd><p>1280x720
|
|
</p></dd>
|
|
<dt> ‘<samp>hd1080</samp>’</dt>
|
|
<dd><p>1920x1080
|
|
</p></dd>
|
|
<dt> ‘<samp>2k</samp>’</dt>
|
|
<dd><p>2048x1080
|
|
</p></dd>
|
|
<dt> ‘<samp>2kflat</samp>’</dt>
|
|
<dd><p>1998x1080
|
|
</p></dd>
|
|
<dt> ‘<samp>2kscope</samp>’</dt>
|
|
<dd><p>2048x858
|
|
</p></dd>
|
|
<dt> ‘<samp>4k</samp>’</dt>
|
|
<dd><p>4096x2160
|
|
</p></dd>
|
|
<dt> ‘<samp>4kflat</samp>’</dt>
|
|
<dd><p>3996x2160
|
|
</p></dd>
|
|
<dt> ‘<samp>4kscope</samp>’</dt>
|
|
<dd><p>4096x1716
|
|
</p></dd>
|
|
<dt> ‘<samp>nhd</samp>’</dt>
|
|
<dd><p>640x360
|
|
</p></dd>
|
|
<dt> ‘<samp>hqvga</samp>’</dt>
|
|
<dd><p>240x160
|
|
</p></dd>
|
|
<dt> ‘<samp>wqvga</samp>’</dt>
|
|
<dd><p>400x240
|
|
</p></dd>
|
|
<dt> ‘<samp>fwqvga</samp>’</dt>
|
|
<dd><p>432x240
|
|
</p></dd>
|
|
<dt> ‘<samp>hvga</samp>’</dt>
|
|
<dd><p>480x320
|
|
</p></dd>
|
|
<dt> ‘<samp>qhd</samp>’</dt>
|
|
<dd><p>960x540
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="video-rate-syntax"></a>
|
|
</p><a name="Video-rate"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Video-rate">8.5 Video rate</a></h2>
|
|
|
|
<p>Specify the frame rate of a video, expressed as the number of frames
|
|
generated per second. It has to be a string in the format
|
|
<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
|
|
number or a valid video frame rate abbreviation.
|
|
</p>
|
|
<p>The following abbreviations are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>ntsc</samp>’</dt>
|
|
<dd><p>30000/1001
|
|
</p></dd>
|
|
<dt> ‘<samp>pal</samp>’</dt>
|
|
<dd><p>25/1
|
|
</p></dd>
|
|
<dt> ‘<samp>qntsc</samp>’</dt>
|
|
<dd><p>30000/1001
|
|
</p></dd>
|
|
<dt> ‘<samp>qpal</samp>’</dt>
|
|
<dd><p>25/1
|
|
</p></dd>
|
|
<dt> ‘<samp>sntsc</samp>’</dt>
|
|
<dd><p>30000/1001
|
|
</p></dd>
|
|
<dt> ‘<samp>spal</samp>’</dt>
|
|
<dd><p>25/1
|
|
</p></dd>
|
|
<dt> ‘<samp>film</samp>’</dt>
|
|
<dd><p>24/1
|
|
</p></dd>
|
|
<dt> ‘<samp>ntsc-film</samp>’</dt>
|
|
<dd><p>24000/1001
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="ratio-syntax"></a>
|
|
</p><a name="Ratio"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Ratio">8.6 Ratio</a></h2>
|
|
|
|
<p>A ratio can be expressed as an expression, or in the form
|
|
<var>numerator</var>:<var>denominator</var>.
|
|
</p>
|
|
<p>Note that a ratio with infinite (1/0) or negative value is
|
|
considered valid, so you should check on the returned value if you
|
|
want to exclude those values.
|
|
</p>
|
|
<p>The undefined value can be expressed using the "0:0" string.
|
|
</p>
|
|
<p><a name="color-syntax"></a>
|
|
</p><a name="Color"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Color">8.7 Color</a></h2>
|
|
|
|
<p>It can be the name of a color as defined below (case insensitive match) or a
|
|
<code>[0x|#]RRGGBB[AA]</code> sequence, possibly followed by @ and a string
|
|
representing the alpha component.
|
|
</p>
|
|
<p>The alpha component may be a string composed by "0x" followed by an
|
|
hexadecimal number or a decimal number between 0.0 and 1.0, which
|
|
represents the opacity value (‘<samp>0x00</samp>’ or ‘<samp>0.0</samp>’ means completely
|
|
transparent, ‘<samp>0xff</samp>’ or ‘<samp>1.0</samp>’ completely opaque). If the alpha
|
|
component is not specified then ‘<samp>0xff</samp>’ is assumed.
|
|
</p>
|
|
<p>The string ‘<samp>random</samp>’ will result in a random color.
|
|
</p>
|
|
<p>The following names of colors are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>AliceBlue</samp>’</dt>
|
|
<dd><p>0xF0F8FF
|
|
</p></dd>
|
|
<dt> ‘<samp>AntiqueWhite</samp>’</dt>
|
|
<dd><p>0xFAEBD7
|
|
</p></dd>
|
|
<dt> ‘<samp>Aqua</samp>’</dt>
|
|
<dd><p>0x00FFFF
|
|
</p></dd>
|
|
<dt> ‘<samp>Aquamarine</samp>’</dt>
|
|
<dd><p>0x7FFFD4
|
|
</p></dd>
|
|
<dt> ‘<samp>Azure</samp>’</dt>
|
|
<dd><p>0xF0FFFF
|
|
</p></dd>
|
|
<dt> ‘<samp>Beige</samp>’</dt>
|
|
<dd><p>0xF5F5DC
|
|
</p></dd>
|
|
<dt> ‘<samp>Bisque</samp>’</dt>
|
|
<dd><p>0xFFE4C4
|
|
</p></dd>
|
|
<dt> ‘<samp>Black</samp>’</dt>
|
|
<dd><p>0x000000
|
|
</p></dd>
|
|
<dt> ‘<samp>BlanchedAlmond</samp>’</dt>
|
|
<dd><p>0xFFEBCD
|
|
</p></dd>
|
|
<dt> ‘<samp>Blue</samp>’</dt>
|
|
<dd><p>0x0000FF
|
|
</p></dd>
|
|
<dt> ‘<samp>BlueViolet</samp>’</dt>
|
|
<dd><p>0x8A2BE2
|
|
</p></dd>
|
|
<dt> ‘<samp>Brown</samp>’</dt>
|
|
<dd><p>0xA52A2A
|
|
</p></dd>
|
|
<dt> ‘<samp>BurlyWood</samp>’</dt>
|
|
<dd><p>0xDEB887
|
|
</p></dd>
|
|
<dt> ‘<samp>CadetBlue</samp>’</dt>
|
|
<dd><p>0x5F9EA0
|
|
</p></dd>
|
|
<dt> ‘<samp>Chartreuse</samp>’</dt>
|
|
<dd><p>0x7FFF00
|
|
</p></dd>
|
|
<dt> ‘<samp>Chocolate</samp>’</dt>
|
|
<dd><p>0xD2691E
|
|
</p></dd>
|
|
<dt> ‘<samp>Coral</samp>’</dt>
|
|
<dd><p>0xFF7F50
|
|
</p></dd>
|
|
<dt> ‘<samp>CornflowerBlue</samp>’</dt>
|
|
<dd><p>0x6495ED
|
|
</p></dd>
|
|
<dt> ‘<samp>Cornsilk</samp>’</dt>
|
|
<dd><p>0xFFF8DC
|
|
</p></dd>
|
|
<dt> ‘<samp>Crimson</samp>’</dt>
|
|
<dd><p>0xDC143C
|
|
</p></dd>
|
|
<dt> ‘<samp>Cyan</samp>’</dt>
|
|
<dd><p>0x00FFFF
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkBlue</samp>’</dt>
|
|
<dd><p>0x00008B
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkCyan</samp>’</dt>
|
|
<dd><p>0x008B8B
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkGoldenRod</samp>’</dt>
|
|
<dd><p>0xB8860B
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkGray</samp>’</dt>
|
|
<dd><p>0xA9A9A9
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkGreen</samp>’</dt>
|
|
<dd><p>0x006400
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkKhaki</samp>’</dt>
|
|
<dd><p>0xBDB76B
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkMagenta</samp>’</dt>
|
|
<dd><p>0x8B008B
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkOliveGreen</samp>’</dt>
|
|
<dd><p>0x556B2F
|
|
</p></dd>
|
|
<dt> ‘<samp>Darkorange</samp>’</dt>
|
|
<dd><p>0xFF8C00
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkOrchid</samp>’</dt>
|
|
<dd><p>0x9932CC
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkRed</samp>’</dt>
|
|
<dd><p>0x8B0000
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkSalmon</samp>’</dt>
|
|
<dd><p>0xE9967A
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkSeaGreen</samp>’</dt>
|
|
<dd><p>0x8FBC8F
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkSlateBlue</samp>’</dt>
|
|
<dd><p>0x483D8B
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkSlateGray</samp>’</dt>
|
|
<dd><p>0x2F4F4F
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkTurquoise</samp>’</dt>
|
|
<dd><p>0x00CED1
|
|
</p></dd>
|
|
<dt> ‘<samp>DarkViolet</samp>’</dt>
|
|
<dd><p>0x9400D3
|
|
</p></dd>
|
|
<dt> ‘<samp>DeepPink</samp>’</dt>
|
|
<dd><p>0xFF1493
|
|
</p></dd>
|
|
<dt> ‘<samp>DeepSkyBlue</samp>’</dt>
|
|
<dd><p>0x00BFFF
|
|
</p></dd>
|
|
<dt> ‘<samp>DimGray</samp>’</dt>
|
|
<dd><p>0x696969
|
|
</p></dd>
|
|
<dt> ‘<samp>DodgerBlue</samp>’</dt>
|
|
<dd><p>0x1E90FF
|
|
</p></dd>
|
|
<dt> ‘<samp>FireBrick</samp>’</dt>
|
|
<dd><p>0xB22222
|
|
</p></dd>
|
|
<dt> ‘<samp>FloralWhite</samp>’</dt>
|
|
<dd><p>0xFFFAF0
|
|
</p></dd>
|
|
<dt> ‘<samp>ForestGreen</samp>’</dt>
|
|
<dd><p>0x228B22
|
|
</p></dd>
|
|
<dt> ‘<samp>Fuchsia</samp>’</dt>
|
|
<dd><p>0xFF00FF
|
|
</p></dd>
|
|
<dt> ‘<samp>Gainsboro</samp>’</dt>
|
|
<dd><p>0xDCDCDC
|
|
</p></dd>
|
|
<dt> ‘<samp>GhostWhite</samp>’</dt>
|
|
<dd><p>0xF8F8FF
|
|
</p></dd>
|
|
<dt> ‘<samp>Gold</samp>’</dt>
|
|
<dd><p>0xFFD700
|
|
</p></dd>
|
|
<dt> ‘<samp>GoldenRod</samp>’</dt>
|
|
<dd><p>0xDAA520
|
|
</p></dd>
|
|
<dt> ‘<samp>Gray</samp>’</dt>
|
|
<dd><p>0x808080
|
|
</p></dd>
|
|
<dt> ‘<samp>Green</samp>’</dt>
|
|
<dd><p>0x008000
|
|
</p></dd>
|
|
<dt> ‘<samp>GreenYellow</samp>’</dt>
|
|
<dd><p>0xADFF2F
|
|
</p></dd>
|
|
<dt> ‘<samp>HoneyDew</samp>’</dt>
|
|
<dd><p>0xF0FFF0
|
|
</p></dd>
|
|
<dt> ‘<samp>HotPink</samp>’</dt>
|
|
<dd><p>0xFF69B4
|
|
</p></dd>
|
|
<dt> ‘<samp>IndianRed</samp>’</dt>
|
|
<dd><p>0xCD5C5C
|
|
</p></dd>
|
|
<dt> ‘<samp>Indigo</samp>’</dt>
|
|
<dd><p>0x4B0082
|
|
</p></dd>
|
|
<dt> ‘<samp>Ivory</samp>’</dt>
|
|
<dd><p>0xFFFFF0
|
|
</p></dd>
|
|
<dt> ‘<samp>Khaki</samp>’</dt>
|
|
<dd><p>0xF0E68C
|
|
</p></dd>
|
|
<dt> ‘<samp>Lavender</samp>’</dt>
|
|
<dd><p>0xE6E6FA
|
|
</p></dd>
|
|
<dt> ‘<samp>LavenderBlush</samp>’</dt>
|
|
<dd><p>0xFFF0F5
|
|
</p></dd>
|
|
<dt> ‘<samp>LawnGreen</samp>’</dt>
|
|
<dd><p>0x7CFC00
|
|
</p></dd>
|
|
<dt> ‘<samp>LemonChiffon</samp>’</dt>
|
|
<dd><p>0xFFFACD
|
|
</p></dd>
|
|
<dt> ‘<samp>LightBlue</samp>’</dt>
|
|
<dd><p>0xADD8E6
|
|
</p></dd>
|
|
<dt> ‘<samp>LightCoral</samp>’</dt>
|
|
<dd><p>0xF08080
|
|
</p></dd>
|
|
<dt> ‘<samp>LightCyan</samp>’</dt>
|
|
<dd><p>0xE0FFFF
|
|
</p></dd>
|
|
<dt> ‘<samp>LightGoldenRodYellow</samp>’</dt>
|
|
<dd><p>0xFAFAD2
|
|
</p></dd>
|
|
<dt> ‘<samp>LightGreen</samp>’</dt>
|
|
<dd><p>0x90EE90
|
|
</p></dd>
|
|
<dt> ‘<samp>LightGrey</samp>’</dt>
|
|
<dd><p>0xD3D3D3
|
|
</p></dd>
|
|
<dt> ‘<samp>LightPink</samp>’</dt>
|
|
<dd><p>0xFFB6C1
|
|
</p></dd>
|
|
<dt> ‘<samp>LightSalmon</samp>’</dt>
|
|
<dd><p>0xFFA07A
|
|
</p></dd>
|
|
<dt> ‘<samp>LightSeaGreen</samp>’</dt>
|
|
<dd><p>0x20B2AA
|
|
</p></dd>
|
|
<dt> ‘<samp>LightSkyBlue</samp>’</dt>
|
|
<dd><p>0x87CEFA
|
|
</p></dd>
|
|
<dt> ‘<samp>LightSlateGray</samp>’</dt>
|
|
<dd><p>0x778899
|
|
</p></dd>
|
|
<dt> ‘<samp>LightSteelBlue</samp>’</dt>
|
|
<dd><p>0xB0C4DE
|
|
</p></dd>
|
|
<dt> ‘<samp>LightYellow</samp>’</dt>
|
|
<dd><p>0xFFFFE0
|
|
</p></dd>
|
|
<dt> ‘<samp>Lime</samp>’</dt>
|
|
<dd><p>0x00FF00
|
|
</p></dd>
|
|
<dt> ‘<samp>LimeGreen</samp>’</dt>
|
|
<dd><p>0x32CD32
|
|
</p></dd>
|
|
<dt> ‘<samp>Linen</samp>’</dt>
|
|
<dd><p>0xFAF0E6
|
|
</p></dd>
|
|
<dt> ‘<samp>Magenta</samp>’</dt>
|
|
<dd><p>0xFF00FF
|
|
</p></dd>
|
|
<dt> ‘<samp>Maroon</samp>’</dt>
|
|
<dd><p>0x800000
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumAquaMarine</samp>’</dt>
|
|
<dd><p>0x66CDAA
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumBlue</samp>’</dt>
|
|
<dd><p>0x0000CD
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumOrchid</samp>’</dt>
|
|
<dd><p>0xBA55D3
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumPurple</samp>’</dt>
|
|
<dd><p>0x9370D8
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumSeaGreen</samp>’</dt>
|
|
<dd><p>0x3CB371
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumSlateBlue</samp>’</dt>
|
|
<dd><p>0x7B68EE
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumSpringGreen</samp>’</dt>
|
|
<dd><p>0x00FA9A
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumTurquoise</samp>’</dt>
|
|
<dd><p>0x48D1CC
|
|
</p></dd>
|
|
<dt> ‘<samp>MediumVioletRed</samp>’</dt>
|
|
<dd><p>0xC71585
|
|
</p></dd>
|
|
<dt> ‘<samp>MidnightBlue</samp>’</dt>
|
|
<dd><p>0x191970
|
|
</p></dd>
|
|
<dt> ‘<samp>MintCream</samp>’</dt>
|
|
<dd><p>0xF5FFFA
|
|
</p></dd>
|
|
<dt> ‘<samp>MistyRose</samp>’</dt>
|
|
<dd><p>0xFFE4E1
|
|
</p></dd>
|
|
<dt> ‘<samp>Moccasin</samp>’</dt>
|
|
<dd><p>0xFFE4B5
|
|
</p></dd>
|
|
<dt> ‘<samp>NavajoWhite</samp>’</dt>
|
|
<dd><p>0xFFDEAD
|
|
</p></dd>
|
|
<dt> ‘<samp>Navy</samp>’</dt>
|
|
<dd><p>0x000080
|
|
</p></dd>
|
|
<dt> ‘<samp>OldLace</samp>’</dt>
|
|
<dd><p>0xFDF5E6
|
|
</p></dd>
|
|
<dt> ‘<samp>Olive</samp>’</dt>
|
|
<dd><p>0x808000
|
|
</p></dd>
|
|
<dt> ‘<samp>OliveDrab</samp>’</dt>
|
|
<dd><p>0x6B8E23
|
|
</p></dd>
|
|
<dt> ‘<samp>Orange</samp>’</dt>
|
|
<dd><p>0xFFA500
|
|
</p></dd>
|
|
<dt> ‘<samp>OrangeRed</samp>’</dt>
|
|
<dd><p>0xFF4500
|
|
</p></dd>
|
|
<dt> ‘<samp>Orchid</samp>’</dt>
|
|
<dd><p>0xDA70D6
|
|
</p></dd>
|
|
<dt> ‘<samp>PaleGoldenRod</samp>’</dt>
|
|
<dd><p>0xEEE8AA
|
|
</p></dd>
|
|
<dt> ‘<samp>PaleGreen</samp>’</dt>
|
|
<dd><p>0x98FB98
|
|
</p></dd>
|
|
<dt> ‘<samp>PaleTurquoise</samp>’</dt>
|
|
<dd><p>0xAFEEEE
|
|
</p></dd>
|
|
<dt> ‘<samp>PaleVioletRed</samp>’</dt>
|
|
<dd><p>0xD87093
|
|
</p></dd>
|
|
<dt> ‘<samp>PapayaWhip</samp>’</dt>
|
|
<dd><p>0xFFEFD5
|
|
</p></dd>
|
|
<dt> ‘<samp>PeachPuff</samp>’</dt>
|
|
<dd><p>0xFFDAB9
|
|
</p></dd>
|
|
<dt> ‘<samp>Peru</samp>’</dt>
|
|
<dd><p>0xCD853F
|
|
</p></dd>
|
|
<dt> ‘<samp>Pink</samp>’</dt>
|
|
<dd><p>0xFFC0CB
|
|
</p></dd>
|
|
<dt> ‘<samp>Plum</samp>’</dt>
|
|
<dd><p>0xDDA0DD
|
|
</p></dd>
|
|
<dt> ‘<samp>PowderBlue</samp>’</dt>
|
|
<dd><p>0xB0E0E6
|
|
</p></dd>
|
|
<dt> ‘<samp>Purple</samp>’</dt>
|
|
<dd><p>0x800080
|
|
</p></dd>
|
|
<dt> ‘<samp>Red</samp>’</dt>
|
|
<dd><p>0xFF0000
|
|
</p></dd>
|
|
<dt> ‘<samp>RosyBrown</samp>’</dt>
|
|
<dd><p>0xBC8F8F
|
|
</p></dd>
|
|
<dt> ‘<samp>RoyalBlue</samp>’</dt>
|
|
<dd><p>0x4169E1
|
|
</p></dd>
|
|
<dt> ‘<samp>SaddleBrown</samp>’</dt>
|
|
<dd><p>0x8B4513
|
|
</p></dd>
|
|
<dt> ‘<samp>Salmon</samp>’</dt>
|
|
<dd><p>0xFA8072
|
|
</p></dd>
|
|
<dt> ‘<samp>SandyBrown</samp>’</dt>
|
|
<dd><p>0xF4A460
|
|
</p></dd>
|
|
<dt> ‘<samp>SeaGreen</samp>’</dt>
|
|
<dd><p>0x2E8B57
|
|
</p></dd>
|
|
<dt> ‘<samp>SeaShell</samp>’</dt>
|
|
<dd><p>0xFFF5EE
|
|
</p></dd>
|
|
<dt> ‘<samp>Sienna</samp>’</dt>
|
|
<dd><p>0xA0522D
|
|
</p></dd>
|
|
<dt> ‘<samp>Silver</samp>’</dt>
|
|
<dd><p>0xC0C0C0
|
|
</p></dd>
|
|
<dt> ‘<samp>SkyBlue</samp>’</dt>
|
|
<dd><p>0x87CEEB
|
|
</p></dd>
|
|
<dt> ‘<samp>SlateBlue</samp>’</dt>
|
|
<dd><p>0x6A5ACD
|
|
</p></dd>
|
|
<dt> ‘<samp>SlateGray</samp>’</dt>
|
|
<dd><p>0x708090
|
|
</p></dd>
|
|
<dt> ‘<samp>Snow</samp>’</dt>
|
|
<dd><p>0xFFFAFA
|
|
</p></dd>
|
|
<dt> ‘<samp>SpringGreen</samp>’</dt>
|
|
<dd><p>0x00FF7F
|
|
</p></dd>
|
|
<dt> ‘<samp>SteelBlue</samp>’</dt>
|
|
<dd><p>0x4682B4
|
|
</p></dd>
|
|
<dt> ‘<samp>Tan</samp>’</dt>
|
|
<dd><p>0xD2B48C
|
|
</p></dd>
|
|
<dt> ‘<samp>Teal</samp>’</dt>
|
|
<dd><p>0x008080
|
|
</p></dd>
|
|
<dt> ‘<samp>Thistle</samp>’</dt>
|
|
<dd><p>0xD8BFD8
|
|
</p></dd>
|
|
<dt> ‘<samp>Tomato</samp>’</dt>
|
|
<dd><p>0xFF6347
|
|
</p></dd>
|
|
<dt> ‘<samp>Turquoise</samp>’</dt>
|
|
<dd><p>0x40E0D0
|
|
</p></dd>
|
|
<dt> ‘<samp>Violet</samp>’</dt>
|
|
<dd><p>0xEE82EE
|
|
</p></dd>
|
|
<dt> ‘<samp>Wheat</samp>’</dt>
|
|
<dd><p>0xF5DEB3
|
|
</p></dd>
|
|
<dt> ‘<samp>White</samp>’</dt>
|
|
<dd><p>0xFFFFFF
|
|
</p></dd>
|
|
<dt> ‘<samp>WhiteSmoke</samp>’</dt>
|
|
<dd><p>0xF5F5F5
|
|
</p></dd>
|
|
<dt> ‘<samp>Yellow</samp>’</dt>
|
|
<dd><p>0xFFFF00
|
|
</p></dd>
|
|
<dt> ‘<samp>YellowGreen</samp>’</dt>
|
|
<dd><p>0x9ACD32
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="channel-layout-syntax"></a>
|
|
</p><a name="Channel-Layout"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Channel-Layout">8.8 Channel Layout</a></h2>
|
|
|
|
<p>A channel layout specifies the spatial disposition of the channels in
|
|
a multi-channel audio stream. To specify a channel layout, FFmpeg
|
|
makes use of a special syntax.
|
|
</p>
|
|
<p>Individual channels are identified by an id, as given by the table
|
|
below:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>FL</samp>’</dt>
|
|
<dd><p>front left
|
|
</p></dd>
|
|
<dt> ‘<samp>FR</samp>’</dt>
|
|
<dd><p>front right
|
|
</p></dd>
|
|
<dt> ‘<samp>FC</samp>’</dt>
|
|
<dd><p>front center
|
|
</p></dd>
|
|
<dt> ‘<samp>LFE</samp>’</dt>
|
|
<dd><p>low frequency
|
|
</p></dd>
|
|
<dt> ‘<samp>BL</samp>’</dt>
|
|
<dd><p>back left
|
|
</p></dd>
|
|
<dt> ‘<samp>BR</samp>’</dt>
|
|
<dd><p>back right
|
|
</p></dd>
|
|
<dt> ‘<samp>FLC</samp>’</dt>
|
|
<dd><p>front left-of-center
|
|
</p></dd>
|
|
<dt> ‘<samp>FRC</samp>’</dt>
|
|
<dd><p>front right-of-center
|
|
</p></dd>
|
|
<dt> ‘<samp>BC</samp>’</dt>
|
|
<dd><p>back center
|
|
</p></dd>
|
|
<dt> ‘<samp>SL</samp>’</dt>
|
|
<dd><p>side left
|
|
</p></dd>
|
|
<dt> ‘<samp>SR</samp>’</dt>
|
|
<dd><p>side right
|
|
</p></dd>
|
|
<dt> ‘<samp>TC</samp>’</dt>
|
|
<dd><p>top center
|
|
</p></dd>
|
|
<dt> ‘<samp>TFL</samp>’</dt>
|
|
<dd><p>top front left
|
|
</p></dd>
|
|
<dt> ‘<samp>TFC</samp>’</dt>
|
|
<dd><p>top front center
|
|
</p></dd>
|
|
<dt> ‘<samp>TFR</samp>’</dt>
|
|
<dd><p>top front right
|
|
</p></dd>
|
|
<dt> ‘<samp>TBL</samp>’</dt>
|
|
<dd><p>top back left
|
|
</p></dd>
|
|
<dt> ‘<samp>TBC</samp>’</dt>
|
|
<dd><p>top back center
|
|
</p></dd>
|
|
<dt> ‘<samp>TBR</samp>’</dt>
|
|
<dd><p>top back right
|
|
</p></dd>
|
|
<dt> ‘<samp>DL</samp>’</dt>
|
|
<dd><p>downmix left
|
|
</p></dd>
|
|
<dt> ‘<samp>DR</samp>’</dt>
|
|
<dd><p>downmix right
|
|
</p></dd>
|
|
<dt> ‘<samp>WL</samp>’</dt>
|
|
<dd><p>wide left
|
|
</p></dd>
|
|
<dt> ‘<samp>WR</samp>’</dt>
|
|
<dd><p>wide right
|
|
</p></dd>
|
|
<dt> ‘<samp>SDL</samp>’</dt>
|
|
<dd><p>surround direct left
|
|
</p></dd>
|
|
<dt> ‘<samp>SDR</samp>’</dt>
|
|
<dd><p>surround direct right
|
|
</p></dd>
|
|
<dt> ‘<samp>LFE2</samp>’</dt>
|
|
<dd><p>low frequency 2
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Standard channel layout compositions can be specified by using the
|
|
following identifiers:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>mono</samp>’</dt>
|
|
<dd><p>FC
|
|
</p></dd>
|
|
<dt> ‘<samp>stereo</samp>’</dt>
|
|
<dd><p>FL+FR
|
|
</p></dd>
|
|
<dt> ‘<samp>2.1</samp>’</dt>
|
|
<dd><p>FL+FR+LFE
|
|
</p></dd>
|
|
<dt> ‘<samp>3.0</samp>’</dt>
|
|
<dd><p>FL+FR+FC
|
|
</p></dd>
|
|
<dt> ‘<samp>3.0(back)</samp>’</dt>
|
|
<dd><p>FL+FR+BC
|
|
</p></dd>
|
|
<dt> ‘<samp>4.0</samp>’</dt>
|
|
<dd><p>FL+FR+FC+BC
|
|
</p></dd>
|
|
<dt> ‘<samp>quad</samp>’</dt>
|
|
<dd><p>FL+FR+BL+BR
|
|
</p></dd>
|
|
<dt> ‘<samp>quad(side)</samp>’</dt>
|
|
<dd><p>FL+FR+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>3.1</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE
|
|
</p></dd>
|
|
<dt> ‘<samp>5.0</samp>’</dt>
|
|
<dd><p>FL+FR+FC+BL+BR
|
|
</p></dd>
|
|
<dt> ‘<samp>5.0(side)</samp>’</dt>
|
|
<dd><p>FL+FR+FC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>4.1</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+BC
|
|
</p></dd>
|
|
<dt> ‘<samp>5.1</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+BL+BR
|
|
</p></dd>
|
|
<dt> ‘<samp>5.1(side)</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>6.0</samp>’</dt>
|
|
<dd><p>FL+FR+FC+BC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>6.0(front)</samp>’</dt>
|
|
<dd><p>FL+FR+FLC+FRC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>hexagonal</samp>’</dt>
|
|
<dd><p>FL+FR+FC+BL+BR+BC
|
|
</p></dd>
|
|
<dt> ‘<samp>6.1</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+BC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>6.1</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+BL+BR+BC
|
|
</p></dd>
|
|
<dt> ‘<samp>6.1(front)</samp>’</dt>
|
|
<dd><p>FL+FR+LFE+FLC+FRC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>7.0</samp>’</dt>
|
|
<dd><p>FL+FR+FC+BL+BR+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>7.0(front)</samp>’</dt>
|
|
<dd><p>FL+FR+FC+FLC+FRC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>7.1</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+BL+BR+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>7.1(wide)</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC
|
|
</p></dd>
|
|
<dt> ‘<samp>7.1(wide-side)</samp>’</dt>
|
|
<dd><p>FL+FR+FC+LFE+FLC+FRC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>octagonal</samp>’</dt>
|
|
<dd><p>FL+FR+FC+BL+BR+BC+SL+SR
|
|
</p></dd>
|
|
<dt> ‘<samp>downmix</samp>’</dt>
|
|
<dd><p>DL+DR
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>A custom channel layout can be specified as a sequence of terms, separated by
|
|
’+’ or ’|’. Each term can be:
|
|
</p><ul>
|
|
<li>
|
|
the name of a standard channel layout (e.g. ‘<samp>mono</samp>’,
|
|
‘<samp>stereo</samp>’, ‘<samp>4.0</samp>’, ‘<samp>quad</samp>’, ‘<samp>5.0</samp>’, etc.)
|
|
|
|
</li><li>
|
|
the name of a single channel (e.g. ‘<samp>FL</samp>’, ‘<samp>FR</samp>’, ‘<samp>FC</samp>’, ‘<samp>LFE</samp>’, etc.)
|
|
|
|
</li><li>
|
|
a number of channels, in decimal, optionally followed by ’c’, yielding
|
|
the default channel layout for that number of channels (see the
|
|
function <code>av_get_default_channel_layout</code>)
|
|
|
|
</li><li>
|
|
a channel layout mask, in hexadecimal starting with "0x" (see the
|
|
<code>AV_CH_*</code> macros in ‘<tt>libavutil/channel_layout.h</tt>’.
|
|
</li></ul>
|
|
|
|
<p>Starting from libavutil version 53 the trailing character "c" to
|
|
specify a number of channels will be required, while a channel layout
|
|
mask could also be specified as a decimal number (if and only if not
|
|
followed by "c").
|
|
</p>
|
|
<p>See also the function <code>av_get_channel_layout</code> defined in
|
|
‘<tt>libavutil/channel_layout.h</tt>’.
|
|
</p>
|
|
<a name="Expression-Evaluation"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Expression-Evaluation">9. Expression Evaluation</a></h1>
|
|
|
|
<p>When evaluating an arithmetic expression, FFmpeg uses an internal
|
|
formula evaluator, implemented through the ‘<tt>libavutil/eval.h</tt>’
|
|
interface.
|
|
</p>
|
|
<p>An expression may contain unary, binary operators, constants, and
|
|
functions.
|
|
</p>
|
|
<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
|
|
another expression "<var>expr1</var>;<var>expr2</var>".
|
|
<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
|
|
expression evaluates to the value of <var>expr2</var>.
|
|
</p>
|
|
<p>The following binary operators are available: <code>+</code>, <code>-</code>,
|
|
<code>*</code>, <code>/</code>, <code>^</code>.
|
|
</p>
|
|
<p>The following unary operators are available: <code>+</code>, <code>-</code>.
|
|
</p>
|
|
<p>The following functions are available:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>abs(x)</samp>’</dt>
|
|
<dd><p>Compute absolute value of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>acos(x)</samp>’</dt>
|
|
<dd><p>Compute arccosine of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>asin(x)</samp>’</dt>
|
|
<dd><p>Compute arcsine of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>atan(x)</samp>’</dt>
|
|
<dd><p>Compute arctangent of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>between(x, min, max)</samp>’</dt>
|
|
<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>min</var> and lesser than or
|
|
equal to <var>max</var>, 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bitand(x, y)</samp>’</dt>
|
|
<dt> ‘<samp>bitor(x, y)</samp>’</dt>
|
|
<dd><p>Compute bitwise and/or operation on <var>x</var> and <var>y</var>.
|
|
</p>
|
|
<p>The results of the evaluation of <var>x</var> and <var>y</var> are converted to
|
|
integers before executing the bitwise operation.
|
|
</p>
|
|
<p>Note that both the conversion to integer and the conversion back to
|
|
floating point can lose precision. Beware of unexpected results for
|
|
large numbers (usually 2^53 and larger).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ceil(expr)</samp>’</dt>
|
|
<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
|
|
integer. For example, "ceil(1.5)" is "2.0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cos(x)</samp>’</dt>
|
|
<dd><p>Compute cosine of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cosh(x)</samp>’</dt>
|
|
<dd><p>Compute hyperbolic cosine of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>eq(x, y)</samp>’</dt>
|
|
<dd><p>Return 1 if <var>x</var> and <var>y</var> are equivalent, 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>exp(x)</samp>’</dt>
|
|
<dd><p>Compute exponential of <var>x</var> (with base <code>e</code>, the Euler’s number).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>floor(expr)</samp>’</dt>
|
|
<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
|
|
integer. For example, "floor(-1.5)" is "-2.0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gauss(x)</samp>’</dt>
|
|
<dd><p>Compute Gauss function of <var>x</var>, corresponding to
|
|
<code>exp(-x*x/2) / sqrt(2*PI)</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gcd(x, y)</samp>’</dt>
|
|
<dd><p>Return the greatest common divisor of <var>x</var> and <var>y</var>. If both <var>x</var> and
|
|
<var>y</var> are 0 or either or both are less than zero then behavior is undefined.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gt(x, y)</samp>’</dt>
|
|
<dd><p>Return 1 if <var>x</var> is greater than <var>y</var>, 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gte(x, y)</samp>’</dt>
|
|
<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>y</var>, 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hypot(x, y)</samp>’</dt>
|
|
<dd><p>This function is similar to the C function with the same name; it returns
|
|
"sqrt(<var>x</var>*<var>x</var> + <var>y</var>*<var>y</var>)", the length of the hypotenuse of a
|
|
right triangle with sides of length <var>x</var> and <var>y</var>, or the distance of the
|
|
point (<var>x</var>, <var>y</var>) from the origin.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>if(x, y)</samp>’</dt>
|
|
<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the result of
|
|
the evaluation of <var>y</var>, return 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>if(x, y, z)</samp>’</dt>
|
|
<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the evaluation
|
|
result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ifnot(x, y)</samp>’</dt>
|
|
<dd><p>Evaluate <var>x</var>, and if the result is zero return the result of the
|
|
evaluation of <var>y</var>, return 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ifnot(x, y, z)</samp>’</dt>
|
|
<dd><p>Evaluate <var>x</var>, and if the result is zero return the evaluation
|
|
result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>isinf(x)</samp>’</dt>
|
|
<dd><p>Return 1.0 if <var>x</var> is +/-INFINITY, 0.0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>isnan(x)</samp>’</dt>
|
|
<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ld(var)</samp>’</dt>
|
|
<dd><p>Allow to load the value of the internal variable with number
|
|
<var>var</var>, which was previously stored with st(<var>var</var>, <var>expr</var>).
|
|
The function returns the loaded value.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>log(x)</samp>’</dt>
|
|
<dd><p>Compute natural logarithm of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lt(x, y)</samp>’</dt>
|
|
<dd><p>Return 1 if <var>x</var> is lesser than <var>y</var>, 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lte(x, y)</samp>’</dt>
|
|
<dd><p>Return 1 if <var>x</var> is lesser than or equal to <var>y</var>, 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max(x, y)</samp>’</dt>
|
|
<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>min(x, y)</samp>’</dt>
|
|
<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mod(x, y)</samp>’</dt>
|
|
<dd><p>Compute the remainder of division of <var>x</var> by <var>y</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>not(expr)</samp>’</dt>
|
|
<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pow(x, y)</samp>’</dt>
|
|
<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
|
|
"(<var>x</var>)^(<var>y</var>)".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>print(t)</samp>’</dt>
|
|
<dt> ‘<samp>print(t, l)</samp>’</dt>
|
|
<dd><p>Print the value of expression <var>t</var> with loglevel <var>l</var>. If
|
|
<var>l</var> is not specified then a default log level is used.
|
|
Returns the value of the expression printed.
|
|
</p>
|
|
<p>Prints t with loglevel l
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>random(x)</samp>’</dt>
|
|
<dd><p>Return a pseudo random value between 0.0 and 1.0. <var>x</var> is the index of the
|
|
internal variable which will be used to save the seed/state.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>root(expr, max)</samp>’</dt>
|
|
<dd><p>Find an input value for which the function represented by <var>expr</var>
|
|
with argument <var>ld(0)</var> is 0 in the interval 0..<var>max</var>.
|
|
</p>
|
|
<p>The expression in <var>expr</var> must denote a continuous function or the
|
|
result is undefined.
|
|
</p>
|
|
<p><var>ld(0)</var> is used to represent the function input value, which means
|
|
that the given expression will be evaluated multiple times with
|
|
various input values that the expression can access through
|
|
<code>ld(0)</code>. When the expression evaluates to 0 then the
|
|
corresponding input value will be returned.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sin(x)</samp>’</dt>
|
|
<dd><p>Compute sine of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sinh(x)</samp>’</dt>
|
|
<dd><p>Compute hyperbolic sine of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sqrt(expr)</samp>’</dt>
|
|
<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
|
|
"(<var>expr</var>)^.5".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>squish(x)</samp>’</dt>
|
|
<dd><p>Compute expression <code>1/(1 + exp(4*x))</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>st(var, expr)</samp>’</dt>
|
|
<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
|
|
variable. <var>var</var> specifies the number of the variable where to
|
|
store the value, and it is a value ranging from 0 to 9. The function
|
|
returns the value stored in the internal variable.
|
|
Note, Variables are currently not shared between expressions.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tan(x)</samp>’</dt>
|
|
<dd><p>Compute tangent of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tanh(x)</samp>’</dt>
|
|
<dd><p>Compute hyperbolic tangent of <var>x</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>taylor(expr, x)</samp>’</dt>
|
|
<dt> ‘<samp>taylor(expr, x, id)</samp>’</dt>
|
|
<dd><p>Evaluate a Taylor series at <var>x</var>, given an expression representing
|
|
the <code>ld(id)</code>-th derivative of a function at 0.
|
|
</p>
|
|
<p>When the series does not converge the result is undefined.
|
|
</p>
|
|
<p><var>ld(id)</var> is used to represent the derivative order in <var>expr</var>,
|
|
which means that the given expression will be evaluated multiple times
|
|
with various input values that the expression can access through
|
|
<code>ld(id)</code>. If <var>id</var> is not specified then 0 is assumed.
|
|
</p>
|
|
<p>Note, when you have the derivatives at y instead of 0,
|
|
<code>taylor(expr, x-y)</code> can be used.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>time(0)</samp>’</dt>
|
|
<dd><p>Return the current (wallclock) time in seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>trunc(expr)</samp>’</dt>
|
|
<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
|
|
integer. For example, "trunc(-1.5)" is "-1.0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>while(cond, expr)</samp>’</dt>
|
|
<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
|
|
non-zero, and returns the value of the last <var>expr</var> evaluation, or
|
|
NAN if <var>cond</var> was always false.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following constants are available:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>PI</samp>’</dt>
|
|
<dd><p>area of the unit disc, approximately 3.14
|
|
</p></dd>
|
|
<dt> ‘<samp>E</samp>’</dt>
|
|
<dd><p>exp(1) (Euler’s number), approximately 2.718
|
|
</p></dd>
|
|
<dt> ‘<samp>PHI</samp>’</dt>
|
|
<dd><p>golden ratio (1+sqrt(5))/2, approximately 1.618
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Assuming that an expression is considered "true" if it has a non-zero
|
|
value, note that:
|
|
</p>
|
|
<p><code>*</code> works like AND
|
|
</p>
|
|
<p><code>+</code> works like OR
|
|
</p>
|
|
<p>For example the construct:
|
|
</p><table><tr><td> </td><td><pre class="example">if (A AND B) then C
|
|
</pre></td></tr></table>
|
|
<p>is equivalent to:
|
|
</p><table><tr><td> </td><td><pre class="example">if(A*B, C)
|
|
</pre></td></tr></table>
|
|
|
|
<p>In your C code, you can extend the list of unary and binary functions,
|
|
and define recognized constants, so that they are available for your
|
|
expressions.
|
|
</p>
|
|
<p>The evaluator also recognizes the International System unit prefixes.
|
|
If ’i’ is appended after the prefix, binary prefixes are used, which
|
|
are based on powers of 1024 instead of powers of 1000.
|
|
The ’B’ postfix multiplies the value by 8, and can be appended after a
|
|
unit prefix or used alone. This allows using for example ’KB’, ’MiB’,
|
|
’G’ and ’B’ as number postfix.
|
|
</p>
|
|
<p>The list of available International System prefixes follows, with
|
|
indication of the corresponding powers of 10 and of 2.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>10^-24 / 2^-80
|
|
</p></dd>
|
|
<dt> ‘<samp>z</samp>’</dt>
|
|
<dd><p>10^-21 / 2^-70
|
|
</p></dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>10^-18 / 2^-60
|
|
</p></dd>
|
|
<dt> ‘<samp>f</samp>’</dt>
|
|
<dd><p>10^-15 / 2^-50
|
|
</p></dd>
|
|
<dt> ‘<samp>p</samp>’</dt>
|
|
<dd><p>10^-12 / 2^-40
|
|
</p></dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>10^-9 / 2^-30
|
|
</p></dd>
|
|
<dt> ‘<samp>u</samp>’</dt>
|
|
<dd><p>10^-6 / 2^-20
|
|
</p></dd>
|
|
<dt> ‘<samp>m</samp>’</dt>
|
|
<dd><p>10^-3 / 2^-10
|
|
</p></dd>
|
|
<dt> ‘<samp>c</samp>’</dt>
|
|
<dd><p>10^-2
|
|
</p></dd>
|
|
<dt> ‘<samp>d</samp>’</dt>
|
|
<dd><p>10^-1
|
|
</p></dd>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>10^2
|
|
</p></dd>
|
|
<dt> ‘<samp>k</samp>’</dt>
|
|
<dd><p>10^3 / 2^10
|
|
</p></dd>
|
|
<dt> ‘<samp>K</samp>’</dt>
|
|
<dd><p>10^3 / 2^10
|
|
</p></dd>
|
|
<dt> ‘<samp>M</samp>’</dt>
|
|
<dd><p>10^6 / 2^20
|
|
</p></dd>
|
|
<dt> ‘<samp>G</samp>’</dt>
|
|
<dd><p>10^9 / 2^30
|
|
</p></dd>
|
|
<dt> ‘<samp>T</samp>’</dt>
|
|
<dd><p>10^12 / 2^40
|
|
</p></dd>
|
|
<dt> ‘<samp>P</samp>’</dt>
|
|
<dd><p>10^15 / 2^40
|
|
</p></dd>
|
|
<dt> ‘<samp>E</samp>’</dt>
|
|
<dd><p>10^18 / 2^50
|
|
</p></dd>
|
|
<dt> ‘<samp>Z</samp>’</dt>
|
|
<dd><p>10^21 / 2^60
|
|
</p></dd>
|
|
<dt> ‘<samp>Y</samp>’</dt>
|
|
<dd><p>10^24 / 2^70
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<a name="OpenCL-Options"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-OpenCL-Options">10. OpenCL Options</a></h1>
|
|
|
|
<p>When FFmpeg is configured with <code>--enable-opencl</code>, it is possible
|
|
to set the options for the global OpenCL context.
|
|
</p>
|
|
<p>The list of supported options follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>build_options</samp>’</dt>
|
|
<dd><p>Set build options used to compile the registered kernels.
|
|
</p>
|
|
<p>See reference "OpenCL Specification Version: 1.2 chapter 5.6.4".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>platform_idx</samp>’</dt>
|
|
<dd><p>Select the index of the platform to run OpenCL code.
|
|
</p>
|
|
<p>The specified index must be one of the indexes in the device list
|
|
which can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>device_idx</samp>’</dt>
|
|
<dd><p>Select the index of the device used to run OpenCL code.
|
|
</p>
|
|
<p>The specified index must be one of the indexes in the device list which
|
|
can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="codec_002doptions"></a>
|
|
</p><a name="Codec-Options"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Codec-Options">11. Codec Options</a></h1>
|
|
|
|
<p>libavcodec provides some generic global options, which can be set on
|
|
all the encoders and decoders. In addition each codec may support
|
|
so-called private options, which are specific for a given codec.
|
|
</p>
|
|
<p>Sometimes, a global option may only affect a specific kind of codec,
|
|
and may be unsensical or ignored by another, so you need to be aware
|
|
of the meaning of the specified options. Also some options are
|
|
meant only for decoding or encoding.
|
|
</p>
|
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
|
FFmpeg tools, or by setting the value explicitly in the
|
|
<code>AVCodecContext</code> options or using the ‘<tt>libavutil/opt.h</tt>’ API
|
|
for programmatic use.
|
|
</p>
|
|
<p>The list of supported options follow:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Set bitrate in bits/s. Default value is 200K.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ab <var>integer</var> (<em>encoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set audio bitrate (in bits/s). Default value is 128K.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bt <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
|
|
tolerance specifies how far ratecontrol is willing to deviate from the
|
|
target average bitrate value. This is not related to min/max
|
|
bitrate. Lowering tolerance too much has an adverse effect on quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>’</dt>
|
|
<dd><p>Set generic flags.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>mv4</samp>’</dt>
|
|
<dd><p>Use four motion vector by macroblock (mpeg4).
|
|
</p></dd>
|
|
<dt> ‘<samp>qpel</samp>’</dt>
|
|
<dd><p>Use 1/4 pel motion compensation.
|
|
</p></dd>
|
|
<dt> ‘<samp>loop</samp>’</dt>
|
|
<dd><p>Use loop filter.
|
|
</p></dd>
|
|
<dt> ‘<samp>qscale</samp>’</dt>
|
|
<dd><p>Use fixed qscale.
|
|
</p></dd>
|
|
<dt> ‘<samp>gmc</samp>’</dt>
|
|
<dd><p>Use gmc.
|
|
</p></dd>
|
|
<dt> ‘<samp>mv0</samp>’</dt>
|
|
<dd><p>Always try a mb with mv=<0,0>.
|
|
</p></dd>
|
|
<dt> ‘<samp>input_preserved</samp>’</dt>
|
|
<dt> ‘<samp>pass1</samp>’</dt>
|
|
<dd><p>Use internal 2pass ratecontrol in first pass mode.
|
|
</p></dd>
|
|
<dt> ‘<samp>pass2</samp>’</dt>
|
|
<dd><p>Use internal 2pass ratecontrol in second pass mode.
|
|
</p></dd>
|
|
<dt> ‘<samp>gray</samp>’</dt>
|
|
<dd><p>Only decode/encode grayscale.
|
|
</p></dd>
|
|
<dt> ‘<samp>emu_edge</samp>’</dt>
|
|
<dd><p>Do not draw edges.
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>Set error[?] variables during encoding.
|
|
</p></dd>
|
|
<dt> ‘<samp>truncated</samp>’</dt>
|
|
<dt> ‘<samp>naq</samp>’</dt>
|
|
<dd><p>Normalize adaptive quantization.
|
|
</p></dd>
|
|
<dt> ‘<samp>ildct</samp>’</dt>
|
|
<dd><p>Use interlaced DCT.
|
|
</p></dd>
|
|
<dt> ‘<samp>low_delay</samp>’</dt>
|
|
<dd><p>Force low delay.
|
|
</p></dd>
|
|
<dt> ‘<samp>global_header</samp>’</dt>
|
|
<dd><p>Place global headers in extradata instead of every keyframe.
|
|
</p></dd>
|
|
<dt> ‘<samp>bitexact</samp>’</dt>
|
|
<dd><p>Use only bitexact stuff (except (I)DCT).
|
|
</p></dd>
|
|
<dt> ‘<samp>aic</samp>’</dt>
|
|
<dd><p>Apply H263 advanced intra coding / mpeg4 ac prediction.
|
|
</p></dd>
|
|
<dt> ‘<samp>cbp</samp>’</dt>
|
|
<dd><p>Deprecated, use mpegvideo private options instead.
|
|
</p></dd>
|
|
<dt> ‘<samp>qprd</samp>’</dt>
|
|
<dd><p>Deprecated, use mpegvideo private options instead.
|
|
</p></dd>
|
|
<dt> ‘<samp>ilme</samp>’</dt>
|
|
<dd><p>Apply interlaced motion estimation.
|
|
</p></dd>
|
|
<dt> ‘<samp>cgop</samp>’</dt>
|
|
<dd><p>Use closed gop.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>me_method <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set motion estimation method.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>zero motion estimation (fastest)
|
|
</p></dd>
|
|
<dt> ‘<samp>full</samp>’</dt>
|
|
<dd><p>full motion estimation (slowest)
|
|
</p></dd>
|
|
<dt> ‘<samp>epzs</samp>’</dt>
|
|
<dd><p>EPZS motion estimation (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>esa</samp>’</dt>
|
|
<dd><p>esa motion estimation (alias for full)
|
|
</p></dd>
|
|
<dt> ‘<samp>tesa</samp>’</dt>
|
|
<dd><p>tesa motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>dia</samp>’</dt>
|
|
<dd><p>dia motion estimation (alias for epzs)
|
|
</p></dd>
|
|
<dt> ‘<samp>log</samp>’</dt>
|
|
<dd><p>log motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>phods</samp>’</dt>
|
|
<dd><p>phods motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>x1</samp>’</dt>
|
|
<dd><p>X1 motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>hex</samp>’</dt>
|
|
<dd><p>hex motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>umh</samp>’</dt>
|
|
<dd><p>umh motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>iter</samp>’</dt>
|
|
<dd><p>iter motion estimation
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>extradata_size <var>integer</var></samp>’</dt>
|
|
<dd><p>Set extradata size.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>time_base <var>rational number</var></samp>’</dt>
|
|
<dd><p>Set codec time base.
|
|
</p>
|
|
<p>It is the fundamental unit of time (in seconds) in terms of which
|
|
frame timestamps are represented. For fixed-fps content, timebase
|
|
should be <code>1 / frame_rate</code> and timestamp increments should be
|
|
identically 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>g <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set the group of picture size. Default value is 12.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ar <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set audio sampling rate (in Hz).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ac <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set number of audio channels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cutoff <var>integer</var> (<em>encoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set cutoff bandwidth.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame_size <var>integer</var> (<em>encoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set audio frame size.
|
|
</p>
|
|
<p>Each submitted frame except the last must contain exactly frame_size
|
|
samples per channel. May be 0 when the codec has
|
|
CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
|
|
restricted. It is set by some decoders to indicate constant frame
|
|
size.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame_number <var>integer</var></samp>’</dt>
|
|
<dd><p>Set the frame number.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>delay <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>qcomp <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set video quantizer scale compression (VBR). It is used as a constant
|
|
in the ratecontrol equation. Recommended range for default rc_eq:
|
|
0.0-1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qblur <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set video quantizer scale blur (VBR).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qmin <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set min video quantizer scale (VBR). Must be included between -1 and
|
|
69, default value is 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qmax <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set max video quantizer scale (VBR). Must be included between -1 and
|
|
1024, default value is 31.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qdiff <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set max difference between the quantizer scale (VBR).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bf <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set max number of B frames between non-B-frames.
|
|
</p>
|
|
<p>Must be an integer between -1 and 16. 0 means that B-frames are
|
|
disabled. If a value of -1 is used, it will choose an automatic value
|
|
depending on the encoder.
|
|
</p>
|
|
<p>Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>b_qfactor <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set qp factor between P and B frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_strategy <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set ratecontrol method.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>b_strategy <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set strategy to choose between I/P/B-frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ps <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set RTP payload size in bytes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mv_bits <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>header_bits <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>i_tex_bits <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>p_tex_bits <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>i_count <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>p_count <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>skip_count <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>misc_bits <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>frame_bits <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>codec_tag <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>bug <var>flags</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd><p>Workaround not auto detected encoder bugs.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>autodetect</samp>’</dt>
|
|
<dt> ‘<samp>old_msmpeg4</samp>’</dt>
|
|
<dd><p>some old lavc generated msmpeg4v3 files (no autodetection)
|
|
</p></dd>
|
|
<dt> ‘<samp>xvid_ilace</samp>’</dt>
|
|
<dd><p>Xvid interlacing bug (autodetected if fourcc==XVIX)
|
|
</p></dd>
|
|
<dt> ‘<samp>ump4</samp>’</dt>
|
|
<dd><p>(autodetected if fourcc==UMP4)
|
|
</p></dd>
|
|
<dt> ‘<samp>no_padding</samp>’</dt>
|
|
<dd><p>padding bug (autodetected)
|
|
</p></dd>
|
|
<dt> ‘<samp>amv</samp>’</dt>
|
|
<dt> ‘<samp>ac_vlc</samp>’</dt>
|
|
<dd><p>illegal vlc bug (autodetected per fourcc)
|
|
</p></dd>
|
|
<dt> ‘<samp>qpel_chroma</samp>’</dt>
|
|
<dt> ‘<samp>std_qpel</samp>’</dt>
|
|
<dd><p>old standard qpel (autodetected per fourcc/version)
|
|
</p></dd>
|
|
<dt> ‘<samp>qpel_chroma2</samp>’</dt>
|
|
<dt> ‘<samp>direct_blocksize</samp>’</dt>
|
|
<dd><p>direct-qpel-blocksize bug (autodetected per fourcc/version)
|
|
</p></dd>
|
|
<dt> ‘<samp>edge</samp>’</dt>
|
|
<dd><p>edge padding bug (autodetected per fourcc/version)
|
|
</p></dd>
|
|
<dt> ‘<samp>hpel_chroma</samp>’</dt>
|
|
<dt> ‘<samp>dc_clip</samp>’</dt>
|
|
<dt> ‘<samp>ms</samp>’</dt>
|
|
<dd><p>Workaround various bugs in microsoft broken decoders.
|
|
</p></dd>
|
|
<dt> ‘<samp>trunc</samp>’</dt>
|
|
<dd><p>trancated frames
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>lelim <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set single coefficient elimination threshold for luminance (negative
|
|
values also consider DC coefficient).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>celim <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set single coefficient elimination threshold for chrominance (negative
|
|
values also consider dc coefficient)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>strict <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Specify how strictly to follow the standards.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>very</samp>’</dt>
|
|
<dd><p>strictly conform to a older more strict version of the spec or reference software
|
|
</p></dd>
|
|
<dt> ‘<samp>strict</samp>’</dt>
|
|
<dd><p>strictly conform to all the things in the spec no matter what consequences
|
|
</p></dd>
|
|
<dt> ‘<samp>normal</samp>’</dt>
|
|
<dt> ‘<samp>unofficial</samp>’</dt>
|
|
<dd><p>allow unofficial extensions
|
|
</p></dd>
|
|
<dt> ‘<samp>experimental</samp>’</dt>
|
|
<dd><p>allow non standardized experimental things, experimental
|
|
(unfinished/work in progress/not well tested) decoders and encoders.
|
|
Note: experimental decoders can pose a security risk, do not use this for
|
|
decoding untrusted input.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>b_qoffset <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set QP offset between P and B frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>err_detect <var>flags</var> (<em>decoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Set error detection flags.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>crccheck</samp>’</dt>
|
|
<dd><p>verify embedded CRCs
|
|
</p></dd>
|
|
<dt> ‘<samp>bitstream</samp>’</dt>
|
|
<dd><p>detect bitstream specification deviations
|
|
</p></dd>
|
|
<dt> ‘<samp>buffer</samp>’</dt>
|
|
<dd><p>detect improper bitstream length
|
|
</p></dd>
|
|
<dt> ‘<samp>explode</samp>’</dt>
|
|
<dd><p>abort decoding on minor error detection
|
|
</p></dd>
|
|
<dt> ‘<samp>careful</samp>’</dt>
|
|
<dd><p>consider things that violate the spec and have not been seen in the wild as errors
|
|
</p></dd>
|
|
<dt> ‘<samp>compliant</samp>’</dt>
|
|
<dd><p>consider all spec non compliancies as errors
|
|
</p></dd>
|
|
<dt> ‘<samp>aggressive</samp>’</dt>
|
|
<dd><p>consider things that a sane encoder should not do as an error
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>has_b_frames <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>block_align <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>mpeg_quant <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Use MPEG quantizers instead of H.263.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qsquish <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>How to keep quantizer between qmin and qmax (0 = clip, 1 = use
|
|
differentiable function).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_qmod_amp <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set experimental quantizer modulation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_qmod_freq <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set experimental quantizer modulation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_override_count <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>rc_eq <var>string</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set rate control equation. When computing the expression, besides the
|
|
standard functions defined in the section ’Expression Evaluation’, the
|
|
following functions are available: bits2qp(bits), qp2bits(qp). Also
|
|
the following constants are available: iTex pTex tex mv fCode iCount
|
|
mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
|
|
avgTex.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>maxrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>minrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
|
|
encode. It is of little use elsewise.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bufsize <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Set ratecontrol buffer size (in bits).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_buf_aggressivity <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Currently useless.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>i_qfactor <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set QP factor between P and I frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>i_qoffset <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set QP offset between P and I frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_init_cplx <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set initial complexity for 1-pass encoding.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dct <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set DCT algorithm.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>autoselect a good one (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>fastint</samp>’</dt>
|
|
<dd><p>fast integer
|
|
</p></dd>
|
|
<dt> ‘<samp>int</samp>’</dt>
|
|
<dd><p>accurate integer
|
|
</p></dd>
|
|
<dt> ‘<samp>mmx</samp>’</dt>
|
|
<dt> ‘<samp>altivec</samp>’</dt>
|
|
<dt> ‘<samp>faan</samp>’</dt>
|
|
<dd><p>floating point AAN DCT
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>lumi_mask <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Compress bright areas stronger than medium ones.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tcplx_mask <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set temporal complexity masking.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scplx_mask <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set spatial complexity masking.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>p_mask <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set inter masking.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dark_mask <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Compress dark areas stronger than medium ones.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>idct <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Select IDCT implementation.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dt> ‘<samp>int</samp>’</dt>
|
|
<dt> ‘<samp>simple</samp>’</dt>
|
|
<dt> ‘<samp>simplemmx</samp>’</dt>
|
|
<dt> ‘<samp>arm</samp>’</dt>
|
|
<dt> ‘<samp>altivec</samp>’</dt>
|
|
<dt> ‘<samp>sh4</samp>’</dt>
|
|
<dt> ‘<samp>simplearm</samp>’</dt>
|
|
<dt> ‘<samp>simplearmv5te</samp>’</dt>
|
|
<dt> ‘<samp>simplearmv6</samp>’</dt>
|
|
<dt> ‘<samp>simpleneon</samp>’</dt>
|
|
<dt> ‘<samp>simplealpha</samp>’</dt>
|
|
<dt> ‘<samp>ipp</samp>’</dt>
|
|
<dt> ‘<samp>xvidmmx</samp>’</dt>
|
|
<dt> ‘<samp>faani</samp>’</dt>
|
|
<dd><p>floating point AAN IDCT
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>slice_count <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>ec <var>flags</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set error concealment strategy.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>guess_mvs</samp>’</dt>
|
|
<dd><p>iterative motion vector (MV) search (slow)
|
|
</p></dd>
|
|
<dt> ‘<samp>deblock</samp>’</dt>
|
|
<dd><p>use strong deblock filter for damaged MBs
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>bits_per_coded_sample <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>pred <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set prediction method.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>left</samp>’</dt>
|
|
<dt> ‘<samp>plane</samp>’</dt>
|
|
<dt> ‘<samp>median</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>aspect <var>rational number</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set sample aspect ratio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>debug <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>’</dt>
|
|
<dd><p>Print specific debug info.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>pict</samp>’</dt>
|
|
<dd><p>picture info
|
|
</p></dd>
|
|
<dt> ‘<samp>rc</samp>’</dt>
|
|
<dd><p>rate control
|
|
</p></dd>
|
|
<dt> ‘<samp>bitstream</samp>’</dt>
|
|
<dt> ‘<samp>mb_type</samp>’</dt>
|
|
<dd><p>macroblock (MB) type
|
|
</p></dd>
|
|
<dt> ‘<samp>qp</samp>’</dt>
|
|
<dd><p>per-block quantization parameter (QP)
|
|
</p></dd>
|
|
<dt> ‘<samp>mv</samp>’</dt>
|
|
<dd><p>motion vector
|
|
</p></dd>
|
|
<dt> ‘<samp>dct_coeff</samp>’</dt>
|
|
<dt> ‘<samp>skip</samp>’</dt>
|
|
<dt> ‘<samp>startcode</samp>’</dt>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dt> ‘<samp>er</samp>’</dt>
|
|
<dd><p>error recognition
|
|
</p></dd>
|
|
<dt> ‘<samp>mmco</samp>’</dt>
|
|
<dd><p>memory management control operations (H.264)
|
|
</p></dd>
|
|
<dt> ‘<samp>bugs</samp>’</dt>
|
|
<dt> ‘<samp>vis_qp</samp>’</dt>
|
|
<dd><p>visualize quantization parameter (QP), lower QP are tinted greener
|
|
</p></dd>
|
|
<dt> ‘<samp>vis_mb_type</samp>’</dt>
|
|
<dd><p>visualize block types
|
|
</p></dd>
|
|
<dt> ‘<samp>buffers</samp>’</dt>
|
|
<dd><p>picture buffer allocations
|
|
</p></dd>
|
|
<dt> ‘<samp>thread_ops</samp>’</dt>
|
|
<dd><p>threading operations
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>vismv <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd><p>Visualize motion vectors (MVs).
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>pf</samp>’</dt>
|
|
<dd><p>forward predicted MVs of P-frames
|
|
</p></dd>
|
|
<dt> ‘<samp>bf</samp>’</dt>
|
|
<dd><p>forward predicted MVs of B-frames
|
|
</p></dd>
|
|
<dt> ‘<samp>bb</samp>’</dt>
|
|
<dd><p>backward predicted MVs of B-frames
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>cmp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set full pel me compare function.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>sum of absolute differences, fast (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dd><p>sum of squared errors
|
|
</p></dd>
|
|
<dt> ‘<samp>satd</samp>’</dt>
|
|
<dd><p>sum of absolute Hadamard transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>dct</samp>’</dt>
|
|
<dd><p>sum of absolute DCT transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>sum of squared quantization errors (avoid, low quality)
|
|
</p></dd>
|
|
<dt> ‘<samp>bit</samp>’</dt>
|
|
<dd><p>number of bits needed for the block
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>rate distortion optimal, slow
|
|
</p></dd>
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>0
|
|
</p></dd>
|
|
<dt> ‘<samp>vsad</samp>’</dt>
|
|
<dd><p>sum of absolute vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>vsse</samp>’</dt>
|
|
<dd><p>sum of squared vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>nsse</samp>’</dt>
|
|
<dd><p>noise preserving sum of squared differences
|
|
</p></dd>
|
|
<dt> ‘<samp>w53</samp>’</dt>
|
|
<dd><p>5/3 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>w97</samp>’</dt>
|
|
<dd><p>9/7 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>dctmax</samp>’</dt>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>subcmp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set sub pel me compare function.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>sum of absolute differences, fast (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dd><p>sum of squared errors
|
|
</p></dd>
|
|
<dt> ‘<samp>satd</samp>’</dt>
|
|
<dd><p>sum of absolute Hadamard transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>dct</samp>’</dt>
|
|
<dd><p>sum of absolute DCT transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>sum of squared quantization errors (avoid, low quality)
|
|
</p></dd>
|
|
<dt> ‘<samp>bit</samp>’</dt>
|
|
<dd><p>number of bits needed for the block
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>rate distortion optimal, slow
|
|
</p></dd>
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>0
|
|
</p></dd>
|
|
<dt> ‘<samp>vsad</samp>’</dt>
|
|
<dd><p>sum of absolute vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>vsse</samp>’</dt>
|
|
<dd><p>sum of squared vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>nsse</samp>’</dt>
|
|
<dd><p>noise preserving sum of squared differences
|
|
</p></dd>
|
|
<dt> ‘<samp>w53</samp>’</dt>
|
|
<dd><p>5/3 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>w97</samp>’</dt>
|
|
<dd><p>9/7 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>dctmax</samp>’</dt>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>mbcmp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set macroblock compare function.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>sum of absolute differences, fast (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dd><p>sum of squared errors
|
|
</p></dd>
|
|
<dt> ‘<samp>satd</samp>’</dt>
|
|
<dd><p>sum of absolute Hadamard transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>dct</samp>’</dt>
|
|
<dd><p>sum of absolute DCT transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>sum of squared quantization errors (avoid, low quality)
|
|
</p></dd>
|
|
<dt> ‘<samp>bit</samp>’</dt>
|
|
<dd><p>number of bits needed for the block
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>rate distortion optimal, slow
|
|
</p></dd>
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>0
|
|
</p></dd>
|
|
<dt> ‘<samp>vsad</samp>’</dt>
|
|
<dd><p>sum of absolute vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>vsse</samp>’</dt>
|
|
<dd><p>sum of squared vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>nsse</samp>’</dt>
|
|
<dd><p>noise preserving sum of squared differences
|
|
</p></dd>
|
|
<dt> ‘<samp>w53</samp>’</dt>
|
|
<dd><p>5/3 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>w97</samp>’</dt>
|
|
<dd><p>9/7 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>dctmax</samp>’</dt>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>ildctcmp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set interlaced dct compare function.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>sum of absolute differences, fast (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dd><p>sum of squared errors
|
|
</p></dd>
|
|
<dt> ‘<samp>satd</samp>’</dt>
|
|
<dd><p>sum of absolute Hadamard transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>dct</samp>’</dt>
|
|
<dd><p>sum of absolute DCT transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>sum of squared quantization errors (avoid, low quality)
|
|
</p></dd>
|
|
<dt> ‘<samp>bit</samp>’</dt>
|
|
<dd><p>number of bits needed for the block
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>rate distortion optimal, slow
|
|
</p></dd>
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>0
|
|
</p></dd>
|
|
<dt> ‘<samp>vsad</samp>’</dt>
|
|
<dd><p>sum of absolute vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>vsse</samp>’</dt>
|
|
<dd><p>sum of squared vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>nsse</samp>’</dt>
|
|
<dd><p>noise preserving sum of squared differences
|
|
</p></dd>
|
|
<dt> ‘<samp>w53</samp>’</dt>
|
|
<dd><p>5/3 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>w97</samp>’</dt>
|
|
<dd><p>9/7 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>dctmax</samp>’</dt>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>dia_size <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set diamond type & size for motion estimation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>last_pred <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set amount of motion predictors from the previous frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>preme <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set pre motion estimation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>precmp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set pre motion estimation compare function.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>sum of absolute differences, fast (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dd><p>sum of squared errors
|
|
</p></dd>
|
|
<dt> ‘<samp>satd</samp>’</dt>
|
|
<dd><p>sum of absolute Hadamard transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>dct</samp>’</dt>
|
|
<dd><p>sum of absolute DCT transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>sum of squared quantization errors (avoid, low quality)
|
|
</p></dd>
|
|
<dt> ‘<samp>bit</samp>’</dt>
|
|
<dd><p>number of bits needed for the block
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>rate distortion optimal, slow
|
|
</p></dd>
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>0
|
|
</p></dd>
|
|
<dt> ‘<samp>vsad</samp>’</dt>
|
|
<dd><p>sum of absolute vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>vsse</samp>’</dt>
|
|
<dd><p>sum of squared vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>nsse</samp>’</dt>
|
|
<dd><p>noise preserving sum of squared differences
|
|
</p></dd>
|
|
<dt> ‘<samp>w53</samp>’</dt>
|
|
<dd><p>5/3 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>w97</samp>’</dt>
|
|
<dd><p>9/7 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>dctmax</samp>’</dt>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>pre_dia_size <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set diamond type & size for motion estimation pre-pass.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>subq <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set sub pel motion estimation quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dtg_active_format <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>me_range <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set limit motion vectors range (1023 for DivX player).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ibias <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set intra quant bias.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pbias <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set inter quant bias.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color_table_id <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>global_quality <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>coder <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>vlc</samp>’</dt>
|
|
<dd><p>variable length coder / huffman coder
|
|
</p></dd>
|
|
<dt> ‘<samp>ac</samp>’</dt>
|
|
<dd><p>arithmetic coder
|
|
</p></dd>
|
|
<dt> ‘<samp>raw</samp>’</dt>
|
|
<dd><p>raw (no encoding)
|
|
</p></dd>
|
|
<dt> ‘<samp>rle</samp>’</dt>
|
|
<dd><p>run-length coder
|
|
</p></dd>
|
|
<dt> ‘<samp>deflate</samp>’</dt>
|
|
<dd><p>deflate-based coder
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>context <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set context model.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>slice_flags <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>xvmc_acceleration <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>mbd <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set macroblock decision algorithm (high quality mode).
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>simple</samp>’</dt>
|
|
<dd><p>use mbcmp (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>bits</samp>’</dt>
|
|
<dd><p>use fewest bits
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>use best rate distortion
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>stream_codec_tag <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>sc_threshold <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set scene change threshold.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lmin <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set min lagrange factor (VBR).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lmax <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set max lagrange factor (VBR).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nr <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set noise reduction.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_init_occupancy <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set number of bits which should be loaded into the rc buffer before
|
|
decoding starts.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags2 <var>flags</var> (<em>decoding/encoding,audio,video</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>fast</samp>’</dt>
|
|
<dd><p>Allow non spec compliant speedup tricks.
|
|
</p></dd>
|
|
<dt> ‘<samp>sgop</samp>’</dt>
|
|
<dd><p>Deprecated, use mpegvideo private options instead.
|
|
</p></dd>
|
|
<dt> ‘<samp>noout</samp>’</dt>
|
|
<dd><p>Skip bitstream encoding.
|
|
</p></dd>
|
|
<dt> ‘<samp>ignorecrop</samp>’</dt>
|
|
<dd><p>Ignore cropping information from sps.
|
|
</p></dd>
|
|
<dt> ‘<samp>local_header</samp>’</dt>
|
|
<dd><p>Place global headers at every keyframe instead of in extradata.
|
|
</p></dd>
|
|
<dt> ‘<samp>chunks</samp>’</dt>
|
|
<dd><p>Frame data might be split into multiple chunks.
|
|
</p></dd>
|
|
<dt> ‘<samp>showall</samp>’</dt>
|
|
<dd><p>Show all frames before the first keyframe.
|
|
</p></dd>
|
|
<dt> ‘<samp>skiprd</samp>’</dt>
|
|
<dd><p>Deprecated, use mpegvideo private options instead.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>error <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>qns <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Deprecated, use mpegvideo private options instead.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>threads <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>detect a good number of threads
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>me_threshold <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set motion estimation threshold.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mb_threshold <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set macroblock threshold.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dc <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set intra_dc_precision.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nssew <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set nsse weight.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_top <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set number of macroblock rows at the top which are skipped.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_bottom <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set number of macroblock rows at the bottom which are skipped.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>profile <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>unknown</samp>’</dt>
|
|
<dt> ‘<samp>aac_main</samp>’</dt>
|
|
<dt> ‘<samp>aac_low</samp>’</dt>
|
|
<dt> ‘<samp>aac_ssr</samp>’</dt>
|
|
<dt> ‘<samp>aac_ltp</samp>’</dt>
|
|
<dt> ‘<samp>aac_he</samp>’</dt>
|
|
<dt> ‘<samp>aac_he_v2</samp>’</dt>
|
|
<dt> ‘<samp>aac_ld</samp>’</dt>
|
|
<dt> ‘<samp>aac_eld</samp>’</dt>
|
|
<dt> ‘<samp>mpeg2_aac_low</samp>’</dt>
|
|
<dt> ‘<samp>mpeg2_aac_he</samp>’</dt>
|
|
<dt> ‘<samp>dts</samp>’</dt>
|
|
<dt> ‘<samp>dts_es</samp>’</dt>
|
|
<dt> ‘<samp>dts_96_24</samp>’</dt>
|
|
<dt> ‘<samp>dts_hd_hra</samp>’</dt>
|
|
<dt> ‘<samp>dts_hd_ma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>level <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>unknown</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>lowres <var>integer</var> (<em>decoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_threshold <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set frame skip threshold.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_factor <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set frame skip factor.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_exp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set frame skip exponent.
|
|
Negative values behave identical to the corresponding positive ones, except
|
|
that the score is normalized.
|
|
Positive values exist primarly for compatibility reasons and are not so useful.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skipcmp <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set frame skip compare function.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>sum of absolute differences, fast (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>sse</samp>’</dt>
|
|
<dd><p>sum of squared errors
|
|
</p></dd>
|
|
<dt> ‘<samp>satd</samp>’</dt>
|
|
<dd><p>sum of absolute Hadamard transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>dct</samp>’</dt>
|
|
<dd><p>sum of absolute DCT transformed differences
|
|
</p></dd>
|
|
<dt> ‘<samp>psnr</samp>’</dt>
|
|
<dd><p>sum of squared quantization errors (avoid, low quality)
|
|
</p></dd>
|
|
<dt> ‘<samp>bit</samp>’</dt>
|
|
<dd><p>number of bits needed for the block
|
|
</p></dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>rate distortion optimal, slow
|
|
</p></dd>
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>0
|
|
</p></dd>
|
|
<dt> ‘<samp>vsad</samp>’</dt>
|
|
<dd><p>sum of absolute vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>vsse</samp>’</dt>
|
|
<dd><p>sum of squared vertical differences
|
|
</p></dd>
|
|
<dt> ‘<samp>nsse</samp>’</dt>
|
|
<dd><p>noise preserving sum of squared differences
|
|
</p></dd>
|
|
<dt> ‘<samp>w53</samp>’</dt>
|
|
<dd><p>5/3 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>w97</samp>’</dt>
|
|
<dd><p>9/7 wavelet, only used in snow
|
|
</p></dd>
|
|
<dt> ‘<samp>dctmax</samp>’</dt>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>border_mask <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Increase the quantizer for macroblocks close to borders.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mblmin <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set min macroblock lagrange factor (VBR).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mblmax <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set max macroblock lagrange factor (VBR).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mepc <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set motion estimation bitrate penalty compensation (1.0 = 256).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_loop_filter <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>skip_idct <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>skip_frame <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Make decoder discard processing depending on the frame type selected
|
|
by the option value.
|
|
</p>
|
|
<p>‘<samp>skip_loop_filter</samp>’ skips frame loop filtering, ‘<samp>skip_idct</samp>’
|
|
skips frame IDCT/dequantization, ‘<samp>skip_frame</samp>’ skips decoding.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Discard no frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>default</samp>’</dt>
|
|
<dd><p>Discard useless frames like 0-sized frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>noref</samp>’</dt>
|
|
<dd><p>Discard all non-reference frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bidir</samp>’</dt>
|
|
<dd><p>Discard all bidirectional frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nokey</samp>’</dt>
|
|
<dd><p>Discard all frames excepts keyframes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>all</samp>’</dt>
|
|
<dd><p>Discard all frames.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>default</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bidir_refine <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Refine the two motion vectors used in bidirectional macroblocks.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>brd_scale <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Downscale frames for dynamic B-frame decision.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>keyint_min <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set minimum interval between IDR-frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>refs <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set reference frames to consider for motion compensation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chromaoffset <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set chroma qp offset from luma.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>trellis <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dd><p>Set rate-distortion optimal quantization.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sc_factor <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set value multiplied by qscale for each frame and added to
|
|
scene_change_score.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mv0_threshold <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>b_sensitivity <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Adjust sensitivity of b_frame_strategy 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>compression_level <var>integer</var> (<em>encoding,audio,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>min_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>’</dt>
|
|
<dt> ‘<samp>max_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>’</dt>
|
|
<dt> ‘<samp>timecode_frame_start <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set GOP timecode frame start number, in non drop frame format.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>request_channels <var>integer</var> (<em>decoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set desired number of audio channels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bits_per_raw_sample <var>integer</var></samp>’</dt>
|
|
<dt> ‘<samp>channel_layout <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p></dd>
|
|
<dt> ‘<samp>request_channel_layout <var>integer</var> (<em>decoding,audio</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p></dd>
|
|
<dt> ‘<samp>rc_max_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>rc_min_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>ticks_per_frame <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>color_primaries <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>color_trc <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>colorspace <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>color_range <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>chroma_sample_location <var>integer</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dt> ‘<samp>log_level_offset <var>integer</var></samp>’</dt>
|
|
<dd><p>Set the log level offset.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>slices <var>integer</var> (<em>encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Number of slices, used in parallelized encoding.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>thread_type <var>flags</var> (<em>decoding/encoding,video</em>)</samp>’</dt>
|
|
<dd><p>Select multithreading type.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>slice</samp>’</dt>
|
|
<dt> ‘<samp>frame</samp>’</dt>
|
|
</dl>
|
|
</dd>
|
|
<dt> ‘<samp>audio_service_type <var>integer</var> (<em>encoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set audio service type.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>ma</samp>’</dt>
|
|
<dd><p>Main Audio Service
|
|
</p></dd>
|
|
<dt> ‘<samp>ef</samp>’</dt>
|
|
<dd><p>Effects
|
|
</p></dd>
|
|
<dt> ‘<samp>vi</samp>’</dt>
|
|
<dd><p>Visually Impaired
|
|
</p></dd>
|
|
<dt> ‘<samp>hi</samp>’</dt>
|
|
<dd><p>Hearing Impaired
|
|
</p></dd>
|
|
<dt> ‘<samp>di</samp>’</dt>
|
|
<dd><p>Dialogue
|
|
</p></dd>
|
|
<dt> ‘<samp>co</samp>’</dt>
|
|
<dd><p>Commentary
|
|
</p></dd>
|
|
<dt> ‘<samp>em</samp>’</dt>
|
|
<dd><p>Emergency
|
|
</p></dd>
|
|
<dt> ‘<samp>vo</samp>’</dt>
|
|
<dd><p>Voice Over
|
|
</p></dd>
|
|
<dt> ‘<samp>ka</samp>’</dt>
|
|
<dd><p>Karaoke
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>request_sample_fmt <var>sample_fmt</var> (<em>decoding,audio</em>)</samp>’</dt>
|
|
<dd><p>Set sample format audio decoders should prefer. Default value is
|
|
<code>none</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pkt_timebase <var>rational number</var></samp>’</dt>
|
|
<dt> ‘<samp>sub_charenc <var>encoding</var> (<em>decoding,subtitles</em>)</samp>’</dt>
|
|
<dd><p>Set the input subtitles character encoding.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>field_order <var>field_order</var> (<em>video</em>)</samp>’</dt>
|
|
<dd><p>Set/override the field order of the video.
|
|
Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>progressive</samp>’</dt>
|
|
<dd><p>Progressive video
|
|
</p></dd>
|
|
<dt> ‘<samp>tt</samp>’</dt>
|
|
<dd><p>Interlaced video, top field coded and displayed first
|
|
</p></dd>
|
|
<dt> ‘<samp>bb</samp>’</dt>
|
|
<dd><p>Interlaced video, bottom field coded and displayed first
|
|
</p></dd>
|
|
<dt> ‘<samp>tb</samp>’</dt>
|
|
<dd><p>Interlaced video, top coded first, bottom displayed first
|
|
</p></dd>
|
|
<dt> ‘<samp>bt</samp>’</dt>
|
|
<dd><p>Interlaced video, bottom coded first, top displayed first
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>skip_alpha <var>integer</var> (<em>decoding,video</em>)</samp>’</dt>
|
|
<dd><p>Set to 1 to disable processing alpha (transparency). This works like the
|
|
‘<samp>gray</samp>’ flag in the ‘<samp>flags</samp>’ option which skips chroma information
|
|
instead of alpha. Default is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<a name="Decoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Decoders">12. Decoders</a></h1>
|
|
|
|
<p>Decoders are configured elements in FFmpeg which allow the decoding of
|
|
multimedia streams.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported native decoders
|
|
are enabled by default. Decoders requiring an external library must be enabled
|
|
manually via the corresponding <code>--enable-lib</code> option. You can list all
|
|
available decoders using the configure option <code>--list-decoders</code>.
|
|
</p>
|
|
<p>You can disable all the decoders with the configure option
|
|
<code>--disable-decoders</code> and selectively enable / disable single decoders
|
|
with the options <code>--enable-decoder=<var>DECODER</var></code> /
|
|
<code>--disable-decoder=<var>DECODER</var></code>.
|
|
</p>
|
|
<p>The option <code>-decoders</code> of the ff* tools will display the list of
|
|
enabled decoders.
|
|
</p>
|
|
|
|
<a name="Video-Decoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Decoders">13. Video Decoders</a></h1>
|
|
|
|
<p>A description of some of the currently available video decoders
|
|
follows.
|
|
</p>
|
|
<a name="rawvideo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rawvideo">13.1 rawvideo</a></h2>
|
|
|
|
<p>Raw video decoder.
|
|
</p>
|
|
<p>This decoder decodes rawvideo streams.
|
|
</p>
|
|
<a name="Options-26"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-26">13.1.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>top <var>top_field_first</var></samp>’</dt>
|
|
<dd><p>Specify the assumed field type of the input video.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>-1</samp>’</dt>
|
|
<dd><p>the video is assumed to be progressive (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dd><p>bottom-field-first is assumed
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>top-field-first is assumed
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<a name="Audio-Decoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Decoders">14. Audio Decoders</a></h1>
|
|
|
|
<p>A description of some of the currently available audio decoders
|
|
follows.
|
|
</p>
|
|
<a name="ac3"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ac3">14.1 ac3</a></h2>
|
|
|
|
<p>AC-3 audio decoder.
|
|
</p>
|
|
<p>This decoder implements part of ATSC A/52:2010 and ETSI TS 102 366, as well as
|
|
the undocumented RealAudio 3 (a.k.a. dnet).
|
|
</p>
|
|
<a name="AC_002d3-Decoder-Options"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-AC_002d3-Decoder-Options">14.1.1 AC-3 Decoder Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-drc_scale <var>value</var></samp>’</dt>
|
|
<dd><p>Dynamic Range Scale Factor. The factor to apply to dynamic range values
|
|
from the AC-3 stream. This factor is applied exponentially.
|
|
There are 3 notable scale factor ranges:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>drc_scale == 0</samp>’</dt>
|
|
<dd><p>DRC disabled. Produces full range audio.
|
|
</p></dd>
|
|
<dt> ‘<samp>0 < drc_scale <= 1</samp>’</dt>
|
|
<dd><p>DRC enabled. Applies a fraction of the stream DRC value.
|
|
Audio reproduction is between full range and full compression.
|
|
</p></dd>
|
|
<dt> ‘<samp>drc_scale > 1</samp>’</dt>
|
|
<dd><p>DRC enabled. Applies drc_scale asymmetrically.
|
|
Loud sounds are fully compressed. Soft sounds are enhanced.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="ffwavesynth"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ffwavesynth">14.2 ffwavesynth</a></h2>
|
|
|
|
<p>Internal wave synthetizer.
|
|
</p>
|
|
<p>This decoder generates wave patterns according to predefined sequences. Its
|
|
use is purely internal and the format of the data it accepts is not publicly
|
|
documented.
|
|
</p>
|
|
<a name="libcelt"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libcelt">14.3 libcelt</a></h2>
|
|
|
|
<p>libcelt decoder wrapper.
|
|
</p>
|
|
<p>libcelt allows libavcodec to decode the Xiph CELT ultra-low delay audio codec.
|
|
Requires the presence of the libcelt headers and library during configuration.
|
|
You need to explicitly configure the build with <code>--enable-libcelt</code>.
|
|
</p>
|
|
<a name="libgsm"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libgsm">14.4 libgsm</a></h2>
|
|
|
|
<p>libgsm decoder wrapper.
|
|
</p>
|
|
<p>libgsm allows libavcodec to decode the GSM full rate audio codec. Requires
|
|
the presence of the libgsm headers and library during configuration. You need
|
|
to explicitly configure the build with <code>--enable-libgsm</code>.
|
|
</p>
|
|
<p>This decoder supports both the ordinary GSM and the Microsoft variant.
|
|
</p>
|
|
<a name="libilbc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libilbc">14.5 libilbc</a></h2>
|
|
|
|
<p>libilbc decoder wrapper.
|
|
</p>
|
|
<p>libilbc allows libavcodec to decode the Internet Low Bitrate Codec (iLBC)
|
|
audio codec. Requires the presence of the libilbc headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libilbc</code>.
|
|
</p>
|
|
<a name="Options-46"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-46">14.5.1 Options</a></h3>
|
|
|
|
<p>The following option is supported by the libilbc wrapper.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>enhance</samp>’</dt>
|
|
<dd>
|
|
<p>Enable the enhancement of the decoded audio when set to 1. The default
|
|
value is 0 (disabled).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libopencore_002damrnb-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libopencore_002damrnb-1">14.6 libopencore-amrnb</a></h2>
|
|
|
|
<p>libopencore-amrnb decoder wrapper.
|
|
</p>
|
|
<p>libopencore-amrnb allows libavcodec to decode the Adaptive Multi-Rate
|
|
Narrowband audio codec. Using it requires the presence of the
|
|
libopencore-amrnb headers and library during configuration. You need to
|
|
explicitly configure the build with <code>--enable-libopencore-amrnb</code>.
|
|
</p>
|
|
<p>An FFmpeg native decoder for AMR-NB exists, so users can decode AMR-NB
|
|
without this library.
|
|
</p>
|
|
<a name="libopencore_002damrwb"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libopencore_002damrwb">14.7 libopencore-amrwb</a></h2>
|
|
|
|
<p>libopencore-amrwb decoder wrapper.
|
|
</p>
|
|
<p>libopencore-amrwb allows libavcodec to decode the Adaptive Multi-Rate
|
|
Wideband audio codec. Using it requires the presence of the
|
|
libopencore-amrwb headers and library during configuration. You need to
|
|
explicitly configure the build with <code>--enable-libopencore-amrwb</code>.
|
|
</p>
|
|
<p>An FFmpeg native decoder for AMR-WB exists, so users can decode AMR-WB
|
|
without this library.
|
|
</p>
|
|
<a name="libopus-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libopus-1">14.8 libopus</a></h2>
|
|
|
|
<p>libopus decoder wrapper.
|
|
</p>
|
|
<p>libopus allows libavcodec to decode the Opus Interactive Audio Codec.
|
|
Requires the presence of the libopus headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libopus</code>.
|
|
</p>
|
|
|
|
<a name="Subtitles-Decoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Subtitles-Decoders">15. Subtitles Decoders</a></h1>
|
|
|
|
<a name="dvdsub"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-dvdsub">15.1 dvdsub</a></h2>
|
|
|
|
<p>This codec decodes the bitmap subtitles used in DVDs; the same subtitles can
|
|
also be found in VobSub file pairs and in some Matroska files.
|
|
</p>
|
|
<a name="Options-28"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-28">15.1.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>palette</samp>’</dt>
|
|
<dd><p>Specify the global palette used by the bitmaps. When stored in VobSub, the
|
|
palette is normally specified in the index file; in Matroska, the palette is
|
|
stored in the codec extra-data in the same format as in VobSub. In DVDs, the
|
|
palette is stored in the IFO file, and therefore not available when reading
|
|
from dumped VOB files.
|
|
</p>
|
|
<p>The format for this option is a string containing 16 24-bits hexadecimal
|
|
numbers (without 0x prefix) separated by comas, for example <code>0d00ee,
|
|
ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
|
|
7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="libzvbi_002dteletext"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libzvbi_002dteletext">15.2 libzvbi-teletext</a></h2>
|
|
|
|
<p>Libzvbi allows libavcodec to decode DVB teletext pages and DVB teletext
|
|
subtitles. Requires the presence of the libzvbi headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libzvbi</code>.
|
|
</p>
|
|
<a name="Options-13"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-13">15.2.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>txt_page</samp>’</dt>
|
|
<dd><p>List of teletext page numbers to decode. You may use the special * string to
|
|
match all pages. Pages that do not match the specified list are dropped.
|
|
Default value is *.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_chop_top</samp>’</dt>
|
|
<dd><p>Discards the top teletext line. Default value is 1.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_format</samp>’</dt>
|
|
<dd><p>Specifies the format of the decoded subtitles. The teletext decoder is capable
|
|
of decoding the teletext pages to bitmaps or to simple text, you should use
|
|
"bitmap" for teletext pages, because certain graphics and colors cannot be
|
|
expressed in simple text. You might use "text" for teletext based subtitles if
|
|
your application can handle simple text based subtitles. Default value is
|
|
bitmap.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_left</samp>’</dt>
|
|
<dd><p>X offset of generated bitmaps, default is 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_top</samp>’</dt>
|
|
<dd><p>Y offset of generated bitmaps, default is 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_chop_spaces</samp>’</dt>
|
|
<dd><p>Chops leading and trailing spaces and removes empty lines from the generated
|
|
text. This option is useful for teletext based subtitles where empty spaces may
|
|
be present at the start or at the end of the lines or empty lines may be
|
|
present between the subtitle lines because of double-sized teletext charactes.
|
|
Default value is 1.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_duration</samp>’</dt>
|
|
<dd><p>Sets the display duration of the decoded teletext pages or subtitles in
|
|
miliseconds. Default value is 30000 which is 30 seconds.
|
|
</p></dd>
|
|
<dt> ‘<samp>txt_transparent</samp>’</dt>
|
|
<dd><p>Force transparent background of the generated teletext bitmaps. Default value
|
|
is 0 which means an opaque (black) background.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Encoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Encoders">16. Encoders</a></h1>
|
|
|
|
<p>Encoders are configured elements in FFmpeg which allow the encoding of
|
|
multimedia streams.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported native encoders
|
|
are enabled by default. Encoders requiring an external library must be enabled
|
|
manually via the corresponding <code>--enable-lib</code> option. You can list all
|
|
available encoders using the configure option <code>--list-encoders</code>.
|
|
</p>
|
|
<p>You can disable all the encoders with the configure option
|
|
<code>--disable-encoders</code> and selectively enable / disable single encoders
|
|
with the options <code>--enable-encoder=<var>ENCODER</var></code> /
|
|
<code>--disable-encoder=<var>ENCODER</var></code>.
|
|
</p>
|
|
<p>The option <code>-encoders</code> of the ff* tools will display the list of
|
|
enabled encoders.
|
|
</p>
|
|
|
|
<a name="Audio-Encoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Encoders">17. Audio Encoders</a></h1>
|
|
|
|
<p>A description of some of the currently available audio encoders
|
|
follows.
|
|
</p>
|
|
<p><a name="aacenc"></a>
|
|
</p><a name="aac"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aac">17.1 aac</a></h2>
|
|
|
|
<p>Advanced Audio Coding (AAC) encoder.
|
|
</p>
|
|
<p>This encoder is an experimental FFmpeg-native AAC encoder. Currently only the
|
|
low complexity (AAC-LC) profile is supported. To use this encoder, you must set
|
|
‘<samp>strict</samp>’ option to ‘<samp>experimental</samp>’ or lower.
|
|
</p>
|
|
<p>As this encoder is experimental, unexpected behavior may exist from time to
|
|
time. For a more stable AAC encoder, see <a href="#libvo_002daacenc">libvo-aacenc</a>. However, be warned
|
|
that it has a worse quality reported by some users.
|
|
</p>
|
|
<p>See also <a href="#libfdk_002daac_002denc">libfdk_aac</a> and <a href="#libfaac">libfaac</a>.
|
|
</p>
|
|
<a name="Options-22"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-22">17.1.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Set bit rate in bits/s. Setting this automatically activates constant bit rate
|
|
(CBR) mode.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Set quality for variable bit rate (VBR) mode. This option is valid only using
|
|
the <code>ffmpeg</code> command-line tool. For library interface users, use
|
|
‘<samp>global_quality</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stereo_mode</samp>’</dt>
|
|
<dd><p>Set stereo encoding mode. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Automatically selected by the encoder.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ms_off</samp>’</dt>
|
|
<dd><p>Disable middle/side encoding. This is the default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ms_force</samp>’</dt>
|
|
<dd><p>Force middle/side encoding.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>aac_coder</samp>’</dt>
|
|
<dd><p>Set AAC encoder coding method. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>faac</samp>’</dt>
|
|
<dd><p>FAAC-inspired method.
|
|
</p>
|
|
<p>This method is a simplified reimplementation of the method used in FAAC, which
|
|
sets thresholds proportional to the band energies, and then decreases all the
|
|
thresholds with quantizer steps to find the appropriate quantization with
|
|
distortion below threshold band by band.
|
|
</p>
|
|
<p>The quality of this method is comparable to the two loop searching method
|
|
descibed below, but somewhat a little better and slower.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>anmr</samp>’</dt>
|
|
<dd><p>Average noise to mask ratio (ANMR) trellis-based solution.
|
|
</p>
|
|
<p>This has a theoretic best quality out of all the coding methods, but at the
|
|
cost of the slowest speed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>twoloop</samp>’</dt>
|
|
<dd><p>Two loop searching (TLS) method.
|
|
</p>
|
|
<p>This method first sets quantizers depending on band thresholds and then tries
|
|
to find an optimal combination by adding or subtracting a specific value from
|
|
all quantizers and adjusting some individual quantizer a little.
|
|
</p>
|
|
<p>This method produces similar quality with the FAAC method and is the default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fast</samp>’</dt>
|
|
<dd><p>Constant quantizer method.
|
|
</p>
|
|
<p>This method sets a constant quantizer for all bands. This is the fastest of all
|
|
the methods, yet produces the worst quality.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="ac3-and-ac3_005ffixed"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ac3-and-ac3_005ffixed">17.2 ac3 and ac3_fixed</a></h2>
|
|
|
|
<p>AC-3 audio encoders.
|
|
</p>
|
|
<p>These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
|
|
the undocumented RealAudio 3 (a.k.a. dnet).
|
|
</p>
|
|
<p>The <var>ac3</var> encoder uses floating-point math, while the <var>ac3_fixed</var>
|
|
encoder only uses fixed-point integer math. This does not mean that one is
|
|
always faster, just that one or the other may be better suited to a
|
|
particular system. The floating-point encoder will generally produce better
|
|
quality audio for a given bitrate. The <var>ac3_fixed</var> encoder is not the
|
|
default codec for any of the output formats, so it must be specified explicitly
|
|
using the option <code>-acodec ac3_fixed</code> in order to use it.
|
|
</p>
|
|
<a name="AC_002d3-Metadata"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-AC_002d3-Metadata">17.2.1 AC-3 Metadata</a></h3>
|
|
|
|
<p>The AC-3 metadata options are used to set parameters that describe the audio,
|
|
but in most cases do not affect the audio encoding itself. Some of the options
|
|
do directly affect or influence the decoding and playback of the resulting
|
|
bitstream, while others are just for informational purposes. A few of the
|
|
options will add bits to the output stream that could otherwise be used for
|
|
audio data, and will thus affect the quality of the output. Those will be
|
|
indicated accordingly with a note in the option list below.
|
|
</p>
|
|
<p>These parameters are described in detail in several publicly-available
|
|
documents.
|
|
</p><ul>
|
|
<li> <a href="http://www.atsc.org/cms/standards/a_52-2010.pdf">A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard</a>
|
|
</li><li> <a href="http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf">A/54 - Guide to the Use of the ATSC Digital Television Standard</a>
|
|
</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf">Dolby Metadata Guide</a>
|
|
</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf">Dolby Digital Professional Encoding Guidelines</a>
|
|
</li></ul>
|
|
|
|
<a name="Metadata-Control-Options"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Metadata-Control-Options">17.2.1.1 Metadata Control Options</a></h4>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-per_frame_metadata <var>boolean</var></samp>’</dt>
|
|
<dd><p>Allow Per-Frame Metadata. Specifies if the encoder should check for changing
|
|
metadata for each frame.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dd><p>The metadata values set at initialization will be used for every frame in the
|
|
stream. (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>Metadata values can be changed before encoding each frame.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Downmix-Levels"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Downmix-Levels">17.2.1.2 Downmix Levels</a></h4>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-center_mixlev <var>level</var></samp>’</dt>
|
|
<dd><p>Center Mix Level. The amount of gain the decoder should apply to the center
|
|
channel when downmixing to stereo. This field will only be written to the
|
|
bitstream if a center channel is present. The value is specified as a scale
|
|
factor. There are 3 valid values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0.707</samp>’</dt>
|
|
<dd><p>Apply -3dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.595</samp>’</dt>
|
|
<dd><p>Apply -4.5dB gain (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0.500</samp>’</dt>
|
|
<dd><p>Apply -6dB gain
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-surround_mixlev <var>level</var></samp>’</dt>
|
|
<dd><p>Surround Mix Level. The amount of gain the decoder should apply to the surround
|
|
channel(s) when downmixing to stereo. This field will only be written to the
|
|
bitstream if one or more surround channels are present. The value is specified
|
|
as a scale factor. There are 3 valid values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0.707</samp>’</dt>
|
|
<dd><p>Apply -3dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.500</samp>’</dt>
|
|
<dd><p>Apply -6dB gain (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0.000</samp>’</dt>
|
|
<dd><p>Silence Surround Channel(s)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Audio-Production-Information"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Audio-Production-Information">17.2.1.3 Audio Production Information</a></h4>
|
|
<p>Audio Production Information is optional information describing the mixing
|
|
environment. Either none or both of the fields are written to the bitstream.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-mixing_level <var>number</var></samp>’</dt>
|
|
<dd><p>Mixing Level. Specifies peak sound pressure level (SPL) in the production
|
|
environment when the mix was mastered. Valid values are 80 to 111, or -1 for
|
|
unknown or not indicated. The default value is -1, but that value cannot be
|
|
used if the Audio Production Information is written to the bitstream. Therefore,
|
|
if the <code>room_type</code> option is not the default value, the <code>mixing_level</code>
|
|
option must not be -1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-room_type <var>type</var></samp>’</dt>
|
|
<dd><p>Room Type. Describes the equalization used during the final mixing session at
|
|
the studio or on the dubbing stage. A large room is a dubbing stage with the
|
|
industry standard X-curve equalization; a small room has flat equalization.
|
|
This field will not be written to the bitstream if both the <code>mixing_level</code>
|
|
option and the <code>room_type</code> option have the default values.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>notindicated</samp>’</dt>
|
|
<dd><p>Not Indicated (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>large</samp>’</dt>
|
|
<dd><p>Large Room
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dt> ‘<samp>small</samp>’</dt>
|
|
<dd><p>Small Room
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Other-Metadata-Options"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Other-Metadata-Options">17.2.1.4 Other Metadata Options</a></h4>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-copyright <var>boolean</var></samp>’</dt>
|
|
<dd><p>Copyright Indicator. Specifies whether a copyright exists for this audio.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>No Copyright Exists (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>Copyright Exists
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-dialnorm <var>value</var></samp>’</dt>
|
|
<dd><p>Dialogue Normalization. Indicates how far the average dialogue level of the
|
|
program is below digital 100% full scale (0 dBFS). This parameter determines a
|
|
level shift during audio reproduction that sets the average volume of the
|
|
dialogue to a preset level. The goal is to match volume level between program
|
|
sources. A value of -31dB will result in no volume level change, relative to
|
|
the source volume, during audio reproduction. Valid values are whole numbers in
|
|
the range -31 to -1, with -31 being the default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-dsur_mode <var>mode</var></samp>’</dt>
|
|
<dd><p>Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
|
|
(Pro Logic). This field will only be written to the bitstream if the audio
|
|
stream is stereo. Using this option does <b>NOT</b> mean the encoder will actually
|
|
apply Dolby Surround processing.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>notindicated</samp>’</dt>
|
|
<dd><p>Not Indicated (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>Not Dolby Surround Encoded
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>Dolby Surround Encoded
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-original <var>boolean</var></samp>’</dt>
|
|
<dd><p>Original Bit Stream Indicator. Specifies whether this audio is from the
|
|
original source and not a copy.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>Not Original Source
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>Original Source (default)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Extended-Bitstream-Information"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Extended-Bitstream-Information">17.2.2 Extended Bitstream Information</a></h3>
|
|
<p>The extended bitstream options are part of the Alternate Bit Stream Syntax as
|
|
specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
|
|
If any one parameter in a group is specified, all values in that group will be
|
|
written to the bitstream. Default values are used for those that are written
|
|
but have not been specified. If the mixing levels are written, the decoder
|
|
will use these values instead of the ones specified in the <code>center_mixlev</code>
|
|
and <code>surround_mixlev</code> options if it supports the Alternate Bit Stream
|
|
Syntax.
|
|
</p>
|
|
<a name="Extended-Bitstream-Information-_002d-Part-1"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Extended-Bitstream-Information-_002d-Part-1">17.2.2.1 Extended Bitstream Information - Part 1</a></h4>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-dmix_mode <var>mode</var></samp>’</dt>
|
|
<dd><p>Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
|
|
(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>notindicated</samp>’</dt>
|
|
<dd><p>Not Indicated (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>ltrt</samp>’</dt>
|
|
<dd><p>Lt/Rt Downmix Preferred
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dt> ‘<samp>loro</samp>’</dt>
|
|
<dd><p>Lo/Ro Downmix Preferred
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-ltrt_cmixlev <var>level</var></samp>’</dt>
|
|
<dd><p>Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
|
|
center channel when downmixing to stereo in Lt/Rt mode.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>1.414</samp>’</dt>
|
|
<dd><p>Apply +3dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>1.189</samp>’</dt>
|
|
<dd><p>Apply +1.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>1.000</samp>’</dt>
|
|
<dd><p>Apply 0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.841</samp>’</dt>
|
|
<dd><p>Apply -1.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.707</samp>’</dt>
|
|
<dd><p>Apply -3.0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.595</samp>’</dt>
|
|
<dd><p>Apply -4.5dB gain (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0.500</samp>’</dt>
|
|
<dd><p>Apply -6.0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.000</samp>’</dt>
|
|
<dd><p>Silence Center Channel
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-ltrt_surmixlev <var>level</var></samp>’</dt>
|
|
<dd><p>Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
|
|
surround channel(s) when downmixing to stereo in Lt/Rt mode.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0.841</samp>’</dt>
|
|
<dd><p>Apply -1.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.707</samp>’</dt>
|
|
<dd><p>Apply -3.0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.595</samp>’</dt>
|
|
<dd><p>Apply -4.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.500</samp>’</dt>
|
|
<dd><p>Apply -6.0dB gain (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0.000</samp>’</dt>
|
|
<dd><p>Silence Surround Channel(s)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-loro_cmixlev <var>level</var></samp>’</dt>
|
|
<dd><p>Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
|
|
center channel when downmixing to stereo in Lo/Ro mode.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>1.414</samp>’</dt>
|
|
<dd><p>Apply +3dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>1.189</samp>’</dt>
|
|
<dd><p>Apply +1.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>1.000</samp>’</dt>
|
|
<dd><p>Apply 0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.841</samp>’</dt>
|
|
<dd><p>Apply -1.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.707</samp>’</dt>
|
|
<dd><p>Apply -3.0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.595</samp>’</dt>
|
|
<dd><p>Apply -4.5dB gain (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0.500</samp>’</dt>
|
|
<dd><p>Apply -6.0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.000</samp>’</dt>
|
|
<dd><p>Silence Center Channel
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-loro_surmixlev <var>level</var></samp>’</dt>
|
|
<dd><p>Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
|
|
surround channel(s) when downmixing to stereo in Lo/Ro mode.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0.841</samp>’</dt>
|
|
<dd><p>Apply -1.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.707</samp>’</dt>
|
|
<dd><p>Apply -3.0dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.595</samp>’</dt>
|
|
<dd><p>Apply -4.5dB gain
|
|
</p></dd>
|
|
<dt> ‘<samp>0.500</samp>’</dt>
|
|
<dd><p>Apply -6.0dB gain (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0.000</samp>’</dt>
|
|
<dd><p>Silence Surround Channel(s)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Extended-Bitstream-Information-_002d-Part-2"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Extended-Bitstream-Information-_002d-Part-2">17.2.2.2 Extended Bitstream Information - Part 2</a></h4>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-dsurex_mode <var>mode</var></samp>’</dt>
|
|
<dd><p>Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
|
|
(7.1 matrixed to 5.1). Using this option does <b>NOT</b> mean the encoder will actually
|
|
apply Dolby Surround EX processing.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>notindicated</samp>’</dt>
|
|
<dd><p>Not Indicated (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>Dolby Surround EX Off
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>Dolby Surround EX On
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-dheadphone_mode <var>mode</var></samp>’</dt>
|
|
<dd><p>Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
|
|
encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
|
|
option does <b>NOT</b> mean the encoder will actually apply Dolby Headphone
|
|
processing.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>notindicated</samp>’</dt>
|
|
<dd><p>Not Indicated (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>Dolby Headphone Off
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>Dolby Headphone On
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-ad_conv_type <var>type</var></samp>’</dt>
|
|
<dd><p>A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
|
|
conversion.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>standard</samp>’</dt>
|
|
<dd><p>Standard A/D Converter (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>hdcd</samp>’</dt>
|
|
<dd><p>HDCD A/D Converter
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Other-AC_002d3-Encoding-Options"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Other-AC_002d3-Encoding-Options">17.2.3 Other AC-3 Encoding Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-stereo_rematrixing <var>boolean</var></samp>’</dt>
|
|
<dd><p>Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
|
|
is an optional AC-3 feature that increases quality by selectively encoding
|
|
the left/right channels as mid/side. This option is enabled by default, and it
|
|
is highly recommended that it be left as enabled except for testing purposes.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">17.2.4 Floating-Point-Only AC-3 Encoding Options</a></h3>
|
|
|
|
<p>These options are only valid for the floating-point encoder and do not exist
|
|
for the fixed-point encoder due to the corresponding features not being
|
|
implemented in fixed-point.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-channel_coupling <var>boolean</var></samp>’</dt>
|
|
<dd><p>Enables/Disables use of channel coupling, which is an optional AC-3 feature
|
|
that increases quality by combining high frequency information from multiple
|
|
channels into a single channel. The per-channel high frequency information is
|
|
sent with less accuracy in both the frequency and time domains. This allows
|
|
more bits to be used for lower frequencies while preserving enough information
|
|
to reconstruct the high frequencies. This option is enabled by default for the
|
|
floating-point encoder and should generally be left as enabled except for
|
|
testing purposes or to increase encoding speed.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>-1</samp>’</dt>
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Selected by Encoder (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>Disable Channel Coupling
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>Enable Channel Coupling
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>-cpl_start_band <var>number</var></samp>’</dt>
|
|
<dd><p>Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
|
|
value higher than the bandwidth is used, it will be reduced to 1 less than the
|
|
coupling end band. If <var>auto</var> is used, the start band will be determined by
|
|
the encoder based on the bit rate, sample rate, and channel layout. This option
|
|
has no effect if channel coupling is disabled.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>-1</samp>’</dt>
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Selected by Encoder (default)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="libfaac"></a>
|
|
</p><a name="libfaac-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libfaac-1">17.3 libfaac</a></h2>
|
|
|
|
<p>libfaac AAC (Advanced Audio Coding) encoder wrapper.
|
|
</p>
|
|
<p>Requires the presence of the libfaac headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libfaac --enable-nonfree</code>.
|
|
</p>
|
|
<p>This encoder is considered to be of higher quality with respect to the
|
|
<a href="#aacenc">the native experimental FFmpeg AAC encoder</a>.
|
|
</p>
|
|
<p>For more information see the libfaac project at
|
|
<a href="http://www.audiocoding.com/faac.html/">http://www.audiocoding.com/faac.html/</a>.
|
|
</p>
|
|
<a name="Options-27"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-27">17.3.1 Options</a></h3>
|
|
|
|
<p>The following shared FFmpeg codec options are recognized.
|
|
</p>
|
|
<p>The following options are supported by the libfaac wrapper. The
|
|
<code>faac</code>-equivalent of the options are listed in parentheses.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>-b</em>)</samp>’</dt>
|
|
<dd><p>Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate
|
|
is not explicitly specified, it is automatically set to a suitable
|
|
value depending on the selected profile. <code>faac</code> bitrate is
|
|
expressed in kilobits/s.
|
|
</p>
|
|
<p>Note that libfaac does not support CBR (Constant Bit Rate) but only
|
|
ABR (Average Bit Rate).
|
|
</p>
|
|
<p>If VBR mode is enabled this option is ignored.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ar (<em>-R</em>)</samp>’</dt>
|
|
<dd><p>Set audio sampling rate (in Hz).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ac (<em>-c</em>)</samp>’</dt>
|
|
<dd><p>Set the number of audio channels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cutoff (<em>-C</em>)</samp>’</dt>
|
|
<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
|
|
will use a value automatically computed by the library. Default value
|
|
is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>profile</samp>’</dt>
|
|
<dd><p>Set audio profile.
|
|
</p>
|
|
<p>The following profiles are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>aac_main</samp>’</dt>
|
|
<dd><p>Main AAC (Main)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_low</samp>’</dt>
|
|
<dd><p>Low Complexity AAC (LC)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_ssr</samp>’</dt>
|
|
<dd><p>Scalable Sample Rate (SSR)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_ltp</samp>’</dt>
|
|
<dd><p>Long Term Prediction (LTP)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If not specified it is set to ‘<samp>aac_low</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags +qscale</samp>’</dt>
|
|
<dd><p>Set constant quality VBR (Variable Bit Rate) mode.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>global_quality</samp>’</dt>
|
|
<dd><p>Set quality in VBR mode as an integer number of lambda units.
|
|
</p>
|
|
<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>. The
|
|
value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
|
|
and used to set the quality value used by libfaac. A reasonable range
|
|
for the option value in QP units is [10-500], the higher the value the
|
|
higher the quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>q (<em>-q</em>)</samp>’</dt>
|
|
<dd><p>Enable VBR mode when set to a non-negative value, and set constant
|
|
quality value as a double floating point value in QP units.
|
|
</p>
|
|
<p>The value sets the quality value used by libfaac. A reasonable range
|
|
for the option value is [10-500], the higher the value the higher the
|
|
quality.
|
|
</p>
|
|
<p>This option is valid only using the <code>ffmpeg</code> command-line
|
|
tool. For library interface users, use ‘<samp>global_quality</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-11"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-11">17.3.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Use <code>ffmpeg</code> to convert an audio file to ABR 128 kbps AAC in an M4A (MP4)
|
|
container:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use <code>ffmpeg</code> to convert an audio file to VBR AAC, using the
|
|
LTP AAC profile:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="libfdk_002daac_002denc"></a>
|
|
</p><a name="libfdk_005faac"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libfdk_005faac">17.4 libfdk_aac</a></h2>
|
|
|
|
<p>libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
|
|
</p>
|
|
<p>The libfdk-aac library is based on the Fraunhofer FDK AAC code from
|
|
the Android project.
|
|
</p>
|
|
<p>Requires the presence of the libfdk-aac headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libfdk-aac</code>. The library is also incompatible with GPL,
|
|
so if you allow the use of GPL, you should configure with
|
|
<code>--enable-gpl --enable-nonfree --enable-libfdk-aac</code>.
|
|
</p>
|
|
<p>This encoder is considered to be of higher quality with respect to
|
|
both <a href="#aacenc">the native experimental FFmpeg AAC encoder</a> and
|
|
<a href="#libfaac">libfaac</a>.
|
|
</p>
|
|
<p>VBR encoding, enabled through the ‘<samp>vbr</samp>’ or ‘<samp>flags
|
|
+qscale</samp>’ options, is experimental and only works with some
|
|
combinations of parameters.
|
|
</p>
|
|
<p>Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or
|
|
higher.
|
|
</p>
|
|
<p>For more information see the fdk-aac project at
|
|
<a href="http://sourceforge.net/p/opencore-amr/fdk-aac/">http://sourceforge.net/p/opencore-amr/fdk-aac/</a>.
|
|
</p>
|
|
<a name="Options-15"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-15">17.4.1 Options</a></h3>
|
|
|
|
<p>The following options are mapped on the shared FFmpeg codec options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Set bit rate in bits/s. If the bitrate is not explicitly specified, it
|
|
is automatically set to a suitable value depending on the selected
|
|
profile.
|
|
</p>
|
|
<p>In case VBR mode is enabled the option is ignored.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ar</samp>’</dt>
|
|
<dd><p>Set audio sampling rate (in Hz).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channels</samp>’</dt>
|
|
<dd><p>Set the number of audio channels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags +qscale</samp>’</dt>
|
|
<dd><p>Enable fixed quality, VBR (Variable Bit Rate) mode.
|
|
Note that VBR is implicitly enabled when the ‘<samp>vbr</samp>’ value is
|
|
positive.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cutoff</samp>’</dt>
|
|
<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
|
|
will use a value automatically computed by the library. Default value
|
|
is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>profile</samp>’</dt>
|
|
<dd><p>Set audio profile.
|
|
</p>
|
|
<p>The following profiles are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>aac_low</samp>’</dt>
|
|
<dd><p>Low Complexity AAC (LC)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_he</samp>’</dt>
|
|
<dd><p>High Efficiency AAC (HE-AAC)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_he_v2</samp>’</dt>
|
|
<dd><p>High Efficiency AAC version 2 (HE-AACv2)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_ld</samp>’</dt>
|
|
<dd><p>Low Delay AAC (LD)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aac_eld</samp>’</dt>
|
|
<dd><p>Enhanced Low Delay AAC (ELD)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If not specified it is set to ‘<samp>aac_low</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following are private options of the libfdk_aac encoder.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>afterburner</samp>’</dt>
|
|
<dd><p>Enable afterburner feature if set to 1, disabled if set to 0. This
|
|
improves the quality but also the required processing power.
|
|
</p>
|
|
<p>Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>eld_sbr</samp>’</dt>
|
|
<dd><p>Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
|
|
if set to 0.
|
|
</p>
|
|
<p>Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>signaling</samp>’</dt>
|
|
<dd><p>Set SBR/PS signaling style.
|
|
</p>
|
|
<p>It can assume one of the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>default</samp>’</dt>
|
|
<dd><p>choose signaling implicitly (explicit hierarchical by default,
|
|
implicit if global header is disabled)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>implicit</samp>’</dt>
|
|
<dd><p>implicit backwards compatible signaling
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>explicit_sbr</samp>’</dt>
|
|
<dd><p>explicit SBR, implicit PS signaling
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>explicit_hierarchical</samp>’</dt>
|
|
<dd><p>explicit hierarchical signaling
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>default</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>latm</samp>’</dt>
|
|
<dd><p>Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
|
|
</p>
|
|
<p>Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>header_period</samp>’</dt>
|
|
<dd><p>Set StreamMuxConfig and PCE repetition period (in frames) for sending
|
|
in-band configuration buffers within LATM/LOAS transport layer.
|
|
</p>
|
|
<p>Must be a 16-bits non-negative integer.
|
|
</p>
|
|
<p>Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>vbr</samp>’</dt>
|
|
<dd><p>Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
|
|
good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
|
|
(Constant Bit Rate) is enabled.
|
|
</p>
|
|
<p>Currently only the ‘<samp>aac_low</samp>’ profile supports VBR encoding.
|
|
</p>
|
|
<p>VBR modes 1-5 correspond to roughly the following average bit rates:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>32 kbps/channel
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dd><p>40 kbps/channel
|
|
</p></dd>
|
|
<dt> ‘<samp>3</samp>’</dt>
|
|
<dd><p>48-56 kbps/channel
|
|
</p></dd>
|
|
<dt> ‘<samp>4</samp>’</dt>
|
|
<dd><p>64 kbps/channel
|
|
</p></dd>
|
|
<dt> ‘<samp>5</samp>’</dt>
|
|
<dd><p>about 80-96 kbps/channel
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-17"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-17">17.4.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Use <code>ffmpeg</code> to convert an audio file to VBR AAC in an M4A (MP4)
|
|
container:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use <code>ffmpeg</code> to convert an audio file to CBR 64k kbps AAC, using the
|
|
High-Efficiency AAC profile:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="libmp3lame"></a>
|
|
</p><a name="libmp3lame-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libmp3lame-1">17.5 libmp3lame</a></h2>
|
|
|
|
<p>LAME (Lame Ain’t an MP3 Encoder) MP3 encoder wrapper.
|
|
</p>
|
|
<p>Requires the presence of the libmp3lame headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libmp3lame</code>.
|
|
</p>
|
|
<p>See <a href="#libshine">libshine</a> for a fixed-point MP3 encoder, although with a
|
|
lower quality.
|
|
</p>
|
|
<a name="Options-2"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-2">17.5.1 Options</a></h3>
|
|
|
|
<p>The following options are supported by the libmp3lame wrapper. The
|
|
<code>lame</code>-equivalent of the options are listed in parentheses.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>-b</em>)</samp>’</dt>
|
|
<dd><p>Set bitrate expressed in bits/s for CBR or ABR. LAME <code>bitrate</code> is
|
|
expressed in kilobits/s.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>q (<em>-V</em>)</samp>’</dt>
|
|
<dd><p>Set constant quality setting for VBR. This option is valid only
|
|
using the <code>ffmpeg</code> command-line tool. For library interface
|
|
users, use ‘<samp>global_quality</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>compression_level (<em>-q</em>)</samp>’</dt>
|
|
<dd><p>Set algorithm quality. Valid arguments are integers in the 0-9 range,
|
|
with 0 meaning highest quality but slowest, and 9 meaning fastest
|
|
while producing the worst quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>reservoir</samp>’</dt>
|
|
<dd><p>Enable use of bit reservoir when set to 1. Default value is 1. LAME
|
|
has this enabled by default, but can be overridden by use
|
|
‘<samp>--nores</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>joint_stereo (<em>-m j</em>)</samp>’</dt>
|
|
<dd><p>Enable the encoder to use (on a frame by frame basis) either L/R
|
|
stereo or mid/side stereo. Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>abr (<em>--abr</em>)</samp>’</dt>
|
|
<dd><p>Enable the encoder to use ABR when set to 1. The <code>lame</code>
|
|
‘<samp>--abr</samp>’ sets the target bitrate, while this options only
|
|
tells FFmpeg to use ABR still relies on ‘<samp>b</samp>’ to set bitrate.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libopencore_002damrnb"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libopencore_002damrnb">17.6 libopencore-amrnb</a></h2>
|
|
|
|
<p>OpenCORE Adaptive Multi-Rate Narrowband encoder.
|
|
</p>
|
|
<p>Requires the presence of the libopencore-amrnb headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libopencore-amrnb --enable-version3</code>.
|
|
</p>
|
|
<p>This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
|
|
but you can override it by setting ‘<samp>strict</samp>’ to ‘<samp>unofficial</samp>’ or
|
|
lower.
|
|
</p>
|
|
<a name="Options-20"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-20">17.6.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Set bitrate in bits per second. Only the following bitrates are supported,
|
|
otherwise libavcodec will round to the nearest valid bitrate.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>4750</samp>’</dt>
|
|
<dt> ‘<samp>5150</samp>’</dt>
|
|
<dt> ‘<samp>5900</samp>’</dt>
|
|
<dt> ‘<samp>6700</samp>’</dt>
|
|
<dt> ‘<samp>7400</samp>’</dt>
|
|
<dt> ‘<samp>7950</samp>’</dt>
|
|
<dt> ‘<samp>10200</samp>’</dt>
|
|
<dt> ‘<samp>12200</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>dtx</samp>’</dt>
|
|
<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
|
|
default value is 0 (disabled).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="libshine"></a>
|
|
</p><a name="libshine-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libshine-1">17.7 libshine</a></h2>
|
|
|
|
<p>Shine Fixed-Point MP3 encoder wrapper.
|
|
</p>
|
|
<p>Shine is a fixed-point MP3 encoder. It has a far better performance on
|
|
platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
|
|
However, as it is more targeted on performance than quality, it is not on par
|
|
with LAME and other production-grade encoders quality-wise. Also, according to
|
|
the project’s homepage, this encoder may not be free of bugs as the code was
|
|
written a long time ago and the project was dead for at least 5 years.
|
|
</p>
|
|
<p>This encoder only supports stereo and mono input. This is also CBR-only.
|
|
</p>
|
|
<p>The original project (last updated in early 2007) is at
|
|
<a href="http://sourceforge.net/projects/libshine-fxp/">http://sourceforge.net/projects/libshine-fxp/</a>. We only support the
|
|
updated fork by the Savonet/Liquidsoap project at <a href="https://github.com/savonet/shine">https://github.com/savonet/shine</a>.
|
|
</p>
|
|
<p>Requires the presence of the libshine headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libshine</code>.
|
|
</p>
|
|
<p>See also <a href="#libmp3lame">libmp3lame</a>.
|
|
</p>
|
|
<a name="Options-9"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-9">17.7.1 Options</a></h3>
|
|
|
|
<p>The following options are supported by the libshine wrapper. The
|
|
<code>shineenc</code>-equivalent of the options are listed in parentheses.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>-b</em>)</samp>’</dt>
|
|
<dd><p>Set bitrate expressed in bits/s for CBR. <code>shineenc</code> ‘<samp>-b</samp>’ option
|
|
is expressed in kilobits/s.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libtwolame"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libtwolame">17.8 libtwolame</a></h2>
|
|
|
|
<p>TwoLAME MP2 encoder wrapper.
|
|
</p>
|
|
<p>Requires the presence of the libtwolame headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libtwolame</code>.
|
|
</p>
|
|
<a name="Options-6"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-6">17.8.1 Options</a></h3>
|
|
|
|
<p>The following options are supported by the libtwolame wrapper. The
|
|
<code>twolame</code>-equivalent options follow the FFmpeg ones and are in
|
|
parentheses.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>-b</em>)</samp>’</dt>
|
|
<dd><p>Set bitrate expressed in bits/s for CBR. <code>twolame</code> ‘<samp>b</samp>’
|
|
option is expressed in kilobits/s. Default value is 128k.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>q (<em>-V</em>)</samp>’</dt>
|
|
<dd><p>Set quality for experimental VBR support. Maximum value range is
|
|
from -50 to 50, useful range is from -10 to 10. The higher the
|
|
value, the better the quality. This option is valid only using the
|
|
<code>ffmpeg</code> command-line tool. For library interface users,
|
|
use ‘<samp>global_quality</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mode (<em>--mode</em>)</samp>’</dt>
|
|
<dd><p>Set the mode of the resulting audio. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Choose mode automatically based on the input. This is the default.
|
|
</p></dd>
|
|
<dt> ‘<samp>stereo</samp>’</dt>
|
|
<dd><p>Stereo
|
|
</p></dd>
|
|
<dt> ‘<samp>joint_stereo</samp>’</dt>
|
|
<dd><p>Joint stereo
|
|
</p></dd>
|
|
<dt> ‘<samp>dual_channel</samp>’</dt>
|
|
<dd><p>Dual channel
|
|
</p></dd>
|
|
<dt> ‘<samp>mono</samp>’</dt>
|
|
<dd><p>Mono
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>psymodel (<em>--psyc-mode</em>)</samp>’</dt>
|
|
<dd><p>Set psychoacoustic model to use in encoding. The argument must be
|
|
an integer between -1 and 4, inclusive. The higher the value, the
|
|
better the quality. The default value is 3.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>energy_levels (<em>--energy</em>)</samp>’</dt>
|
|
<dd><p>Enable energy levels extensions when set to 1. The default value is
|
|
0 (disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>error_protection (<em>--protect</em>)</samp>’</dt>
|
|
<dd><p>Enable CRC error protection when set to 1. The default value is 0
|
|
(disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>copyright (<em>--copyright</em>)</samp>’</dt>
|
|
<dd><p>Set MPEG audio copyright flag when set to 1. The default value is 0
|
|
(disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>original (<em>--original</em>)</samp>’</dt>
|
|
<dd><p>Set MPEG audio original flag when set to 1. The default value is 0
|
|
(disabled).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="libvo_002daacenc"></a>
|
|
</p><a name="libvo_002daacenc-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libvo_002daacenc-1">17.9 libvo-aacenc</a></h2>
|
|
|
|
<p>VisualOn AAC encoder.
|
|
</p>
|
|
<p>Requires the presence of the libvo-aacenc headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libvo-aacenc --enable-version3</code>.
|
|
</p>
|
|
<p>This encoder is considered to be worse than the
|
|
<a href="#aacenc">native experimental FFmpeg AAC encoder</a>, according to
|
|
multiple sources.
|
|
</p>
|
|
<a name="Options-4"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-4">17.9.1 Options</a></h3>
|
|
|
|
<p>The VisualOn AAC encoder only support encoding AAC-LC and up to 2
|
|
channels. It is also CBR-only.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Set bit rate in bits/s.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libvo_002damrwbenc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libvo_002damrwbenc">17.10 libvo-amrwbenc</a></h2>
|
|
|
|
<p>VisualOn Adaptive Multi-Rate Wideband encoder.
|
|
</p>
|
|
<p>Requires the presence of the libvo-amrwbenc headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libvo-amrwbenc --enable-version3</code>.
|
|
</p>
|
|
<p>This is a mono-only encoder. Officially it only supports 16000Hz sample
|
|
rate, but you can override it by setting ‘<samp>strict</samp>’ to
|
|
‘<samp>unofficial</samp>’ or lower.
|
|
</p>
|
|
<a name="Options-37"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-37">17.10.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Set bitrate in bits/s. Only the following bitrates are supported, otherwise
|
|
libavcodec will round to the nearest valid bitrate.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>6600</samp>’</dt>
|
|
<dt> ‘<samp>8850</samp>’</dt>
|
|
<dt> ‘<samp>12650</samp>’</dt>
|
|
<dt> ‘<samp>14250</samp>’</dt>
|
|
<dt> ‘<samp>15850</samp>’</dt>
|
|
<dt> ‘<samp>18250</samp>’</dt>
|
|
<dt> ‘<samp>19850</samp>’</dt>
|
|
<dt> ‘<samp>23050</samp>’</dt>
|
|
<dt> ‘<samp>23850</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>dtx</samp>’</dt>
|
|
<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
|
|
default value is 0 (disabled).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libopus"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libopus">17.11 libopus</a></h2>
|
|
|
|
<p>libopus Opus Interactive Audio Codec encoder wrapper.
|
|
</p>
|
|
<p>Requires the presence of the libopus headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libopus</code>.
|
|
</p>
|
|
<a name="Option-Mapping"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Option-Mapping">17.11.1 Option Mapping</a></h3>
|
|
|
|
<p>Most libopus options are modeled after the <code>opusenc</code> utility from
|
|
opus-tools. The following is an option mapping chart describing options
|
|
supported by the libopus wrapper, and their <code>opusenc</code>-equivalent
|
|
in parentheses.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>bitrate</em>)</samp>’</dt>
|
|
<dd><p>Set the bit rate in bits/s. FFmpeg’s ‘<samp>b</samp>’ option is
|
|
expressed in bits/s, while <code>opusenc</code>’s ‘<samp>bitrate</samp>’ in
|
|
kilobits/s.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>vbr (<em>vbr</em>, <em>hard-cbr</em>, and <em>cvbr</em>)</samp>’</dt>
|
|
<dd><p>Set VBR mode. The FFmpeg ‘<samp>vbr</samp>’ option has the following
|
|
valid arguments, with the their <code>opusenc</code> equivalent options
|
|
in parentheses:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>off (<em>hard-cbr</em>)</samp>’</dt>
|
|
<dd><p>Use constant bit rate encoding.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>on (<em>vbr</em>)</samp>’</dt>
|
|
<dd><p>Use variable bit rate encoding (the default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>constrained (<em>cvbr</em>)</samp>’</dt>
|
|
<dd><p>Use constrained variable bit rate encoding.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>compression_level (<em>comp</em>)</samp>’</dt>
|
|
<dd><p>Set encoding algorithm complexity. Valid options are integers in
|
|
the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
|
|
gives the highest quality but slowest encoding. The default is 10.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame_duration (<em>framesize</em>)</samp>’</dt>
|
|
<dd><p>Set maximum frame size, or duration of a frame in milliseconds. The
|
|
argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
|
|
frame sizes achieve lower latency but less quality at a given bitrate.
|
|
Sizes greater than 20ms are only interesting at fairly low bitrates.
|
|
The default is 20ms.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>packet_loss (<em>expect-loss</em>)</samp>’</dt>
|
|
<dd><p>Set expected packet loss percentage. The default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>application (N.A.)</samp>’</dt>
|
|
<dd><p>Set intended application type. Valid options are listed below:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>voip</samp>’</dt>
|
|
<dd><p>Favor improved speech intelligibility.
|
|
</p></dd>
|
|
<dt> ‘<samp>audio</samp>’</dt>
|
|
<dd><p>Favor faithfulness to the input (the default).
|
|
</p></dd>
|
|
<dt> ‘<samp>lowdelay</samp>’</dt>
|
|
<dd><p>Restrict to only the lowest delay modes.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>cutoff (N.A.)</samp>’</dt>
|
|
<dd><p>Set cutoff bandwidth in Hz. The argument must be exactly one of the
|
|
following: 4000, 6000, 8000, 12000, or 20000, corresponding to
|
|
narrowband, mediumband, wideband, super wideband, and fullband
|
|
respectively. The default is 0 (cutoff disabled).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libvorbis"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libvorbis">17.12 libvorbis</a></h2>
|
|
|
|
<p>libvorbis encoder wrapper.
|
|
</p>
|
|
<p>Requires the presence of the libvorbisenc headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libvorbis</code>.
|
|
</p>
|
|
<a name="Options-32"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-32">17.12.1 Options</a></h3>
|
|
|
|
<p>The following options are supported by the libvorbis wrapper. The
|
|
<code>oggenc</code>-equivalent of the options are listed in parentheses.
|
|
</p>
|
|
<p>To get a more accurate and extensive documentation of the libvorbis
|
|
options, consult the libvorbisenc’s and <code>oggenc</code>’s documentations.
|
|
See <a href="http://xiph.org/vorbis/">http://xiph.org/vorbis/</a>,
|
|
<a href="http://wiki.xiph.org/Vorbis-tools">http://wiki.xiph.org/Vorbis-tools</a>, and oggenc(1).
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>-b</em>)</samp>’</dt>
|
|
<dd><p>Set bitrate expressed in bits/s for ABR. <code>oggenc</code> ‘<samp>-b</samp>’ is
|
|
expressed in kilobits/s.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>q (<em>-q</em>)</samp>’</dt>
|
|
<dd><p>Set constant quality setting for VBR. The value should be a float
|
|
number in the range of -1.0 to 10.0. The higher the value, the better
|
|
the quality. The default value is ‘<samp>3.0</samp>’.
|
|
</p>
|
|
<p>This option is valid only using the <code>ffmpeg</code> command-line tool.
|
|
For library interface users, use ‘<samp>global_quality</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cutoff (<em>--advanced-encode-option lowpass_frequency=N</em>)</samp>’</dt>
|
|
<dd><p>Set cutoff bandwidth in Hz, a value of 0 disables cutoff. <code>oggenc</code>’s
|
|
related option is expressed in kHz. The default value is ‘<samp>0</samp>’ (cutoff
|
|
disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>minrate (<em>-m</em>)</samp>’</dt>
|
|
<dd><p>Set minimum bitrate expressed in bits/s. <code>oggenc</code> ‘<samp>-m</samp>’ is
|
|
expressed in kilobits/s.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>maxrate (<em>-M</em>)</samp>’</dt>
|
|
<dd><p>Set maximum bitrate expressed in bits/s. <code>oggenc</code> ‘<samp>-M</samp>’ is
|
|
expressed in kilobits/s. This only has effect on ABR mode.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>iblock (<em>--advanced-encode-option impulse_noisetune=N</em>)</samp>’</dt>
|
|
<dd><p>Set noise floor bias for impulse blocks. The value is a float number from
|
|
-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
|
|
to the crispness of transients in the encoded audio. The tradeoff for better
|
|
transient response is a higher bitrate.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="libwavpack"></a>
|
|
</p><a name="libwavpack-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libwavpack-1">17.13 libwavpack</a></h2>
|
|
|
|
<p>A wrapper providing WavPack encoding through libwavpack.
|
|
</p>
|
|
<p>Only lossless mode using 32-bit integer samples is supported currently.
|
|
</p>
|
|
<p>Requires the presence of the libwavpack headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libwavpack</code>.
|
|
</p>
|
|
<p>Note that a libavcodec-native encoder for the WavPack codec exists so users can
|
|
encode audios with this codec without using this encoder. See <a href="#wavpackenc">wavpackenc</a>.
|
|
</p>
|
|
<a name="Options-19"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-19">17.13.1 Options</a></h3>
|
|
|
|
<p><code>wavpack</code> command line utility’s corresponding options are listed in
|
|
parentheses, if any.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frame_size (<em>--blocksize</em>)</samp>’</dt>
|
|
<dd><p>Default is 32768.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>compression_level</samp>’</dt>
|
|
<dd><p>Set speed vs. compression tradeoff. Acceptable arguments are listed below:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>0 (<em>-f</em>)</samp>’</dt>
|
|
<dd><p>Fast mode.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>Normal (default) settings.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>2 (<em>-h</em>)</samp>’</dt>
|
|
<dd><p>High quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>3 (<em>-hh</em>)</samp>’</dt>
|
|
<dd><p>Very high quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>4-8 (<em>-hh -x</em><var>EXTRAPROC</var>)</samp>’</dt>
|
|
<dd><p>Same as ‘<samp>3</samp>’, but with extra processing enabled.
|
|
</p>
|
|
<p>‘<samp>4</samp>’ is the same as ‘<samp>-x2</samp>’ and ‘<samp>8</samp>’ is the same as ‘<samp>-x6</samp>’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="wavpackenc"></a>
|
|
</p><a name="wavpack"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-wavpack">17.14 wavpack</a></h2>
|
|
|
|
<p>WavPack lossless audio encoder.
|
|
</p>
|
|
<p>This is a libavcodec-native WavPack encoder. There is also an encoder based on
|
|
libwavpack, but there is virtually no reason to use that encoder.
|
|
</p>
|
|
<p>See also <a href="#libwavpack">libwavpack</a>.
|
|
</p>
|
|
<a name="Options-31"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-31">17.14.1 Options</a></h3>
|
|
|
|
<p>The equivalent options for <code>wavpack</code> command line utility are listed in
|
|
parentheses.
|
|
</p>
|
|
<a name="Shared-options"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Shared-options">17.14.1.1 Shared options</a></h4>
|
|
|
|
<p>The following shared options are effective for this encoder. Only special notes
|
|
about this particular encoder will be documented here. For the general meaning
|
|
of the options, see <a href="#codec_002doptions">the Codec Options chapter</a>.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frame_size (<em>--blocksize</em>)</samp>’</dt>
|
|
<dd><p>For this encoder, the range for this option is between 128 and 131072. Default
|
|
is automatically decided based on sample rate and number of channel.
|
|
</p>
|
|
<p>For the complete formula of calculating default, see
|
|
‘<tt>libavcodec/wavpackenc.c</tt>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>compression_level (<em>-f</em>, <em>-h</em>, <em>-hh</em>, and <em>-x</em>)</samp>’</dt>
|
|
<dd><p>This option’s syntax is consistent with <a href="#libwavpack">libwavpack</a>’s.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Private-options-1"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Private-options-1">17.14.1.2 Private options</a></h4>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>joint_stereo (<em>-j</em>)</samp>’</dt>
|
|
<dd><p>Set whether to enable joint stereo. Valid values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>on (<em>1</em>)</samp>’</dt>
|
|
<dd><p>Force mid/side audio encoding.
|
|
</p></dd>
|
|
<dt> ‘<samp>off (<em>0</em>)</samp>’</dt>
|
|
<dd><p>Force left/right audio encoding.
|
|
</p></dd>
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Let the encoder decide automatically.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>optimize_mono</samp>’</dt>
|
|
<dd><p>Set whether to enable optimization for mono. This option is only effective for
|
|
non-mono streams. Available values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>on</samp>’</dt>
|
|
<dd><p>enabled
|
|
</p></dd>
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>disabled
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<a name="Video-Encoders"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Encoders">18. Video Encoders</a></h1>
|
|
|
|
<p>A description of some of the currently available video encoders
|
|
follows.
|
|
</p>
|
|
<a name="libtheora"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libtheora">18.1 libtheora</a></h2>
|
|
|
|
<p>libtheora Theora encoder wrapper.
|
|
</p>
|
|
<p>Requires the presence of the libtheora headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
<code>--enable-libtheora</code>.
|
|
</p>
|
|
<p>For more information about the libtheora project see
|
|
<a href="http://www.theora.org/">http://www.theora.org/</a>.
|
|
</p>
|
|
<a name="Options-16"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-16">18.1.1 Options</a></h3>
|
|
|
|
<p>The following global options are mapped to internal libtheora options
|
|
which affect the quality and the bitrate of the encoded stream.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode. In
|
|
case VBR (Variable Bit Rate) mode is enabled this option is ignored.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags</samp>’</dt>
|
|
<dd><p>Used to enable constant quality mode (VBR) encoding through the
|
|
‘<samp>qscale</samp>’ flag, and to enable the <code>pass1</code> and <code>pass2</code>
|
|
modes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>g</samp>’</dt>
|
|
<dd><p>Set the GOP size.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>global_quality</samp>’</dt>
|
|
<dd><p>Set the global quality as an integer in lambda units.
|
|
</p>
|
|
<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>. The
|
|
value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
|
|
clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
|
|
value in the native libtheora range [0-63]. A higher value corresponds
|
|
to a higher quality.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Enable VBR mode when set to a non-negative value, and set constant
|
|
quality value as a double floating point value in QP units.
|
|
</p>
|
|
<p>The value is clipped in the [0-10] range, and then multiplied by 6.3
|
|
to get a value in the native libtheora range [0-63].
|
|
</p>
|
|
<p>This option is valid only using the <code>ffmpeg</code> command-line
|
|
tool. For library interface users, use ‘<samp>global_quality</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-29"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-29">18.1.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Set maximum constant quality (VBR) encoding with <code>ffmpeg</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use <code>ffmpeg</code> to convert a CBR 1000 kbps Theora video stream:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="libvpx"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libvpx">18.2 libvpx</a></h2>
|
|
|
|
<p>VP8 format supported through libvpx.
|
|
</p>
|
|
<p>Requires the presence of the libvpx headers and library during configuration.
|
|
You need to explicitly configure the build with <code>--enable-libvpx</code>.
|
|
</p>
|
|
<a name="Options-36"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-36">18.2.1 Options</a></h3>
|
|
|
|
<p>Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>threads</samp>’</dt>
|
|
<dd><p>g_threads
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>profile</samp>’</dt>
|
|
<dd><p>g_profile
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>vb</samp>’</dt>
|
|
<dd><p>rc_target_bitrate
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>g</samp>’</dt>
|
|
<dd><p>kf_max_dist
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>keyint_min</samp>’</dt>
|
|
<dd><p>kf_min_dist
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qmin</samp>’</dt>
|
|
<dd><p>rc_min_quantizer
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qmax</samp>’</dt>
|
|
<dd><p>rc_max_quantizer
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bufsize, vb</samp>’</dt>
|
|
<dd><p>rc_buf_sz
|
|
<code>(bufsize * 1000 / vb)</code>
|
|
</p>
|
|
<p>rc_buf_optimal_sz
|
|
<code>(bufsize * 1000 / vb * 5 / 6)</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_init_occupancy, vb</samp>’</dt>
|
|
<dd><p>rc_buf_initial_sz
|
|
<code>(rc_init_occupancy * 1000 / vb)</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_buffer_aggressivity</samp>’</dt>
|
|
<dd><p>rc_undershoot_pct
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_threshold</samp>’</dt>
|
|
<dd><p>rc_dropframe_thresh
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qcomp</samp>’</dt>
|
|
<dd><p>rc_2pass_vbr_bias_pct
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>maxrate, vb</samp>’</dt>
|
|
<dd><p>rc_2pass_vbr_maxsection_pct
|
|
<code>(maxrate * 100 / vb)</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>minrate, vb</samp>’</dt>
|
|
<dd><p>rc_2pass_vbr_minsection_pct
|
|
<code>(minrate * 100 / vb)</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>minrate, maxrate, vb</samp>’</dt>
|
|
<dd><p><code>VPX_CBR</code>
|
|
<code>(minrate == maxrate == vb)</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>crf</samp>’</dt>
|
|
<dd><p><code>VPX_CQ</code>, <code>VP8E_SET_CQ_LEVEL</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>quality</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp><var>best</var></samp>’</dt>
|
|
<dd><p><code>VPX_DL_BEST_QUALITY</code>
|
|
</p></dd>
|
|
<dt> ‘<samp><var>good</var></samp>’</dt>
|
|
<dd><p><code>VPX_DL_GOOD_QUALITY</code>
|
|
</p></dd>
|
|
<dt> ‘<samp><var>realtime</var></samp>’</dt>
|
|
<dd><p><code>VPX_DL_REALTIME</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>speed</samp>’</dt>
|
|
<dd><p><code>VP8E_SET_CPUUSED</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nr</samp>’</dt>
|
|
<dd><p><code>VP8E_SET_NOISE_SENSITIVITY</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mb_threshold</samp>’</dt>
|
|
<dd><p><code>VP8E_SET_STATIC_THRESHOLD</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>slices</samp>’</dt>
|
|
<dd><p><code>VP8E_SET_TOKEN_PARTITIONS</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max-intra-rate</samp>’</dt>
|
|
<dd><p><code>VP8E_SET_MAX_INTRA_BITRATE_PCT</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>force_key_frames</samp>’</dt>
|
|
<dd><p><code>VPX_EFLAG_FORCE_KF</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Alternate reference frame related</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>vp8flags altref</samp>’</dt>
|
|
<dd><p><code>VP8E_SET_ENABLEAUTOALTREF</code>
|
|
</p></dd>
|
|
<dt> ‘<samp><var>arnr_max_frames</var></samp>’</dt>
|
|
<dd><p><code>VP8E_SET_ARNR_MAXFRAMES</code>
|
|
</p></dd>
|
|
<dt> ‘<samp><var>arnr_type</var></samp>’</dt>
|
|
<dd><p><code>VP8E_SET_ARNR_TYPE</code>
|
|
</p></dd>
|
|
<dt> ‘<samp><var>arnr_strength</var></samp>’</dt>
|
|
<dd><p><code>VP8E_SET_ARNR_STRENGTH</code>
|
|
</p></dd>
|
|
<dt> ‘<samp><var>rc_lookahead</var></samp>’</dt>
|
|
<dd><p>g_lag_in_frames
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>vp8flags error_resilient</samp>’</dt>
|
|
<dd><p>g_error_resilient
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For more information about libvpx see:
|
|
<a href="http://www.webmproject.org/">http://www.webmproject.org/</a>
|
|
</p>
|
|
|
|
<a name="libwebp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libwebp">18.3 libwebp</a></h2>
|
|
|
|
<p>libwebp WebP Image encoder wrapper
|
|
</p>
|
|
<p>libwebp is Google’s official encoder for WebP images. It can encode in either
|
|
lossy or lossless mode. Lossy images are essentially a wrapper around a VP8
|
|
frame. Lossless images are a separate codec developed by Google.
|
|
</p>
|
|
<a name="Pixel-Format"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Pixel-Format">18.3.1 Pixel Format</a></h3>
|
|
|
|
<p>Currently, libwebp only supports YUV420 for lossy and RGB for lossless due
|
|
to limitations of the format and libwebp. Alpha is supported for either mode.
|
|
Because of API limitations, if RGB is passed in when encoding lossy or YUV is
|
|
passed in for encoding lossless, the pixel format will automatically be
|
|
converted using functions from libwebp. This is not ideal and is done only for
|
|
convenience.
|
|
</p>
|
|
<a name="Options-34"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-34">18.3.2 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-lossless <var>boolean</var></samp>’</dt>
|
|
<dd><p>Enables/Disables use of lossless mode. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-compression_level <var>integer</var></samp>’</dt>
|
|
<dd><p>For lossy, this is a quality/speed tradeoff. Higher values give better quality
|
|
for a given size at the cost of increased encoding time. For lossless, this is
|
|
a size/speed tradeoff. Higher values give smaller size at the cost of increased
|
|
encoding time. More specifically, it controls the number of extra algorithms
|
|
and compression tools used, and varies the combination of these tools. This
|
|
maps to the <var>method</var> option in libwebp. The valid range is 0 to 6.
|
|
Default is 4.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-qscale <var>float</var></samp>’</dt>
|
|
<dd><p>For lossy encoding, this controls image quality, 0 to 100. For lossless
|
|
encoding, this controls the effort and time spent at compressing more. The
|
|
default value is 75. Note that for usage via libavcodec, this option is called
|
|
<var>global_quality</var> and must be multiplied by <var>FF_QP2LAMBDA</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-preset <var>type</var></samp>’</dt>
|
|
<dd><p>Configuration preset. This does some automatic settings based on the general
|
|
type of the image.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Do not use a preset.
|
|
</p></dd>
|
|
<dt> ‘<samp>default</samp>’</dt>
|
|
<dd><p>Use the encoder default.
|
|
</p></dd>
|
|
<dt> ‘<samp>picture</samp>’</dt>
|
|
<dd><p>Digital picture, like portrait, inner shot
|
|
</p></dd>
|
|
<dt> ‘<samp>photo</samp>’</dt>
|
|
<dd><p>Outdoor photograph, with natural lighting
|
|
</p></dd>
|
|
<dt> ‘<samp>drawing</samp>’</dt>
|
|
<dd><p>Hand or line drawing, with high-contrast details
|
|
</p></dd>
|
|
<dt> ‘<samp>icon</samp>’</dt>
|
|
<dd><p>Small-sized colorful images
|
|
</p></dd>
|
|
<dt> ‘<samp>text</samp>’</dt>
|
|
<dd><p>Text-like
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="libx264_002c-libx264rgb"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libx264_002c-libx264rgb">18.4 libx264, libx264rgb</a></h2>
|
|
|
|
<p>x264 H.264/MPEG-4 AVC encoder wrapper.
|
|
</p>
|
|
<p>This encoder requires the presence of the libx264 headers and library
|
|
during configuration. You need to explicitly configure the build with
|
|
<code>--enable-libx264</code>.
|
|
</p>
|
|
<p>libx264 supports an impressive number of features, including 8x8 and
|
|
4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
|
|
entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
|
|
for detail retention (adaptive quantization, psy-RD, psy-trellis).
|
|
</p>
|
|
<p>Many libx264 encoder options are mapped to FFmpeg global codec
|
|
options, while unique encoder options are provided through private
|
|
options. Additionally the ‘<samp>x264opts</samp>’ and ‘<samp>x264-params</samp>’
|
|
private options allows one to pass a list of key=value tuples as accepted
|
|
by the libx264 <code>x264_param_parse</code> function.
|
|
</p>
|
|
<p>The x264 project website is at
|
|
<a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a>.
|
|
</p>
|
|
<p>The libx264rgb encoder is the same as libx264, except it accepts packed RGB
|
|
pixel formats as input instead of YUV.
|
|
</p>
|
|
<a name="Supported-Pixel-Formats"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Supported-Pixel-Formats">18.4.1 Supported Pixel Formats</a></h3>
|
|
|
|
<p>x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at
|
|
x264’s configure time. FFmpeg only supports one bit depth in one particular
|
|
build. In other words, it is not possible to build one FFmpeg with multiple
|
|
versions of x264 with different bit depths.
|
|
</p>
|
|
<a name="Options-33"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-33">18.4.2 Options</a></h3>
|
|
|
|
<p>The following options are supported by the libx264 wrapper. The
|
|
<code>x264</code>-equivalent options or values are listed in parentheses
|
|
for easy migration.
|
|
</p>
|
|
<p>To reduce the duplication of documentation, only the private options
|
|
and some others requiring special attention are documented here. For
|
|
the documentation of the undocumented generic options, see
|
|
<a href="#codec_002doptions">the Codec Options chapter</a>.
|
|
</p>
|
|
<p>To get a more accurate and extensive documentation of the libx264
|
|
options, invoke the command <code>x264 --full-help</code> or consult
|
|
the libx264 documentation.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b (<em>bitrate</em>)</samp>’</dt>
|
|
<dd><p>Set bitrate in bits/s. Note that FFmpeg’s ‘<samp>b</samp>’ option is
|
|
expressed in bits/s, while <code>x264</code>’s ‘<samp>bitrate</samp>’ is in
|
|
kilobits/s.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bf (<em>bframes</em>)</samp>’</dt>
|
|
<dt> ‘<samp>g (<em>keyint</em>)</samp>’</dt>
|
|
<dt> ‘<samp>qmax (<em>qpmax</em>)</samp>’</dt>
|
|
<dt> ‘<samp>qmin (<em>qpmin</em>)</samp>’</dt>
|
|
<dt> ‘<samp>qdiff (<em>qpstep</em>)</samp>’</dt>
|
|
<dt> ‘<samp>qblur (<em>qblur</em>)</samp>’</dt>
|
|
<dt> ‘<samp>qcomp (<em>qcomp</em>)</samp>’</dt>
|
|
<dt> ‘<samp>refs (<em>ref</em>)</samp>’</dt>
|
|
<dt> ‘<samp>sc_threshold (<em>scenecut</em>)</samp>’</dt>
|
|
<dt> ‘<samp>trellis (<em>trellis</em>)</samp>’</dt>
|
|
<dt> ‘<samp>nr (<em>nr</em>)</samp>’</dt>
|
|
<dt> ‘<samp>me_range (<em>merange</em>)</samp>’</dt>
|
|
<dt> ‘<samp>me_method (<em>me</em>)</samp>’</dt>
|
|
<dd><p>Set motion estimation method. Possible values in the decreasing order
|
|
of speed:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dia (<em>dia</em>)</samp>’</dt>
|
|
<dt> ‘<samp>epzs (<em>dia</em>)</samp>’</dt>
|
|
<dd><p>Diamond search with radius 1 (fastest). ‘<samp>epzs</samp>’ is an alias for
|
|
‘<samp>dia</samp>’.
|
|
</p></dd>
|
|
<dt> ‘<samp>hex (<em>hex</em>)</samp>’</dt>
|
|
<dd><p>Hexagonal search with radius 2.
|
|
</p></dd>
|
|
<dt> ‘<samp>umh (<em>umh</em>)</samp>’</dt>
|
|
<dd><p>Uneven multi-hexagon search.
|
|
</p></dd>
|
|
<dt> ‘<samp>esa (<em>esa</em>)</samp>’</dt>
|
|
<dd><p>Exhaustive search.
|
|
</p></dd>
|
|
<dt> ‘<samp>tesa (<em>tesa</em>)</samp>’</dt>
|
|
<dd><p>Hadamard exhaustive search (slowest).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>subq (<em>subme</em>)</samp>’</dt>
|
|
<dt> ‘<samp>b_strategy (<em>b-adapt</em>)</samp>’</dt>
|
|
<dt> ‘<samp>keyint_min (<em>min-keyint</em>)</samp>’</dt>
|
|
<dt> ‘<samp>coder</samp>’</dt>
|
|
<dd><p>Set entropy encoder. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>ac</samp>’</dt>
|
|
<dd><p>Enable CABAC.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>vlc</samp>’</dt>
|
|
<dd><p>Enable CAVLC and disable CABAC. It generates the same effect as
|
|
<code>x264</code>’s ‘<samp>--no-cabac</samp>’ option.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>cmp</samp>’</dt>
|
|
<dd><p>Set full pixel motion estimation comparation algorithm. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
<dd><p>Enable chroma in motion estimation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sad</samp>’</dt>
|
|
<dd><p>Ignore chroma in motion estimation. It generates the same effect as
|
|
<code>x264</code>’s ‘<samp>--no-chroma-me</samp>’ option.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>threads (<em>threads</em>)</samp>’</dt>
|
|
<dt> ‘<samp>thread_type</samp>’</dt>
|
|
<dd><p>Set multithreading technique. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>slice</samp>’</dt>
|
|
<dd><p>Slice-based multithreading. It generates the same effect as
|
|
<code>x264</code>’s ‘<samp>--sliced-threads</samp>’ option.
|
|
</p></dd>
|
|
<dt> ‘<samp>frame</samp>’</dt>
|
|
<dd><p>Frame-based multithreading.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>flags</samp>’</dt>
|
|
<dd><p>Set encoding flags. It can be used to disable closed GOP and enable
|
|
open GOP by setting it to <code>-cgop</code>. The result is similar to
|
|
the behavior of <code>x264</code>’s ‘<samp>--open-gop</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc_init_occupancy (<em>vbv-init</em>)</samp>’</dt>
|
|
<dt> ‘<samp>preset (<em>preset</em>)</samp>’</dt>
|
|
<dd><p>Set the encoding preset.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tune (<em>tune</em>)</samp>’</dt>
|
|
<dd><p>Set tuning of the encoding params.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>profile (<em>profile</em>)</samp>’</dt>
|
|
<dd><p>Set profile restrictions.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fastfirstpass</samp>’</dt>
|
|
<dd><p>Enable fast settings when encoding first pass, when set to 1. When set
|
|
to 0, it has the same effect of <code>x264</code>’s
|
|
‘<samp>--slow-firstpass</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>crf (<em>crf</em>)</samp>’</dt>
|
|
<dd><p>Set the quality for constant quality mode.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>crf_max (<em>crf-max</em>)</samp>’</dt>
|
|
<dd><p>In CRF mode, prevents VBV from lowering quality beyond this point.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qp (<em>qp</em>)</samp>’</dt>
|
|
<dd><p>Set constant quantization rate control method parameter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aq-mode (<em>aq-mode</em>)</samp>’</dt>
|
|
<dd><p>Set AQ method. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none (<em>0</em>)</samp>’</dt>
|
|
<dd><p>Disabled.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>variance (<em>1</em>)</samp>’</dt>
|
|
<dd><p>Variance AQ (complexity mask).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>autovariance (<em>2</em>)</samp>’</dt>
|
|
<dd><p>Auto-variance AQ (experimental).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>aq-strength (<em>aq-strength</em>)</samp>’</dt>
|
|
<dd><p>Set AQ strength, reduce blocking and blurring in flat and textured areas.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>psy</samp>’</dt>
|
|
<dd><p>Use psychovisual optimizations when set to 1. When set to 0, it has the
|
|
same effect as <code>x264</code>’s ‘<samp>--no-psy</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>psy-rd (<em>psy-rd</em>)</samp>’</dt>
|
|
<dd><p>Set strength of psychovisual optimization, in
|
|
<var>psy-rd</var>:<var>psy-trellis</var> format.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc-lookahead (<em>rc-lookahead</em>)</samp>’</dt>
|
|
<dd><p>Set number of frames to look ahead for frametype and ratecontrol.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>weightb</samp>’</dt>
|
|
<dd><p>Enable weighted prediction for B-frames when set to 1. When set to 0,
|
|
it has the same effect as <code>x264</code>’s ‘<samp>--no-weightb</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>weightp (<em>weightp</em>)</samp>’</dt>
|
|
<dd><p>Set weighted prediction method for P-frames. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none (<em>0</em>)</samp>’</dt>
|
|
<dd><p>Disabled
|
|
</p></dd>
|
|
<dt> ‘<samp>simple (<em>1</em>)</samp>’</dt>
|
|
<dd><p>Enable only weighted refs
|
|
</p></dd>
|
|
<dt> ‘<samp>smart (<em>2</em>)</samp>’</dt>
|
|
<dd><p>Enable both weighted refs and duplicates
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>ssim (<em>ssim</em>)</samp>’</dt>
|
|
<dd><p>Enable calculation and printing SSIM stats after the encoding.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>intra-refresh (<em>intra-refresh</em>)</samp>’</dt>
|
|
<dd><p>Enable the use of Periodic Intra Refresh instead of IDR frames when set
|
|
to 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bluray-compat (<em>bluray-compat</em>)</samp>’</dt>
|
|
<dd><p>Configure the encoder to be compatible with the bluray standard.
|
|
It is a shorthand for setting "bluray-compat=1 force-cfr=1".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>b-bias (<em>b-bias</em>)</samp>’</dt>
|
|
<dd><p>Set the influence on how often B-frames are used.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>b-pyramid (<em>b-pyramid</em>)</samp>’</dt>
|
|
<dd><p>Set method for keeping of some B-frames as references. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none (<em>none</em>)</samp>’</dt>
|
|
<dd><p>Disabled.
|
|
</p></dd>
|
|
<dt> ‘<samp>strict (<em>strict</em>)</samp>’</dt>
|
|
<dd><p>Strictly hierarchical pyramid.
|
|
</p></dd>
|
|
<dt> ‘<samp>normal (<em>normal</em>)</samp>’</dt>
|
|
<dd><p>Non-strict (not Blu-ray compatible).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>mixed-refs</samp>’</dt>
|
|
<dd><p>Enable the use of one reference per partition, as opposed to one
|
|
reference per macroblock when set to 1. When set to 0, it has the
|
|
same effect as <code>x264</code>’s ‘<samp>--no-mixed-refs</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>8x8dct</samp>’</dt>
|
|
<dd><p>Enable adaptive spatial transform (high profile 8x8 transform)
|
|
when set to 1. When set to 0, it has the same effect as
|
|
<code>x264</code>’s ‘<samp>--no-8x8dct</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fast-pskip</samp>’</dt>
|
|
<dd><p>Enable early SKIP detection on P-frames when set to 1. When set
|
|
to 0, it has the same effect as <code>x264</code>’s
|
|
‘<samp>--no-fast-pskip</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aud (<em>aud</em>)</samp>’</dt>
|
|
<dd><p>Enable use of access unit delimiters when set to 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mbtree</samp>’</dt>
|
|
<dd><p>Enable use macroblock tree ratecontrol when set to 1. When set
|
|
to 0, it has the same effect as <code>x264</code>’s
|
|
‘<samp>--no-mbtree</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>deblock (<em>deblock</em>)</samp>’</dt>
|
|
<dd><p>Set loop filter parameters, in <var>alpha</var>:<var>beta</var> form.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cplxblur (<em>cplxblur</em>)</samp>’</dt>
|
|
<dd><p>Set fluctuations reduction in QP (before curve compression).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>partitions (<em>partitions</em>)</samp>’</dt>
|
|
<dd><p>Set partitions to consider as a comma-separated list of. Possible
|
|
values in the list:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>p8x8</samp>’</dt>
|
|
<dd><p>8x8 P-frame partition.
|
|
</p></dd>
|
|
<dt> ‘<samp>p4x4</samp>’</dt>
|
|
<dd><p>4x4 P-frame partition.
|
|
</p></dd>
|
|
<dt> ‘<samp>b8x8</samp>’</dt>
|
|
<dd><p>4x4 B-frame partition.
|
|
</p></dd>
|
|
<dt> ‘<samp>i8x8</samp>’</dt>
|
|
<dd><p>8x8 I-frame partition.
|
|
</p></dd>
|
|
<dt> ‘<samp>i4x4</samp>’</dt>
|
|
<dd><p>4x4 I-frame partition.
|
|
(Enabling ‘<samp>p4x4</samp>’ requires ‘<samp>p8x8</samp>’ to be enabled. Enabling
|
|
‘<samp>i8x8</samp>’ requires adaptive spatial transform (‘<samp>8x8dct</samp>’
|
|
option) to be enabled.)
|
|
</p></dd>
|
|
<dt> ‘<samp>none (<em>none</em>)</samp>’</dt>
|
|
<dd><p>Do not consider any partitions.
|
|
</p></dd>
|
|
<dt> ‘<samp>all (<em>all</em>)</samp>’</dt>
|
|
<dd><p>Consider every partition.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>direct-pred (<em>direct</em>)</samp>’</dt>
|
|
<dd><p>Set direct MV prediction mode. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none (<em>none</em>)</samp>’</dt>
|
|
<dd><p>Disable MV prediction.
|
|
</p></dd>
|
|
<dt> ‘<samp>spatial (<em>spatial</em>)</samp>’</dt>
|
|
<dd><p>Enable spatial predicting.
|
|
</p></dd>
|
|
<dt> ‘<samp>temporal (<em>temporal</em>)</samp>’</dt>
|
|
<dd><p>Enable temporal predicting.
|
|
</p></dd>
|
|
<dt> ‘<samp>auto (<em>auto</em>)</samp>’</dt>
|
|
<dd><p>Automatically decided.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>slice-max-size (<em>slice-max-size</em>)</samp>’</dt>
|
|
<dd><p>Set the limit of the size of each slice in bytes. If not specified
|
|
but RTP payload size (‘<samp>ps</samp>’) is specified, that is used.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stats (<em>stats</em>)</samp>’</dt>
|
|
<dd><p>Set the file name for multi-pass stats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nal-hrd (<em>nal-hrd</em>)</samp>’</dt>
|
|
<dd><p>Set signal HRD information (requires ‘<samp>vbv-bufsize</samp>’ to be set).
|
|
Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none (<em>none</em>)</samp>’</dt>
|
|
<dd><p>Disable HRD information signaling.
|
|
</p></dd>
|
|
<dt> ‘<samp>vbr (<em>vbr</em>)</samp>’</dt>
|
|
<dd><p>Variable bit rate.
|
|
</p></dd>
|
|
<dt> ‘<samp>cbr (<em>cbr</em>)</samp>’</dt>
|
|
<dd><p>Constant bit rate (not allowed in MP4 container).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>x264opts (N.A.)</samp>’</dt>
|
|
<dd><p>Set any x264 option, see <code>x264 --fullhelp</code> for a list.
|
|
</p>
|
|
<p>Argument is a list of <var>key</var>=<var>value</var> couples separated by
|
|
":". In <var>filter</var> and <var>psy-rd</var> options that use ":" as a separator
|
|
themselves, use "," instead. They accept it as well since long ago but this
|
|
is kept undocumented for some reason.
|
|
</p>
|
|
<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>x264-params (N.A.)</samp>’</dt>
|
|
<dd><p>Override the x264 configuration using a :-separated list of key=value
|
|
parameters.
|
|
</p>
|
|
<p>This option is functionally the same as the ‘<samp>x264opts</samp>’, but is
|
|
duplicated for compatibility with the Libav fork.
|
|
</p>
|
|
<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
|
|
cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
|
|
no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
|
|
</pre></td></tr></table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Encoding ffpresets for common usages are provided so they can be used with the
|
|
general presets system (e.g. passing the ‘<samp>pre</samp>’ option).
|
|
</p>
|
|
<a name="libxvid"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libxvid">18.5 libxvid</a></h2>
|
|
|
|
<p>Xvid MPEG-4 Part 2 encoder wrapper.
|
|
</p>
|
|
<p>This encoder requires the presence of the libxvidcore headers and library
|
|
during configuration. You need to explicitly configure the build with
|
|
<code>--enable-libxvid --enable-gpl</code>.
|
|
</p>
|
|
<p>The native <code>mpeg4</code> encoder supports the MPEG-4 Part 2 format, so
|
|
users can encode to this format without this library.
|
|
</p>
|
|
<a name="Options-3"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-3">18.5.1 Options</a></h3>
|
|
|
|
<p>The following options are supported by the libxvid wrapper. Some of
|
|
the following options are listed but are not documented, and
|
|
correspond to shared codec options. See <a href="#codec_002doptions">the Codec Options chapter</a> for their documentation. The other shared options
|
|
which are not listed have no effect for the libxvid encoder.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dt> ‘<samp>g</samp>’</dt>
|
|
<dt> ‘<samp>qmin</samp>’</dt>
|
|
<dt> ‘<samp>qmax</samp>’</dt>
|
|
<dt> ‘<samp>mpeg_quant</samp>’</dt>
|
|
<dt> ‘<samp>threads</samp>’</dt>
|
|
<dt> ‘<samp>bf</samp>’</dt>
|
|
<dt> ‘<samp>b_qfactor</samp>’</dt>
|
|
<dt> ‘<samp>b_qoffset</samp>’</dt>
|
|
<dt> ‘<samp>flags</samp>’</dt>
|
|
<dd><p>Set specific encoding flags. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mv4</samp>’</dt>
|
|
<dd><p>Use four motion vector by macroblock.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aic</samp>’</dt>
|
|
<dd><p>Enable high quality AC prediction.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gray</samp>’</dt>
|
|
<dd><p>Only encode grayscale.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gmc</samp>’</dt>
|
|
<dd><p>Enable the use of global motion compensation (GMC).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qpel</samp>’</dt>
|
|
<dd><p>Enable quarter-pixel motion compensation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cgop</samp>’</dt>
|
|
<dd><p>Enable closed GOP.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>global_header</samp>’</dt>
|
|
<dd><p>Place global headers in extradata instead of every keyframe.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>trellis</samp>’</dt>
|
|
<dt> ‘<samp>me_method</samp>’</dt>
|
|
<dd><p>Set motion estimation method. Possible values in decreasing order of
|
|
speed and increasing order of quality:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>Use no motion estimation (default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>phods</samp>’</dt>
|
|
<dt> ‘<samp>x1</samp>’</dt>
|
|
<dt> ‘<samp>log</samp>’</dt>
|
|
<dd><p>Enable advanced diamond zonal search for 16x16 blocks and half-pixel
|
|
refinement for 16x16 blocks. ‘<samp>x1</samp>’ and ‘<samp>log</samp>’ are aliases for
|
|
‘<samp>phods</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>epzs</samp>’</dt>
|
|
<dd><p>Enable all of the things described above, plus advanced diamond zonal
|
|
search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
|
|
estimation on chroma planes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>full</samp>’</dt>
|
|
<dd><p>Enable all of the things described above, plus extended 16x16 and 8x8
|
|
blocks search.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>mbd</samp>’</dt>
|
|
<dd><p>Set macroblock decision algorithm. Possible values in the increasing
|
|
order of quality:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>simple</samp>’</dt>
|
|
<dd><p>Use macroblock comparing function algorithm (default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bits</samp>’</dt>
|
|
<dd><p>Enable rate distortion-based half pixel and quarter pixel refinement for
|
|
16x16 blocks.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rd</samp>’</dt>
|
|
<dd><p>Enable all of the things described above, plus rate distortion-based
|
|
half pixel and quarter pixel refinement for 8x8 blocks, and rate
|
|
distortion-based search using square pattern.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>lumi_aq</samp>’</dt>
|
|
<dd><p>Enable lumi masking adaptive quantization when set to 1. Default is 0
|
|
(disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>variance_aq</samp>’</dt>
|
|
<dd><p>Enable variance adaptive quantization when set to 1. Default is 0
|
|
(disabled).
|
|
</p>
|
|
<p>When combined with ‘<samp>lumi_aq</samp>’, the resulting quality will not
|
|
be better than any of the two specified individually. In other
|
|
words, the resulting quality will be the worse one of the two
|
|
effects.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ssim</samp>’</dt>
|
|
<dd><p>Set structural similarity (SSIM) displaying method. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>off</samp>’</dt>
|
|
<dd><p>Disable displaying of SSIM information.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>avg</samp>’</dt>
|
|
<dd><p>Output average SSIM at the end of encoding to stdout. The format of
|
|
showing the average SSIM is:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">Average SSIM: %f
|
|
</pre></td></tr></table>
|
|
|
|
<p>For users who are not familiar with C, %f means a float number, or
|
|
a decimal (e.g. 0.939232).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame</samp>’</dt>
|
|
<dd><p>Output both per-frame SSIM data during encoding and average SSIM at
|
|
the end of encoding to stdout. The format of per-frame information
|
|
is:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> SSIM: avg: %1.3f min: %1.3f max: %1.3f
|
|
</pre></td></tr></table>
|
|
|
|
<p>For users who are not familiar with C, %1.3f means a float number
|
|
rounded to 3 digits after the dot (e.g. 0.932).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>ssim_acc</samp>’</dt>
|
|
<dd><p>Set SSIM accuracy. Valid options are integers within the range of
|
|
0-4, while 0 gives the most accurate result and 4 computes the
|
|
fastest.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="png"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-png">18.6 png</a></h2>
|
|
|
|
<p>PNG image encoder.
|
|
</p>
|
|
<a name="Private-options"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Private-options">18.6.1 Private options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dpi <var>integer</var></samp>’</dt>
|
|
<dd><p>Set physical density of pixels, in dots per inch, unset by default
|
|
</p></dd>
|
|
<dt> ‘<samp>dpm <var>integer</var></samp>’</dt>
|
|
<dd><p>Set physical density of pixels, in dots per meter, unset by default
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="ProRes"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ProRes">18.7 ProRes</a></h2>
|
|
|
|
<p>Apple ProRes encoder.
|
|
</p>
|
|
<p>FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
|
|
The used encoder can be chosen with the <code>-vcodec</code> option.
|
|
</p>
|
|
<a name="Private-Options-for-prores_002dks"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Private-Options-for-prores_002dks">18.7.1 Private Options for prores-ks</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>profile <var>integer</var></samp>’</dt>
|
|
<dd><p>Select the ProRes profile to encode
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>proxy</samp>’</dt>
|
|
<dt> ‘<samp>lt</samp>’</dt>
|
|
<dt> ‘<samp>standard</samp>’</dt>
|
|
<dt> ‘<samp>hq</samp>’</dt>
|
|
<dt> ‘<samp>4444</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>quant_mat <var>integer</var></samp>’</dt>
|
|
<dd><p>Select quantization matrix.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dt> ‘<samp>default</samp>’</dt>
|
|
<dt> ‘<samp>proxy</samp>’</dt>
|
|
<dt> ‘<samp>lt</samp>’</dt>
|
|
<dt> ‘<samp>standard</samp>’</dt>
|
|
<dt> ‘<samp>hq</samp>’</dt>
|
|
</dl>
|
|
<p>If set to <var>auto</var>, the matrix matching the profile will be picked.
|
|
If not set, the matrix providing the highest quality, <var>default</var>, will be
|
|
picked.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bits_per_mb <var>integer</var></samp>’</dt>
|
|
<dd><p>How many bits to allot for coding one macroblock. Different profiles use
|
|
between 200 and 2400 bits per macroblock, the maximum is 8000.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mbs_per_slice <var>integer</var></samp>’</dt>
|
|
<dd><p>Number of macroblocks in each slice (1-8); the default value (8)
|
|
should be good in almost all situations.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>vendor <var>string</var></samp>’</dt>
|
|
<dd><p>Override the 4-byte vendor ID.
|
|
A custom vendor ID like <var>apl0</var> would claim the stream was produced by
|
|
the Apple encoder.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>alpha_bits <var>integer</var></samp>’</dt>
|
|
<dd><p>Specify number of bits for alpha component.
|
|
Possible values are <var>0</var>, <var>8</var> and <var>16</var>.
|
|
Use <var>0</var> to disable alpha plane coding.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Speed-considerations"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Speed-considerations">18.7.2 Speed considerations</a></h3>
|
|
|
|
<p>In the default mode of operation the encoder has to honor frame constraints
|
|
(i.e. not produc frames with size bigger than requested) while still making
|
|
output picture as good as possible.
|
|
A frame containing a lot of small details is harder to compress and the encoder
|
|
would spend more time searching for appropriate quantizers for each slice.
|
|
</p>
|
|
<p>Setting a higher ‘<samp>bits_per_mb</samp>’ limit will improve the speed.
|
|
</p>
|
|
<p>For the fastest encoding speed set the ‘<samp>qscale</samp>’ parameter (4 is the
|
|
recommended value) and do not set a size constraint.
|
|
</p>
|
|
<a name="Bitstream-Filters"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Bitstream-Filters">19. Bitstream Filters</a></h1>
|
|
|
|
<p>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</code>.
|
|
</p>
|
|
<p>You can disable all the bitstream filters using the configure option
|
|
<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
|
|
the option <code>--enable-bsf=BSF</code>, or you can disable a particular
|
|
bitstream filter using the option <code>--disable-bsf=BSF</code>.
|
|
</p>
|
|
<p>The option <code>-bsfs</code> of the ff* tools will display the list of
|
|
all the supported bitstream filters included in your build.
|
|
</p>
|
|
<p>Below is a description of the currently available bitstream filters.
|
|
</p>
|
|
<a name="aac_005fadtstoasc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aac_005fadtstoasc">19.1 aac_adtstoasc</a></h2>
|
|
|
|
<p>Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
|
|
bitstream filter.
|
|
</p>
|
|
<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
|
|
ADTS header and removes the ADTS header.
|
|
</p>
|
|
<p>This is required for example when copying an AAC stream from a raw
|
|
ADTS AAC container to a FLV or a MOV/MP4 file.
|
|
</p>
|
|
<a name="chomp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-chomp">19.2 chomp</a></h2>
|
|
|
|
<p>Remove zero padding at the end of a packet.
|
|
</p>
|
|
<a name="dump_005fextra"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-dump_005fextra">19.3 dump_extra</a></h2>
|
|
|
|
<p>Add extradata to the beginning of the filtered packets.
|
|
</p>
|
|
<p>The additional argument specifies which packets should be filtered.
|
|
It accepts the values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>add extradata to all key packets, but only if <var>local_header</var> is
|
|
set in the ‘<samp>flags2</samp>’ codec context field
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>k</samp>’</dt>
|
|
<dd><p>add extradata to all key packets
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>e</samp>’</dt>
|
|
<dd><p>add extradata to all packets
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If not specified it is assumed ‘<samp>k</samp>’.
|
|
</p>
|
|
<p>For example the following <code>ffmpeg</code> command forces a global
|
|
header (thus disabling individual packet headers) in the H.264 packets
|
|
generated by the <code>libx264</code> encoder, but corrects them by adding
|
|
the header stored in extradata to the key packets:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
|
</pre></td></tr></table>
|
|
|
|
<a name="h264_005fmp4toannexb"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-h264_005fmp4toannexb">19.4 h264_mp4toannexb</a></h2>
|
|
|
|
<p>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).
|
|
</p>
|
|
<p>This is required by some streaming formats, typically the MPEG-2
|
|
transport stream format ("mpegts").
|
|
</p>
|
|
<p>For example to remux an MP4 file containing an H.264 stream to mpegts
|
|
format with <code>ffmpeg</code>, you can use the command:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
|
|
</pre></td></tr></table>
|
|
|
|
<a name="imx_005fdump_005fheader"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-imx_005fdump_005fheader">19.5 imx_dump_header</a></h2>
|
|
|
|
<a name="mjpeg2jpeg"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mjpeg2jpeg">19.6 mjpeg2jpeg</a></h2>
|
|
|
|
<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
|
|
</p>
|
|
<p>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
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Unfortunately, these chunks are incomplete JPEG images, because
|
|
they lack the DHT segment required for decoding. Quoting from
|
|
<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
|
|
</p>
|
|
<p>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."
|
|
</p>
|
|
<p>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.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="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
|
|
</pre></td></tr></table>
|
|
|
|
<a name="mjpega_005fdump_005fheader"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mjpega_005fdump_005fheader">19.7 mjpega_dump_header</a></h2>
|
|
|
|
<a name="movsub"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-movsub">19.8 movsub</a></h2>
|
|
|
|
<a name="mp3_005fheader_005fdecompress"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mp3_005fheader_005fdecompress">19.9 mp3_header_decompress</a></h2>
|
|
|
|
<a name="noise-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-noise-1">19.10 noise</a></h2>
|
|
|
|
<a name="remove_005fextra"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-remove_005fextra">19.11 remove_extra</a></h2>
|
|
|
|
<a name="Format-Options"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Format-Options">20. Format Options</a></h1>
|
|
|
|
<p>The libavformat library provides some generic global options, which
|
|
can be set on all the muxers and demuxers. In addition each muxer or
|
|
demuxer may support so-called private options, which are specific for
|
|
that component.
|
|
</p>
|
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
|
FFmpeg tools, or by setting the value explicitly in the
|
|
<code>AVFormatContext</code> options or using the ‘<tt>libavutil/opt.h</tt>’ API
|
|
for programmatic use.
|
|
</p>
|
|
<p>The list of supported options follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>avioflags <var>flags</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>direct</samp>’</dt>
|
|
<dd><p>Reduce buffering.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>probesize <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set probing size in bytes, i.e. the size of the data to analyze to get
|
|
stream information. A higher value will allow to detect more
|
|
information in case it is dispersed into the stream, but will increase
|
|
latency. Must be an integer not lesser than 32. It is 5000000 by default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>packetsize <var>integer</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set packet size.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fflags <var>flags</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Set format flags.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>ignidx</samp>’</dt>
|
|
<dd><p>Ignore index.
|
|
</p></dd>
|
|
<dt> ‘<samp>genpts</samp>’</dt>
|
|
<dd><p>Generate PTS.
|
|
</p></dd>
|
|
<dt> ‘<samp>nofillin</samp>’</dt>
|
|
<dd><p>Do not fill in missing values that can be exactly calculated.
|
|
</p></dd>
|
|
<dt> ‘<samp>noparse</samp>’</dt>
|
|
<dd><p>Disable AVParsers, this needs <code>+nofillin</code> too.
|
|
</p></dd>
|
|
<dt> ‘<samp>igndts</samp>’</dt>
|
|
<dd><p>Ignore DTS.
|
|
</p></dd>
|
|
<dt> ‘<samp>discardcorrupt</samp>’</dt>
|
|
<dd><p>Discard corrupted frames.
|
|
</p></dd>
|
|
<dt> ‘<samp>sortdts</samp>’</dt>
|
|
<dd><p>Try to interleave output packets by DTS.
|
|
</p></dd>
|
|
<dt> ‘<samp>keepside</samp>’</dt>
|
|
<dd><p>Do not merge side data.
|
|
</p></dd>
|
|
<dt> ‘<samp>latm</samp>’</dt>
|
|
<dd><p>Enable RTP MP4A-LATM payload.
|
|
</p></dd>
|
|
<dt> ‘<samp>nobuffer</samp>’</dt>
|
|
<dd><p>Reduce the latency introduced by optional buffering
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>seek2any <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Allow seeking to non-keyframes on demuxer level when supported if set to 1.
|
|
Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>analyzeduration <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Specify how many microseconds are analyzed to probe the input. A
|
|
higher value will allow to detect more accurate information, but will
|
|
increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cryptokey <var>hexadecimal string</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set decryption key.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>indexmem <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set max memory used for timestamp index (per stream).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtbufsize <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set max memory used for buffering real-time frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fdebug <var>flags</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Print specific debug info.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>ts</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>max_delay <var>integer</var> (<em>input/output</em>)</samp>’</dt>
|
|
<dd><p>Set maximum muxing or demuxing delay in microseconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fpsprobesize <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set number of frames used to probe fps.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>audio_preload <var>integer</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set microseconds by which audio packets should be interleaved earlier.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chunk_duration <var>integer</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set microseconds for each chunk.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chunk_size <var>integer</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set size in bytes for each chunk.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>err_detect, f_err_detect <var>flags</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set error detection flags. <code>f_err_detect</code> is deprecated and
|
|
should be used only via the <code>ffmpeg</code> tool.
|
|
</p>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>crccheck</samp>’</dt>
|
|
<dd><p>Verify embedded CRCs.
|
|
</p></dd>
|
|
<dt> ‘<samp>bitstream</samp>’</dt>
|
|
<dd><p>Detect bitstream specification deviations.
|
|
</p></dd>
|
|
<dt> ‘<samp>buffer</samp>’</dt>
|
|
<dd><p>Detect improper bitstream length.
|
|
</p></dd>
|
|
<dt> ‘<samp>explode</samp>’</dt>
|
|
<dd><p>Abort decoding on minor error detection.
|
|
</p></dd>
|
|
<dt> ‘<samp>careful</samp>’</dt>
|
|
<dd><p>Consider things that violate the spec and have not been seen in the
|
|
wild as errors.
|
|
</p></dd>
|
|
<dt> ‘<samp>compliant</samp>’</dt>
|
|
<dd><p>Consider all spec non compliancies as errors.
|
|
</p></dd>
|
|
<dt> ‘<samp>aggressive</samp>’</dt>
|
|
<dd><p>Consider things that a sane encoder should not do as an error.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>use_wallclock_as_timestamps <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Use wallclock as timestamps.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>avoid_negative_ts <var>integer</var> (<em>output</em>)</samp>’</dt>
|
|
<dd>
|
|
<p>Possible values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>make_non_negative</samp>’</dt>
|
|
<dd><p>Shift timestamps to make them non-negative.
|
|
Also note that this affects only leading negative timestamps, and not
|
|
non-monotonic negative timestamps.
|
|
</p></dd>
|
|
<dt> ‘<samp>make_zero</samp>’</dt>
|
|
<dd><p>Shift timestamps so that the first timestamp is 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>auto (default)</samp>’</dt>
|
|
<dd><p>Enables shifting when required by the target format.
|
|
</p></dd>
|
|
<dt> ‘<samp>disabled</samp>’</dt>
|
|
<dd><p>Disables shifting of timestamp.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>When shifting is enabled, all output timestamps are shifted by the
|
|
same amount. Audio, video, and subtitles desynching and relative
|
|
timestamp differences are preserved compared to how they would have
|
|
been without shifting.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>skip_initial_bytes <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Set number of bytes to skip before reading header and frames if set to 1.
|
|
Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>correct_ts_overflow <var>integer</var> (<em>input</em>)</samp>’</dt>
|
|
<dd><p>Correct single timestamp overflows if set to 1. Default is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flush_packets <var>integer</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Flush the underlying I/O stream after each packet. Default 1 enables it, and
|
|
has the effect of reducing the latency; 0 disables it and may slightly
|
|
increase performance in some cases.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>output_ts_offset <var>offset</var> (<em>output</em>)</samp>’</dt>
|
|
<dd><p>Set the output time offset.
|
|
</p>
|
|
<p><var>offset</var> must be a time duration specification,
|
|
see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
|
|
</p>
|
|
<p>The offset is added by the muxer to the output timestamps.
|
|
</p>
|
|
<p>Specifying a positive offset means that the corresponding streams are
|
|
delayed bt the time duration specified in <var>offset</var>. Default value
|
|
is <code>0</code> (meaning that no offset is applied).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<p><a name="Format-stream-specifiers"></a>
|
|
</p><a name="Format-stream-specifiers-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Format-stream-specifiers-1">20.1 Format stream specifiers</a></h2>
|
|
|
|
<p>Format stream specifiers allow selection of one or more streams that
|
|
match specific properties.
|
|
</p>
|
|
<p>Possible forms of stream specifiers are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp><var>stream_index</var></samp>’</dt>
|
|
<dd><p>Matches the stream with this index.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>’</dt>
|
|
<dd><p><var>stream_type</var> is one of following: ’v’ for video, ’a’ for audio,
|
|
’s’ for subtitle, ’d’ for data, and ’t’ for attachments. If
|
|
<var>stream_index</var> is given, then it matches the stream number
|
|
<var>stream_index</var> of this type. Otherwise, it matches all streams of
|
|
this type.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>’</dt>
|
|
<dd><p>If <var>stream_index</var> is given, then it matches the stream with number
|
|
<var>stream_index</var> in the program with the id
|
|
<var>program_id</var>. Otherwise, it matches all streams in the program.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>#<var>stream_id</var></samp>’</dt>
|
|
<dd><p>Matches the stream by a format-specific ID.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The exact semantics of stream specifiers is defined by the
|
|
<code>avformat_match_stream_specifier()</code> function declared in the
|
|
‘<tt>libavformat/avformat.h</tt>’ header.
|
|
</p>
|
|
<a name="Demuxers"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Demuxers">21. Demuxers</a></h1>
|
|
|
|
<p>Demuxers are configured elements in FFmpeg that can read the
|
|
multimedia streams from a particular type of file.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported demuxers
|
|
are enabled by default. You can list all available ones using the
|
|
configure option <code>--list-demuxers</code>.
|
|
</p>
|
|
<p>You can disable all the demuxers using the configure option
|
|
<code>--disable-demuxers</code>, and selectively enable a single demuxer with
|
|
the option <code>--enable-demuxer=<var>DEMUXER</var></code>, or disable it
|
|
with the option <code>--disable-demuxer=<var>DEMUXER</var></code>.
|
|
</p>
|
|
<p>The option <code>-formats</code> of the ff* tools will display the list of
|
|
enabled demuxers.
|
|
</p>
|
|
<p>The description of some of the currently available demuxers follows.
|
|
</p>
|
|
<a name="applehttp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-applehttp">21.1 applehttp</a></h2>
|
|
|
|
<p>Apple HTTP Live Streaming demuxer.
|
|
</p>
|
|
<p>This demuxer presents all AVStreams from all variant streams.
|
|
The id field is set to the bitrate variant index number. By setting
|
|
the discard flags on AVStreams (by pressing ’a’ or ’v’ in ffplay),
|
|
the caller can decide which variant streams to actually receive.
|
|
The total bitrate of the variant that the stream belongs to is
|
|
available in a metadata key named "variant_bitrate".
|
|
</p>
|
|
<a name="asf"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-asf">21.2 asf</a></h2>
|
|
|
|
<p>Advanced Systems Format demuxer.
|
|
</p>
|
|
<p>This demuxer is used to demux ASF files and MMS network streams.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-no_resync_search <var>bool</var></samp>’</dt>
|
|
<dd><p>Do not try to resynchronize by looking for a certain optional start code.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="concat"></a>
|
|
</p><a name="concat-3"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-concat-3">21.3 concat</a></h2>
|
|
|
|
<p>Virtual concatenation script demuxer.
|
|
</p>
|
|
<p>This demuxer reads a list of files and other directives from a text file and
|
|
demuxes them one after the other, as if all their packet had been muxed
|
|
together.
|
|
</p>
|
|
<p>The timestamps in the files are adjusted so that the first file starts at 0
|
|
and each next file starts where the previous one finishes. Note that it is
|
|
done globally and may cause gaps if all streams do not have exactly the same
|
|
length.
|
|
</p>
|
|
<p>All files must have the same streams (same codecs, same time base, etc.).
|
|
</p>
|
|
<p>The duration of each file is used to adjust the timestamps of the next file:
|
|
if the duration is incorrect (because it was computed using the bit-rate or
|
|
because the file is truncated, for example), it can cause artifacts. The
|
|
<code>duration</code> directive can be used to override the duration stored in
|
|
each file.
|
|
</p>
|
|
<a name="Syntax"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Syntax">21.3.1 Syntax</a></h3>
|
|
|
|
<p>The script is a text file in extended-ASCII, with one directive per line.
|
|
Empty lines, leading spaces and lines starting with ’#’ are ignored. The
|
|
following directive is recognized:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp><code>file <var>path</var></code></samp>’</dt>
|
|
<dd><p>Path to a file to read; special characters and spaces must be escaped with
|
|
backslash or single quotes.
|
|
</p>
|
|
<p>All subsequent file-related directives apply to that file.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><code>ffconcat version 1.0</code></samp>’</dt>
|
|
<dd><p>Identify the script type and version. It also sets the ‘<samp>safe</samp>’ option
|
|
to 1 if it was to its default -1.
|
|
</p>
|
|
<p>To make FFmpeg recognize the format automatically, this directive must
|
|
appears exactly as is (no extra space or byte-order-mark) on the very first
|
|
line of the script.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><code>duration <var>dur</var></code></samp>’</dt>
|
|
<dd><p>Duration of the file. This information can be specified from the file;
|
|
specifying it here may be more efficient or help if the information from the
|
|
file is not available or accurate.
|
|
</p>
|
|
<p>If the duration is set for all files, then it is possible to seek in the
|
|
whole concatenated video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><code>stream</code></samp>’</dt>
|
|
<dd><p>Introduce a stream in the virtual file.
|
|
All subsequent stream-related directives apply to the last introduced
|
|
stream.
|
|
Some streams properties must be set in order to allow identifying the
|
|
matching streams in the subfiles.
|
|
If no streams are defined in the script, the streams from the first file are
|
|
copied.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp><code>exact_stream_id <var>id</var></code></samp>’</dt>
|
|
<dd><p>Set the id of the stream.
|
|
If this directive is given, the string with the corresponding id in the
|
|
subfiles will be used.
|
|
This is especially useful for MPEG-PS (VOB) files, where the order of the
|
|
streams is not reliable.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Options-14"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-14">21.3.2 Options</a></h3>
|
|
|
|
<p>This demuxer accepts the following option:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>safe</samp>’</dt>
|
|
<dd><p>If set to 1, reject unsafe file paths. A file path is considered safe if it
|
|
does not contain a protocol specification and is relative and all components
|
|
only contain characters from the portable character set (letters, digits,
|
|
period, underscore and hyphen) and have no period at the beginning of a
|
|
component.
|
|
</p>
|
|
<p>If set to 0, any file name is accepted.
|
|
</p>
|
|
<p>The default is -1, it is equivalent to 1 if the format was automatically
|
|
probed and 0 otherwise.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="flv"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-flv">21.4 flv</a></h2>
|
|
|
|
<p>Adobe Flash Video Format demuxer.
|
|
</p>
|
|
<p>This demuxer is used to demux FLV files and RTMP network streams.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-flv_metadata <var>bool</var></samp>’</dt>
|
|
<dd><p>Allocate the streams according to the onMetaData array content.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="libgme"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libgme">21.5 libgme</a></h2>
|
|
|
|
<p>The Game Music Emu library is a collection of video game music file emulators.
|
|
</p>
|
|
<p>See <a href="http://code.google.com/p/game-music-emu/">http://code.google.com/p/game-music-emu/</a> for more information.
|
|
</p>
|
|
<p>Some files have multiple tracks. The demuxer will pick the first track by
|
|
default. The ‘<samp>track_index</samp>’ option can be used to select a different
|
|
track. Track indexes start at 0. The demuxer exports the number of tracks as
|
|
<var>tracks</var> meta data entry.
|
|
</p>
|
|
<p>For very large files, the ‘<samp>max_size</samp>’ option may have to be adjusted.
|
|
</p>
|
|
<a name="libquvi"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libquvi">21.6 libquvi</a></h2>
|
|
|
|
<p>Play media from Internet services using the quvi project.
|
|
</p>
|
|
<p>The demuxer accepts a ‘<samp>format</samp>’ option to request a specific quality. It
|
|
is by default set to <var>best</var>.
|
|
</p>
|
|
<p>See <a href="http://quvi.sourceforge.net/">http://quvi.sourceforge.net/</a> for more information.
|
|
</p>
|
|
<p>FFmpeg needs to be built with <code>--enable-libquvi</code> for this demuxer to be
|
|
enabled.
|
|
</p>
|
|
<a name="image2-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-image2-1">21.7 image2</a></h2>
|
|
|
|
<p>Image file demuxer.
|
|
</p>
|
|
<p>This demuxer reads from a list of image files specified by a pattern.
|
|
The syntax and meaning of the pattern is specified by the
|
|
option <var>pattern_type</var>.
|
|
</p>
|
|
<p>The pattern may contain a suffix which is used to automatically
|
|
determine the format of the images contained in the files.
|
|
</p>
|
|
<p>The size, the pixel format, and the format of each image must be the
|
|
same for all the files in the sequence.
|
|
</p>
|
|
<p>This demuxer accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Set the frame rate for the video stream. It defaults to 25.
|
|
</p></dd>
|
|
<dt> ‘<samp>loop</samp>’</dt>
|
|
<dd><p>If set to 1, loop over the input. Default value is 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>pattern_type</samp>’</dt>
|
|
<dd><p>Select the pattern type used to interpret the provided filename.
|
|
</p>
|
|
<p><var>pattern_type</var> accepts one of the following values.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sequence</samp>’</dt>
|
|
<dd><p>Select a sequence pattern type, used to specify a sequence of files
|
|
indexed by sequential numbers.
|
|
</p>
|
|
<p>A sequence pattern may contain the string "%d" or "%0<var>N</var>d", which
|
|
specifies the position of the characters representing a sequential
|
|
number in each filename matched by the pattern. If the form
|
|
"%d0<var>N</var>d" is used, the string representing the number in each
|
|
filename is 0-padded and <var>N</var> is the total number of 0-padded
|
|
digits representing the number. The literal character ’%’ can be
|
|
specified in the pattern with the string "%%".
|
|
</p>
|
|
<p>If the sequence pattern contains "%d" or "%0<var>N</var>d", the first filename of
|
|
the file list specified by the pattern must contain a number
|
|
inclusively contained between <var>start_number</var> and
|
|
<var>start_number</var>+<var>start_number_range</var>-1, and all the following
|
|
numbers must be sequential.
|
|
</p>
|
|
<p>For example the pattern "img-%03d.bmp" will match a sequence of
|
|
filenames of the form ‘<tt>img-001.bmp</tt>’, ‘<tt>img-002.bmp</tt>’, ...,
|
|
‘<tt>img-010.bmp</tt>’, etc.; the pattern "i%%m%%g-%d.jpg" will match a
|
|
sequence of filenames of the form ‘<tt>i%m%g-1.jpg</tt>’,
|
|
‘<tt>i%m%g-2.jpg</tt>’, ..., ‘<tt>i%m%g-10.jpg</tt>’, etc.
|
|
</p>
|
|
<p>Note that the pattern must not necessarily contain "%d" or
|
|
"%0<var>N</var>d", for example to convert a single image file
|
|
‘<tt>img.jpeg</tt>’ you can employ the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i img.jpeg img.png
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>glob</samp>’</dt>
|
|
<dd><p>Select a glob wildcard pattern type.
|
|
</p>
|
|
<p>The pattern is interpreted like a <code>glob()</code> pattern. This is only
|
|
selectable if libavformat was compiled with globbing support.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>glob_sequence <em>(deprecated, will be removed)</em></samp>’</dt>
|
|
<dd><p>Select a mixed glob wildcard/sequence pattern.
|
|
</p>
|
|
<p>If your version of libavformat was compiled with globbing support, and
|
|
the provided pattern contains at least one glob meta character among
|
|
<code>%*?[]{}</code> that is preceded by an unescaped "%", the pattern is
|
|
interpreted like a <code>glob()</code> pattern, otherwise it is interpreted
|
|
like a sequence pattern.
|
|
</p>
|
|
<p>All glob special characters <code>%*?[]{}</code> must be prefixed
|
|
with "%". To escape a literal "%" you shall use "%%".
|
|
</p>
|
|
<p>For example the pattern <code>foo-%*.jpeg</code> will match all the
|
|
filenames prefixed by "foo-" and terminating with ".jpeg", and
|
|
<code>foo-%?%?%?.jpeg</code> will match all the filenames prefixed with
|
|
"foo-", followed by a sequence of three characters, and terminating
|
|
with ".jpeg".
|
|
</p>
|
|
<p>This pattern type is deprecated in favor of <var>glob</var> and
|
|
<var>sequence</var>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <var>glob_sequence</var>.
|
|
</p></dd>
|
|
<dt> ‘<samp>pixel_format</samp>’</dt>
|
|
<dd><p>Set the pixel format of the images to read. If not specified the pixel
|
|
format is guessed from the first image file in the sequence.
|
|
</p></dd>
|
|
<dt> ‘<samp>start_number</samp>’</dt>
|
|
<dd><p>Set the index of the file matched by the image file pattern to start
|
|
to read from. Default value is 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>start_number_range</samp>’</dt>
|
|
<dd><p>Set the index interval range to check when looking for the first image
|
|
file in the sequence, starting from <var>start_number</var>. Default value
|
|
is 5.
|
|
</p></dd>
|
|
<dt> ‘<samp>ts_from_file</samp>’</dt>
|
|
<dd><p>If set to 1, will set frame timestamp to modification time of image file. Note
|
|
that monotonity of timestamps is not provided: images go in the same order as
|
|
without this option. Default value is 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Set the video size of the images to read. If not specified the video
|
|
size is guessed from the first image file in the sequence.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-73"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-73">21.7.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Use <code>ffmpeg</code> for creating a video from the images in the file
|
|
sequence ‘<tt>img-001.jpeg</tt>’, ‘<tt>img-002.jpeg</tt>’, ..., assuming an
|
|
input frame rate of 10 frames per second:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
As above, but start by reading from a file with index 100 in the sequence:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Read images matching the "*.png" glob pattern , that is all the files
|
|
terminating with the ".png" suffix:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="mpegts"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mpegts">21.8 mpegts</a></h2>
|
|
|
|
<p>MPEG-2 transport stream demuxer.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>fix_teletext_pts</samp>’</dt>
|
|
<dd><p>Overrides teletext packet PTS and DTS values with the timestamps calculated
|
|
from the PCR of the first program which the teletext stream is part of and is
|
|
not discarded. Default value is 1, set this option to 0 if you want your
|
|
teletext packet PTS and DTS values untouched.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="rawvideo-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rawvideo-1">21.9 rawvideo</a></h2>
|
|
|
|
<p>Raw video demuxer.
|
|
</p>
|
|
<p>This demuxer allows one to read raw video data. Since there is no header
|
|
specifying the assumed video parameters, the user must specify them
|
|
in order to be able to decode the data correctly.
|
|
</p>
|
|
<p>This demuxer accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Set input video frame rate. Default value is 25.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pixel_format</samp>’</dt>
|
|
<dd><p>Set the input video pixel format. Default value is <code>yuv420p</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Set the input video size. This value must be specified explicitly.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example to read a rawvideo file ‘<tt>input.raw</tt>’ with
|
|
<code>ffplay</code>, assuming a pixel format of <code>rgb24</code>, a video
|
|
size of <code>320x240</code>, and a frame rate of 10 images per second, use
|
|
the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
|
|
</pre></td></tr></table>
|
|
|
|
<a name="sbg"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sbg">21.10 sbg</a></h2>
|
|
|
|
<p>SBaGen script demuxer.
|
|
</p>
|
|
<p>This demuxer reads the script language used by SBaGen
|
|
<a href="http://uazu.net/sbagen/">http://uazu.net/sbagen/</a> to generate binaural beats sessions. A SBG
|
|
script looks like that:
|
|
</p><table><tr><td> </td><td><pre class="example">-SE
|
|
a: 300-2.5/3 440+4.5/0
|
|
b: 300-2.5/0 440+4.5/3
|
|
off: -
|
|
NOW == a
|
|
+0:07:00 == b
|
|
+0:14:00 == a
|
|
+0:21:00 == b
|
|
+0:30:00 off
|
|
</pre></td></tr></table>
|
|
|
|
<p>A SBG script can mix absolute and relative timestamps. If the script uses
|
|
either only absolute timestamps (including the script start time) or only
|
|
relative ones, then its layout is fixed, and the conversion is
|
|
straightforward. On the other hand, if the script mixes both kind of
|
|
timestamps, then the <var>NOW</var> reference for relative timestamps will be
|
|
taken from the current time of day at the time the script is read, and the
|
|
script layout will be frozen according to that reference. That means that if
|
|
the script is directly played, the actual times will match the absolute
|
|
timestamps up to the sound controller’s clock accuracy, but if the user
|
|
somehow pauses the playback or seeks, all times will be shifted accordingly.
|
|
</p>
|
|
<a name="tedcaptions"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-tedcaptions">21.11 tedcaptions</a></h2>
|
|
|
|
<p>JSON captions used for <a href="http://www.ted.com/">TED Talks</a>.
|
|
</p>
|
|
<p>TED does not provide links to the captions, but they can be guessed from the
|
|
page. The file ‘<tt>tools/bookmarklets.html</tt>’ from the FFmpeg source tree
|
|
contains a bookmarklet to expose them.
|
|
</p>
|
|
<p>This demuxer accepts the following option:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>start_time</samp>’</dt>
|
|
<dd><p>Set the start time of the TED talk, in milliseconds. The default is 15000
|
|
(15s). It is used to sync the captions with the downloadable videos, because
|
|
they include a 15s intro.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Example: convert the captions to a format most players understand:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Muxers"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Muxers">22. Muxers</a></h1>
|
|
|
|
<p>Muxers are configured elements in FFmpeg which allow writing
|
|
multimedia streams to a particular type of file.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported muxers
|
|
are enabled by default. You can list all available muxers using the
|
|
configure option <code>--list-muxers</code>.
|
|
</p>
|
|
<p>You can disable all the muxers with the configure option
|
|
<code>--disable-muxers</code> and selectively enable / disable single muxers
|
|
with the options <code>--enable-muxer=<var>MUXER</var></code> /
|
|
<code>--disable-muxer=<var>MUXER</var></code>.
|
|
</p>
|
|
<p>The option <code>-formats</code> of the ff* tools will display the list of
|
|
enabled muxers.
|
|
</p>
|
|
<p>A description of some of the currently available muxers follows.
|
|
</p>
|
|
<p><a name="aiff"></a>
|
|
</p><a name="aiff-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aiff-1">22.1 aiff</a></h2>
|
|
|
|
<p>Audio Interchange File Format muxer.
|
|
</p>
|
|
<a name="Options-42"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-42">22.1.1 Options</a></h3>
|
|
|
|
<p>It accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>write_id3v2</samp>’</dt>
|
|
<dd><p>Enable ID3v2 tags writing when set to 1. Default is 0 (disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>id3v2_version</samp>’</dt>
|
|
<dd><p>Select ID3v2 version to write. Currently only version 3 and 4 (aka.
|
|
ID3v2.3 and ID3v2.4) are supported. The default is version 4.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="crc"></a>
|
|
</p><a name="crc-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-crc-1">22.2 crc</a></h2>
|
|
|
|
<p>CRC (Cyclic Redundancy Check) testing format.
|
|
</p>
|
|
<p>This muxer computes and prints the Adler-32 CRC of all the input audio
|
|
and video frames. By default audio frames are converted to signed
|
|
16-bit raw audio and video frames to raw video before computing the
|
|
CRC.
|
|
</p>
|
|
<p>The output of the muxer consists of a single line of the form:
|
|
CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
|
|
8 digits containing the CRC for all the decoded input frames.
|
|
</p>
|
|
<p>See also the <a href="#framecrc">framecrc</a> muxer.
|
|
</p>
|
|
<a name="Examples-65"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-65">22.2.1 Examples</a></h3>
|
|
|
|
<p>For example to compute the CRC of the input, and store it in the file
|
|
‘<tt>out.crc</tt>’:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
|
|
</pre></td></tr></table>
|
|
|
|
<p>You can print the CRC to stdout with the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f crc -
|
|
</pre></td></tr></table>
|
|
|
|
<p>You can select the output format of each frame with <code>ffmpeg</code> by
|
|
specifying the audio and video codec and format. For example to
|
|
compute the CRC of the input audio converted to PCM unsigned 8-bit
|
|
and the input video converted to MPEG-2 video, use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
|
|
</pre></td></tr></table>
|
|
|
|
<p><a name="framecrc"></a>
|
|
</p><a name="framecrc-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-framecrc-1">22.3 framecrc</a></h2>
|
|
|
|
<p>Per-packet CRC (Cyclic Redundancy Check) testing format.
|
|
</p>
|
|
<p>This muxer computes and prints the Adler-32 CRC for each audio
|
|
and video packet. By default audio frames are converted to signed
|
|
16-bit raw audio and video frames to raw video before computing the
|
|
CRC.
|
|
</p>
|
|
<p>The output of the muxer consists of a line for each audio and video
|
|
packet of the form:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, 0x<var>CRC</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>CRC</var> is a hexadecimal number 0-padded to 8 digits containing the
|
|
CRC of the packet.
|
|
</p>
|
|
<a name="Examples-41"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-41">22.3.1 Examples</a></h3>
|
|
|
|
<p>For example to compute the CRC of the audio and video frames in
|
|
‘<tt>INPUT</tt>’, converted to raw audio and video packets, and store it
|
|
in the file ‘<tt>out.crc</tt>’:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
|
|
</pre></td></tr></table>
|
|
|
|
<p>To print the information to stdout, use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
|
|
</pre></td></tr></table>
|
|
|
|
<p>With <code>ffmpeg</code>, you can select the output format to which the
|
|
audio and video frames are encoded before computing the CRC for each
|
|
packet by specifying the audio and video codec. For example, to
|
|
compute the CRC of each decoded input audio frame converted to PCM
|
|
unsigned 8-bit and of each decoded input video frame converted to
|
|
MPEG-2 video, use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
|
|
</pre></td></tr></table>
|
|
|
|
<p>See also the <a href="#crc">crc</a> muxer.
|
|
</p>
|
|
<p><a name="framemd5"></a>
|
|
</p><a name="framemd5-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-framemd5-1">22.4 framemd5</a></h2>
|
|
|
|
<p>Per-packet MD5 testing format.
|
|
</p>
|
|
<p>This muxer computes and prints the MD5 hash for each audio
|
|
and video packet. By default audio frames are converted to signed
|
|
16-bit raw audio and video frames to raw video before computing the
|
|
hash.
|
|
</p>
|
|
<p>The output of the muxer consists of a line for each audio and video
|
|
packet of the form:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, <var>MD5</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>MD5</var> is a hexadecimal number representing the computed MD5 hash
|
|
for the packet.
|
|
</p>
|
|
<a name="Examples-4"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-4">22.4.1 Examples</a></h3>
|
|
|
|
<p>For example to compute the MD5 of the audio and video frames in
|
|
‘<tt>INPUT</tt>’, converted to raw audio and video packets, and store it
|
|
in the file ‘<tt>out.md5</tt>’:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f framemd5 out.md5
|
|
</pre></td></tr></table>
|
|
|
|
<p>To print the information to stdout, use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f framemd5 -
|
|
</pre></td></tr></table>
|
|
|
|
<p>See also the <a href="#md5">md5</a> muxer.
|
|
</p>
|
|
<p><a name="gif"></a>
|
|
</p><a name="gif-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-gif-1">22.5 gif</a></h2>
|
|
|
|
<p>Animated GIF muxer.
|
|
</p>
|
|
<p>It accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>loop</samp>’</dt>
|
|
<dd><p>Set the number of times to loop the output. Use <code>-1</code> for no loop, <code>0</code>
|
|
for looping indefinitely (default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>final_delay</samp>’</dt>
|
|
<dd><p>Force the delay (expressed in centiseconds) after the last frame. Each frame
|
|
ends with a delay until the next frame. The default is <code>-1</code>, which is a
|
|
special value to tell the muxer to re-use the previous delay. In case of a
|
|
loop, you might want to customize this value to mark a pause for instance.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example, to encode a gif looping 10 times, with a 5 seconds delay between
|
|
the loops:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note 1: if you wish to extract the frames in separate GIF files, you need to
|
|
force the <a href="#image2">image2</a> muxer:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -c:v gif -f image2 "out%d.gif"
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note 2: the GIF format has a very small time base: the delay between two frames
|
|
can not be smaller than one centi second.
|
|
</p>
|
|
<p><a name="hls"></a>
|
|
</p><a name="hls-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-hls-1">22.6 hls</a></h2>
|
|
|
|
<p>Apple HTTP Live Streaming muxer that segments MPEG-TS according to
|
|
the HTTP Live Streaming (HLS) specification.
|
|
</p>
|
|
<p>It creates a playlist file and numbered segment files. The output
|
|
filename specifies the playlist filename; the segment filenames
|
|
receive the same basename as the playlist, a sequential number and
|
|
a .ts extension.
|
|
</p>
|
|
<p>For example, to convert an input file with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.nut out.m3u8
|
|
</pre></td></tr></table>
|
|
|
|
<p>See also the <a href="#segment">segment</a> muxer, which provides a more generic and
|
|
flexible implementation of a segmenter, and can be used to perform HLS
|
|
segmentation.
|
|
</p>
|
|
<a name="Options-12"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-12">22.6.1 Options</a></h3>
|
|
|
|
<p>This muxer supports the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>hls_time <var>seconds</var></samp>’</dt>
|
|
<dd><p>Set the segment length in seconds. Default value is 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hls_list_size <var>size</var></samp>’</dt>
|
|
<dd><p>Set the maximum number of playlist entries. If set to 0 the list file
|
|
will contain all the segments. Default value is 5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hls_wrap <var>wrap</var></samp>’</dt>
|
|
<dd><p>Set the number after which the segment filename number (the number
|
|
specified in each segment file) wraps. If set to 0 the number will be
|
|
never wrapped. Default value is 0.
|
|
</p>
|
|
<p>This option is useful to avoid to fill the disk with many segment
|
|
files, and limits the maximum number of segment files written to disk
|
|
to <var>wrap</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_number <var>number</var></samp>’</dt>
|
|
<dd><p>Start the playlist sequence number from <var>number</var>. Default value is
|
|
0.
|
|
</p>
|
|
<p>Note that the playlist sequence number must be unique for each segment
|
|
and it is not to be confused with the segment filename sequence number
|
|
which can be cyclic, for example if the ‘<samp>wrap</samp>’ option is
|
|
specified.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="ico"></a>
|
|
</p><a name="ico-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ico-1">22.7 ico</a></h2>
|
|
|
|
<p>ICO file muxer.
|
|
</p>
|
|
<p>Microsoft’s icon file format (ICO) has some strict limitations that should be noted:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Size cannot exceed 256 pixels in any dimension
|
|
|
|
</li><li>
|
|
Only BMP and PNG images can be stored
|
|
|
|
</li><li>
|
|
If a BMP image is used, it must be one of the following pixel formats:
|
|
<table><tr><td> </td><td><pre class="example">BMP Bit Depth FFmpeg Pixel Format
|
|
1bit pal8
|
|
4bit pal8
|
|
8bit pal8
|
|
16bit rgb555le
|
|
24bit bgr24
|
|
32bit bgra
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
If a BMP image is used, it must use the BITMAPINFOHEADER DIB header
|
|
|
|
</li><li>
|
|
If a PNG image is used, it must use the rgba pixel format
|
|
</li></ul>
|
|
|
|
<p><a name="image2"></a>
|
|
</p><a name="image2-2"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-image2-2">22.8 image2</a></h2>
|
|
|
|
<p>Image file muxer.
|
|
</p>
|
|
<p>The image file muxer writes video frames to image files.
|
|
</p>
|
|
<p>The output filenames are specified by a pattern, which can be used to
|
|
produce sequentially numbered series of files.
|
|
The pattern may contain the string "%d" or "%0<var>N</var>d", this string
|
|
specifies the position of the characters representing a numbering in
|
|
the filenames. If the form "%0<var>N</var>d" is used, the string
|
|
representing the number in each filename is 0-padded to <var>N</var>
|
|
digits. The literal character ’%’ can be specified in the pattern with
|
|
the string "%%".
|
|
</p>
|
|
<p>If the pattern contains "%d" or "%0<var>N</var>d", the first filename of
|
|
the file list specified will contain the number 1, all the following
|
|
numbers will be sequential.
|
|
</p>
|
|
<p>The pattern may contain a suffix which is used to automatically
|
|
determine the format of the image files to write.
|
|
</p>
|
|
<p>For example the pattern "img-%03d.bmp" will specify a sequence of
|
|
filenames of the form ‘<tt>img-001.bmp</tt>’, ‘<tt>img-002.bmp</tt>’, ...,
|
|
‘<tt>img-010.bmp</tt>’, etc.
|
|
The pattern "img%%-%d.jpg" will specify a sequence of filenames of the
|
|
form ‘<tt>img%-1.jpg</tt>’, ‘<tt>img%-2.jpg</tt>’, ..., ‘<tt>img%-10.jpg</tt>’,
|
|
etc.
|
|
</p>
|
|
<a name="Examples-27"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-27">22.8.1 Examples</a></h3>
|
|
|
|
<p>The following example shows how to use <code>ffmpeg</code> for creating a
|
|
sequence of files ‘<tt>img-001.jpeg</tt>’, ‘<tt>img-002.jpeg</tt>’, ...,
|
|
taking one image every second from the input video:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that with <code>ffmpeg</code>, if the format is not specified with the
|
|
<code>-f</code> option and the output filename specifies an image file
|
|
format, the image2 muxer is automatically selected, so the previous
|
|
command can be written as:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note also that the pattern must not necessarily contain "%d" or
|
|
"%0<var>N</var>d", for example to create a single image file
|
|
‘<tt>img.jpeg</tt>’ from the input video you can employ the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>The ‘<samp>strftime</samp>’ option allows you to expand the filename with
|
|
date and time information. Check the documentation of
|
|
the <code>strftime()</code> function for the syntax.
|
|
</p>
|
|
<p>For example to generate image files from the <code>strftime()</code>
|
|
"%Y-%m-%d_%H-%M-%S" pattern, the following <code>ffmpeg</code> command
|
|
can be used:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Options-7"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-7">22.8.2 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>start_number</samp>’</dt>
|
|
<dd><p>Start the sequence from the specified number. Default value is 1. Must
|
|
be a non-negative number.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>update</samp>’</dt>
|
|
<dd><p>If set to 1, the filename will always be interpreted as just a
|
|
filename, not a pattern, and the corresponding file will be continuously
|
|
overwritten with new images. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>strftime</samp>’</dt>
|
|
<dd><p>If set to 1, expand the filename with date and time information from
|
|
<code>strftime()</code>. Default value is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The image muxer supports the .Y.U.V image file format. This format is
|
|
special in that that each image frame consists of three files, for
|
|
each of the YUV420P components. To read or write this image file format,
|
|
specify the name of the ’.Y’ file. The muxer will automatically open the
|
|
’.U’ and ’.V’ files as required.
|
|
</p>
|
|
<a name="matroska"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-matroska">22.9 matroska</a></h2>
|
|
|
|
<p>Matroska container muxer.
|
|
</p>
|
|
<p>This muxer implements the matroska and webm container specs.
|
|
</p>
|
|
<a name="Metadata-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Metadata-1">22.9.1 Metadata</a></h3>
|
|
|
|
<p>The recognized metadata settings in this muxer are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>title</samp>’</dt>
|
|
<dd><p>Set title name provided to a single track.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>language</samp>’</dt>
|
|
<dd><p>Specify the language of the track in the Matroska languages form.
|
|
</p>
|
|
<p>The language can be either the 3 letters bibliographic ISO-639-2 (ISO
|
|
639-2/B) form (like "fre" for French), or a language code mixed with a
|
|
country code for specialities in languages (like "fre-ca" for Canadian
|
|
French).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stereo_mode</samp>’</dt>
|
|
<dd><p>Set stereo 3D video layout of two views in a single video track.
|
|
</p>
|
|
<p>The following values are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>mono</samp>’</dt>
|
|
<dd><p>video is not stereo
|
|
</p></dd>
|
|
<dt> ‘<samp>left_right</samp>’</dt>
|
|
<dd><p>Both views are arranged side by side, Left-eye view is on the left
|
|
</p></dd>
|
|
<dt> ‘<samp>bottom_top</samp>’</dt>
|
|
<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
|
|
</p></dd>
|
|
<dt> ‘<samp>top_bottom</samp>’</dt>
|
|
<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
|
|
</p></dd>
|
|
<dt> ‘<samp>checkerboard_rl</samp>’</dt>
|
|
<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
|
|
</p></dd>
|
|
<dt> ‘<samp>checkerboard_lr</samp>’</dt>
|
|
<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
|
|
</p></dd>
|
|
<dt> ‘<samp>row_interleaved_rl</samp>’</dt>
|
|
<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
|
|
</p></dd>
|
|
<dt> ‘<samp>row_interleaved_lr</samp>’</dt>
|
|
<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
|
|
</p></dd>
|
|
<dt> ‘<samp>col_interleaved_rl</samp>’</dt>
|
|
<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
|
|
</p></dd>
|
|
<dt> ‘<samp>col_interleaved_lr</samp>’</dt>
|
|
<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
|
|
</p></dd>
|
|
<dt> ‘<samp>anaglyph_cyan_red</samp>’</dt>
|
|
<dd><p>All frames are in anaglyph format viewable through red-cyan filters
|
|
</p></dd>
|
|
<dt> ‘<samp>right_left</samp>’</dt>
|
|
<dd><p>Both views are arranged side by side, Right-eye view is on the left
|
|
</p></dd>
|
|
<dt> ‘<samp>anaglyph_green_magenta</samp>’</dt>
|
|
<dd><p>All frames are in anaglyph format viewable through green-magenta filters
|
|
</p></dd>
|
|
<dt> ‘<samp>block_lr</samp>’</dt>
|
|
<dd><p>Both eyes laced in one Block, Left-eye view is first
|
|
</p></dd>
|
|
<dt> ‘<samp>block_rl</samp>’</dt>
|
|
<dd><p>Both eyes laced in one Block, Right-eye view is first
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example a 3D WebM clip can be created using the following command line:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Options-39"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-39">22.9.2 Options</a></h3>
|
|
|
|
<p>This muxer supports the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>reserve_index_space</samp>’</dt>
|
|
<dd><p>By default, this muxer writes the index for seeking (called cues in Matroska
|
|
terms) at the end of the file, because it cannot know in advance how much space
|
|
to leave for the index at the beginning of the file. However for some use cases
|
|
– e.g. streaming where seeking is possible but slow – it is useful to put the
|
|
index at the beginning of the file.
|
|
</p>
|
|
<p>If this option is set to a non-zero value, the muxer will reserve a given amount
|
|
of space in the file header and then try to write the cues there when the muxing
|
|
finishes. If the available space does not suffice, muxing will fail. A safe size
|
|
for most use cases should be about 50kB per hour of video.
|
|
</p>
|
|
<p>Note that cues are only written if the output is seekable and this option will
|
|
have no effect if it is not.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="md5"></a>
|
|
</p><a name="md5-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-md5-1">22.10 md5</a></h2>
|
|
|
|
<p>MD5 testing format.
|
|
</p>
|
|
<p>This muxer computes and prints the MD5 hash of all the input audio
|
|
and video frames. By default audio frames are converted to signed
|
|
16-bit raw audio and video frames to raw video before computing the
|
|
hash.
|
|
</p>
|
|
<p>The output of the muxer consists of a single line of the form:
|
|
MD5=<var>MD5</var>, where <var>MD5</var> is a hexadecimal number representing
|
|
the computed MD5 hash.
|
|
</p>
|
|
<p>For example to compute the MD5 hash of the input converted to raw
|
|
audio and video, and store it in the file ‘<tt>out.md5</tt>’:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f md5 out.md5
|
|
</pre></td></tr></table>
|
|
|
|
<p>You can print the MD5 to stdout with the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f md5 -
|
|
</pre></td></tr></table>
|
|
|
|
<p>See also the <a href="#framemd5">framemd5</a> muxer.
|
|
</p>
|
|
<a name="mov_002c-mp4_002c-ismv"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mov_002c-mp4_002c-ismv">22.11 mov, mp4, ismv</a></h2>
|
|
|
|
<p>MOV/MP4/ISMV (Smooth Streaming) muxer.
|
|
</p>
|
|
<p>The mov/mp4/ismv muxer supports fragmentation. Normally, a MOV/MP4
|
|
file has all the metadata about all packets stored in one location
|
|
(written at the end of the file, it can be moved to the start for
|
|
better playback by adding <var>faststart</var> to the <var>movflags</var>, or
|
|
using the <code>qt-faststart</code> tool). A fragmented
|
|
file consists of a number of fragments, where packets and metadata
|
|
about these packets are stored together. Writing a fragmented
|
|
file has the advantage that the file is decodable even if the
|
|
writing is interrupted (while a normal MOV/MP4 is undecodable if
|
|
it is not properly finished), and it requires less memory when writing
|
|
very long files (since writing normal MOV/MP4 files stores info about
|
|
every single packet in memory until the file is closed). The downside
|
|
is that it is less compatible with other applications.
|
|
</p>
|
|
<a name="Options-8"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-8">22.11.1 Options</a></h3>
|
|
|
|
<p>Fragmentation is enabled by setting one of the AVOptions that define
|
|
how to cut the file into fragments:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-moov_size <var>bytes</var></samp>’</dt>
|
|
<dd><p>Reserves space for the moov atom at the beginning of the file instead of placing the
|
|
moov atom at the end. If the space reserved is insufficient, muxing will fail.
|
|
</p></dd>
|
|
<dt> ‘<samp>-movflags frag_keyframe</samp>’</dt>
|
|
<dd><p>Start a new fragment at each video keyframe.
|
|
</p></dd>
|
|
<dt> ‘<samp>-frag_duration <var>duration</var></samp>’</dt>
|
|
<dd><p>Create fragments that are <var>duration</var> microseconds long.
|
|
</p></dd>
|
|
<dt> ‘<samp>-frag_size <var>size</var></samp>’</dt>
|
|
<dd><p>Create fragments that contain up to <var>size</var> bytes of payload data.
|
|
</p></dd>
|
|
<dt> ‘<samp>-movflags frag_custom</samp>’</dt>
|
|
<dd><p>Allow the caller to manually choose when to cut fragments, by
|
|
calling <code>av_write_frame(ctx, NULL)</code> to write a fragment with
|
|
the packets written so far. (This is only useful with other
|
|
applications integrating libavformat, not from <code>ffmpeg</code>.)
|
|
</p></dd>
|
|
<dt> ‘<samp>-min_frag_duration <var>duration</var></samp>’</dt>
|
|
<dd><p>Don’t create fragments that are shorter than <var>duration</var> microseconds long.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If more than one condition is specified, fragments are cut when
|
|
one of the specified conditions is fulfilled. The exception to this is
|
|
<code>-min_frag_duration</code>, which has to be fulfilled for any of the other
|
|
conditions to apply.
|
|
</p>
|
|
<p>Additionally, the way the output file is written can be adjusted
|
|
through a few other options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-movflags empty_moov</samp>’</dt>
|
|
<dd><p>Write an initial moov atom directly at the start of the file, without
|
|
describing any samples in it. Generally, an mdat/moov pair is written
|
|
at the start of the file, as a normal MOV/MP4 file, containing only
|
|
a short portion of the file. With this option set, there is no initial
|
|
mdat atom, and the moov atom only describes the tracks but has
|
|
a zero duration.
|
|
</p>
|
|
<p>Files written with this option set do not work in QuickTime.
|
|
This option is implicitly set when writing ismv (Smooth Streaming) files.
|
|
</p></dd>
|
|
<dt> ‘<samp>-movflags separate_moof</samp>’</dt>
|
|
<dd><p>Write a separate moof (movie fragment) atom for each track. Normally,
|
|
packets for all tracks are written in a moof atom (which is slightly
|
|
more efficient), but with this option set, the muxer writes one moof/mdat
|
|
pair for each track, making it easier to separate tracks.
|
|
</p>
|
|
<p>This option is implicitly set when writing ismv (Smooth Streaming) files.
|
|
</p></dd>
|
|
<dt> ‘<samp>-movflags faststart</samp>’</dt>
|
|
<dd><p>Run a second pass moving the index (moov atom) to the beginning of the file.
|
|
This operation can take a while, and will not work in various situations such
|
|
as fragmented output, thus it is not enabled by default.
|
|
</p></dd>
|
|
<dt> ‘<samp>-movflags rtphint</samp>’</dt>
|
|
<dd><p>Add RTP hinting tracks to the output file.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Example-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Example-1">22.11.2 Example</a></h3>
|
|
|
|
<p>Smooth Streaming content can be pushed in real time to a publishing
|
|
point on IIS with this muxer. Example:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -re <var><normal input/transcoding options></var> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
|
|
</pre></td></tr></table>
|
|
|
|
<a name="mp3"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mp3">22.12 mp3</a></h2>
|
|
|
|
<p>The MP3 muxer writes a raw MP3 stream with an ID3v2 header at the beginning and
|
|
optionally an ID3v1 tag at the end. ID3v2.3 and ID3v2.4 are supported, the
|
|
<code>id3v2_version</code> option controls which one is used. Setting
|
|
<code>id3v2_version</code> to 0 will disable the ID3v2 header completely. The legacy
|
|
ID3v1 tag is not written by default, but may be enabled with the
|
|
<code>write_id3v1</code> option.
|
|
</p>
|
|
<p>The muxer may also write a Xing frame at the beginning, which contains the
|
|
number of frames in the file. It is useful for computing duration of VBR files.
|
|
The Xing frame is written if the output stream is seekable and if the
|
|
<code>write_xing</code> option is set to 1 (the default).
|
|
</p>
|
|
<p>The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures
|
|
are supplied to the muxer in form of a video stream with a single packet. There
|
|
can be any number of those streams, each will correspond to a single APIC frame.
|
|
The stream metadata tags <var>title</var> and <var>comment</var> map to APIC
|
|
<var>description</var> and <var>picture type</var> respectively. See
|
|
<a href="http://id3.org/id3v2.4.0-frames">http://id3.org/id3v2.4.0-frames</a> for allowed picture types.
|
|
</p>
|
|
<p>Note that the APIC frames must be written at the beginning, so the muxer will
|
|
buffer the audio frames until it gets all the pictures. It is therefore advised
|
|
to provide the pictures as soon as possible to avoid excessive buffering.
|
|
</p>
|
|
<p>Examples:
|
|
</p>
|
|
<p>Write an mp3 with an ID3v2.3 header and an ID3v1 footer:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
|
|
</pre></td></tr></table>
|
|
|
|
<p>To attach a picture to an mp3 file select both the audio and the picture stream
|
|
with <code>map</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
|
|
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
|
|
</pre></td></tr></table>
|
|
|
|
<p>Write a "clean" MP3 without any extra features:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3
|
|
</pre></td></tr></table>
|
|
|
|
<a name="mpegts-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mpegts-1">22.13 mpegts</a></h2>
|
|
|
|
<p>MPEG transport stream muxer.
|
|
</p>
|
|
<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
|
|
</p>
|
|
<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
|
|
and <code>service_name</code>. If they are not set the default for
|
|
<code>service_provider</code> is "FFmpeg" and the default for
|
|
<code>service_name</code> is "Service01".
|
|
</p>
|
|
<a name="Options-24"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-24">22.13.1 Options</a></h3>
|
|
|
|
<p>The muxer options are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-mpegts_original_network_id <var>number</var></samp>’</dt>
|
|
<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
|
|
of a network in DVB. Its main use is in the unique identification of a
|
|
service through the path Original_Network_ID, Transport_Stream_ID.
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_transport_stream_id <var>number</var></samp>’</dt>
|
|
<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
|
|
transponder in DVB.
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_service_id <var>number</var></samp>’</dt>
|
|
<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_pmt_start_pid <var>number</var></samp>’</dt>
|
|
<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_start_pid <var>number</var></samp>’</dt>
|
|
<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_m2ts_mode <var>number</var></samp>’</dt>
|
|
<dd><p>Enable m2ts mode if set to 1. Default value is -1 which disables m2ts mode.
|
|
</p></dd>
|
|
<dt> ‘<samp>-muxrate <var>number</var></samp>’</dt>
|
|
<dd><p>Set muxrate.
|
|
</p></dd>
|
|
<dt> ‘<samp>-pes_payload_size <var>number</var></samp>’</dt>
|
|
<dd><p>Set minimum PES packet payload in bytes.
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_flags <var>flags</var></samp>’</dt>
|
|
<dd><p>Set flags (see below).
|
|
</p></dd>
|
|
<dt> ‘<samp>-mpegts_copyts <var>number</var></samp>’</dt>
|
|
<dd><p>Preserve original timestamps, if value is set to 1. Default value is -1, which
|
|
results in shifting timestamps so that they start from 0.
|
|
</p></dd>
|
|
<dt> ‘<samp>-tables_version <var>number</var></samp>’</dt>
|
|
<dd><p>Set PAT, PMT and SDT version (default 0, valid values are from 0 to 31, inclusively).
|
|
This option allows updating stream structure so that standard consumer may
|
|
detect the change. To do so, reopen output AVFormatContext (in case of API
|
|
usage) or restart ffmpeg instance, cyclically changing tables_version value:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
|
|
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
|
|
...
|
|
ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
|
|
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
|
|
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
|
|
...
|
|
</pre></td></tr></table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Option mpegts_flags may take a set of such flags:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>resend_headers</samp>’</dt>
|
|
<dd><p>Reemit PAT/PMT before writing the next packet.
|
|
</p></dd>
|
|
<dt> ‘<samp>latm</samp>’</dt>
|
|
<dd><p>Use LATM packetization for AAC.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Example"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Example">22.13.2 Example</a></h3>
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i file.mpg -c copy \
|
|
-mpegts_original_network_id 0x1122 \
|
|
-mpegts_transport_stream_id 0x3344 \
|
|
-mpegts_service_id 0x5566 \
|
|
-mpegts_pmt_start_pid 0x1500 \
|
|
-mpegts_start_pid 0x150 \
|
|
-metadata service_provider="Some provider" \
|
|
-metadata service_name="Some Channel" \
|
|
-y out.ts
|
|
</pre></td></tr></table>
|
|
|
|
<a name="null"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-null">22.14 null</a></h2>
|
|
|
|
<p>Null muxer.
|
|
</p>
|
|
<p>This muxer does not generate any output file, it is mainly useful for
|
|
testing or benchmarking purposes.
|
|
</p>
|
|
<p>For example to benchmark decoding with <code>ffmpeg</code> you can use the
|
|
command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that the above command does not read or write the ‘<tt>out.null</tt>’
|
|
file, but specifying the output file is required by the <code>ffmpeg</code>
|
|
syntax.
|
|
</p>
|
|
<p>Alternatively you can write the command as:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
|
|
</pre></td></tr></table>
|
|
|
|
<a name="ogg"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ogg">22.15 ogg</a></h2>
|
|
|
|
<p>Ogg container muxer.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>-page_duration <var>duration</var></samp>’</dt>
|
|
<dd><p>Preferred page duration, in microseconds. The muxer will attempt to create
|
|
pages that are approximately <var>duration</var> microseconds long. This allows the
|
|
user to compromise between seek granularity and container overhead. The default
|
|
is 1 second. A value of 0 will fill all segments, making pages as large as
|
|
possible. A value of 1 will effectively use 1 packet-per-page in most
|
|
situations, giving a small seek granularity at the cost of additional container
|
|
overhead.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="segment"></a>
|
|
</p><a name="segment_002c-stream_005fsegment_002c-ssegment"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-segment_002c-stream_005fsegment_002c-ssegment">22.16 segment, stream_segment, ssegment</a></h2>
|
|
|
|
<p>Basic stream segmenter.
|
|
</p>
|
|
<p>This muxer outputs streams to a number of separate files of nearly
|
|
fixed duration. Output filename pattern can be set in a fashion similar to
|
|
<a href="#image2">image2</a>.
|
|
</p>
|
|
<p><code>stream_segment</code> is a variant of the muxer used to write to
|
|
streaming output formats, i.e. which do not require global headers,
|
|
and is recommended for outputting e.g. to MPEG transport stream segments.
|
|
<code>ssegment</code> is a shorter alias for <code>stream_segment</code>.
|
|
</p>
|
|
<p>Every segment starts with a keyframe of the selected reference stream,
|
|
which is set through the ‘<samp>reference_stream</samp>’ option.
|
|
</p>
|
|
<p>Note that if you want accurate splitting for a video file, you need to
|
|
make the input key frames correspond to the exact splitting times
|
|
expected by the segmenter, or the segment muxer will start the new
|
|
segment with the key frame found next after the specified start
|
|
time.
|
|
</p>
|
|
<p>The segment muxer works best with a single constant frame rate video.
|
|
</p>
|
|
<p>Optionally it can generate a list of the created segments, by setting
|
|
the option <var>segment_list</var>. The list type is specified by the
|
|
<var>segment_list_type</var> option. The entry filenames in the segment
|
|
list are set by default to the basename of the corresponding segment
|
|
files.
|
|
</p>
|
|
<p>See also the <a href="#hls">hls</a> muxer, which provides a more specific
|
|
implementation for HLS segmentation.
|
|
</p>
|
|
<a name="Options-11"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-11">22.16.1 Options</a></h3>
|
|
|
|
<p>The segment muxer supports the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>reference_stream <var>specifier</var></samp>’</dt>
|
|
<dd><p>Set the reference stream, as specified by the string <var>specifier</var>.
|
|
If <var>specifier</var> is set to <code>auto</code>, the reference is chosen
|
|
automatically. Otherwise it must be a stream specifier (see the “Stream
|
|
specifiers” chapter in the ffmpeg manual) which specifies the
|
|
reference stream. The default value is <code>auto</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_format <var>format</var></samp>’</dt>
|
|
<dd><p>Override the inner container format, by default it is guessed by the filename
|
|
extension.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_list <var>name</var></samp>’</dt>
|
|
<dd><p>Generate also a listfile named <var>name</var>. If not specified no
|
|
listfile is generated.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_list_flags <var>flags</var></samp>’</dt>
|
|
<dd><p>Set flags affecting the segment list generation.
|
|
</p>
|
|
<p>It currently supports the following flags:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>cache</samp>’</dt>
|
|
<dd><p>Allow caching (only affects M3U8 list files).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>live</samp>’</dt>
|
|
<dd><p>Allow live-friendly file generation.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>segment_list_size <var>size</var></samp>’</dt>
|
|
<dd><p>Update the list file so that it contains at most the last <var>size</var>
|
|
segments. If 0 the list file will contain all the segments. Default
|
|
value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_list_entry_prefix <var>prefix</var></samp>’</dt>
|
|
<dd><p>Set <var>prefix</var> to prepend to the name of each entry filename. By
|
|
default no prefix is applied.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_list_type <var>type</var></samp>’</dt>
|
|
<dd><p>Specify the format for the segment list file.
|
|
</p>
|
|
<p>The following values are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>flat</samp>’</dt>
|
|
<dd><p>Generate a flat list for the created segments, one segment per line.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>csv, ext</samp>’</dt>
|
|
<dd><p>Generate a list for the created segments, one segment per line,
|
|
each line matching the format (comma-separated values):
|
|
</p><table><tr><td> </td><td><pre class="example"><var>segment_filename</var>,<var>segment_start_time</var>,<var>segment_end_time</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>segment_filename</var> is the name of the output file generated by the
|
|
muxer according to the provided pattern. CSV escaping (according to
|
|
RFC4180) is applied if required.
|
|
</p>
|
|
<p><var>segment_start_time</var> and <var>segment_end_time</var> specify
|
|
the segment start and end time expressed in seconds.
|
|
</p>
|
|
<p>A list file with the suffix <code>".csv"</code> or <code>".ext"</code> will
|
|
auto-select this format.
|
|
</p>
|
|
<p>‘<samp>ext</samp>’ is deprecated in favor or ‘<samp>csv</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ffconcat</samp>’</dt>
|
|
<dd><p>Generate an ffconcat file for the created segments. The resulting file
|
|
can be read using the FFmpeg <a href="#concat">concat</a> demuxer.
|
|
</p>
|
|
<p>A list file with the suffix <code>".ffcat"</code> or <code>".ffconcat"</code> will
|
|
auto-select this format.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>m3u8</samp>’</dt>
|
|
<dd><p>Generate an extended M3U8 file, version 3, compliant with
|
|
<a href="http://tools.ietf.org/id/draft-pantos-http-live-streaming">http://tools.ietf.org/id/draft-pantos-http-live-streaming</a>.
|
|
</p>
|
|
<p>A list file with the suffix <code>".m3u8"</code> will auto-select this format.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If not specified the type is guessed from the list file name suffix.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_time <var>time</var></samp>’</dt>
|
|
<dd><p>Set segment duration to <var>time</var>, the value must be a duration
|
|
specification. Default value is "2". See also the
|
|
‘<samp>segment_times</samp>’ option.
|
|
</p>
|
|
<p>Note that splitting may not be accurate, unless you force the
|
|
reference stream key-frames at the given time. See the introductory
|
|
notice and the examples below.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_time_delta <var>delta</var></samp>’</dt>
|
|
<dd><p>Specify the accuracy time when selecting the start time for a
|
|
segment, expressed as a duration specification. Default value is "0".
|
|
</p>
|
|
<p>When delta is specified a key-frame will start a new segment if its
|
|
PTS satisfies the relation:
|
|
</p><table><tr><td> </td><td><pre class="example">PTS >= start_time - time_delta
|
|
</pre></td></tr></table>
|
|
|
|
<p>This option is useful when splitting video content, which is always
|
|
split at GOP boundaries, in case a key frame is found just before the
|
|
specified split time.
|
|
</p>
|
|
<p>In particular may be used in combination with the ‘<tt>ffmpeg</tt>’ option
|
|
<var>force_key_frames</var>. The key frame times specified by
|
|
<var>force_key_frames</var> may not be set accurately because of rounding
|
|
issues, with the consequence that a key frame time may result set just
|
|
before the specified time. For constant frame rate videos a value of
|
|
1/(2*<var>frame_rate</var>) should address the worst case mismatch between
|
|
the specified time and the time set by <var>force_key_frames</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_times <var>times</var></samp>’</dt>
|
|
<dd><p>Specify a list of split points. <var>times</var> contains a list of comma
|
|
separated duration specifications, in increasing order. See also
|
|
the ‘<samp>segment_time</samp>’ option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_frames <var>frames</var></samp>’</dt>
|
|
<dd><p>Specify a list of split video frame numbers. <var>frames</var> contains a
|
|
list of comma separated integer numbers, in increasing order.
|
|
</p>
|
|
<p>This option specifies to start a new segment whenever a reference
|
|
stream key frame is found and the sequential number (starting from 0)
|
|
of the frame is greater or equal to the next value in the list.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_wrap <var>limit</var></samp>’</dt>
|
|
<dd><p>Wrap around segment index once it reaches <var>limit</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>segment_start_number <var>number</var></samp>’</dt>
|
|
<dd><p>Set the sequence number of the first segment. Defaults to <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>reset_timestamps <var>1|0</var></samp>’</dt>
|
|
<dd><p>Reset timestamps at the begin of each segment, so that each segment
|
|
will start with near-zero timestamps. It is meant to ease the playback
|
|
of the generated segments. May not work with some combinations of
|
|
muxers/codecs. It is set to <code>0</code> by default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>initial_offset <var>offset</var></samp>’</dt>
|
|
<dd><p>Specify timestamp offset to apply to the output packet timestamps. The
|
|
argument must be a time duration specification, and defaults to 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-99"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-99">22.16.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
To remux the content of file ‘<tt>in.mkv</tt>’ to a list of segments
|
|
‘<tt>out-000.nut</tt>’, ‘<tt>out-001.nut</tt>’, etc., and write the list of
|
|
generated segments to ‘<tt>out.list</tt>’:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.list out%03d.nut
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
As the example above, but segment the input file according to the split
|
|
points specified by the <var>segment_times</var> option:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
As the example above, but use the <code>ffmpeg</code> ‘<samp>force_key_frames</samp>’
|
|
option to force key frames in the input at the specified location, together
|
|
with the segment option ‘<samp>segment_time_delta</samp>’ to account for
|
|
possible roundings operated when setting key frame times.
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
|
|
-f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
|
|
</pre></td></tr></table>
|
|
<p>In order to force key frames on the input file, transcoding is
|
|
required.
|
|
</p>
|
|
</li><li>
|
|
Segment the input file by splitting the input file according to the
|
|
frame numbers sequence specified with the ‘<samp>segment_frames</samp>’ option:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To convert the ‘<tt>in.mkv</tt>’ to TS segments using the <code>libx264</code>
|
|
and <code>libfaac</code> encoders:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a libfaac -f ssegment -segment_list out.list out%03d.ts
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Segment the input file, and create an M3U8 live playlist (can be used
|
|
as live HLS source):
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
|
|
-segment_list_flags +live -segment_time 10 out%03d.mkv
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="tee"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-tee">22.17 tee</a></h2>
|
|
|
|
<p>The tee muxer can be used to write the same data to several files or any
|
|
other kind of muxer. It can be used, for example, to both stream a video to
|
|
the network and save it to disk at the same time.
|
|
</p>
|
|
<p>It is different from specifying several outputs to the <code>ffmpeg</code>
|
|
command-line tool because the audio and video data will be encoded only once
|
|
with the tee muxer; encoding can be a very expensive process. It is not
|
|
useful when using the libavformat API directly because it is then possible
|
|
to feed the same packets to several muxers directly.
|
|
</p>
|
|
<p>The slave outputs are specified in the file name given to the muxer,
|
|
separated by ’|’. If any of the slave name contains the ’|’ separator,
|
|
leading or trailing spaces or any special character, it must be
|
|
escaped (see <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a>).
|
|
</p>
|
|
<p>Muxer options can be specified for each slave by prepending them as a list of
|
|
<var>key</var>=<var>value</var> pairs separated by ’:’, between square brackets. If
|
|
the options values contain a special character or the ’:’ separator, they
|
|
must be escaped; note that this is a second level escaping.
|
|
</p>
|
|
<p>The following special options are also recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>f</samp>’</dt>
|
|
<dd><p>Specify the format name. Useful if it cannot be guessed from the
|
|
output name suffix.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bsfs[/<var>spec</var>]</samp>’</dt>
|
|
<dd><p>Specify a list of bitstream filters to apply to the specified
|
|
output.
|
|
</p>
|
|
<p>It is possible to specify to which streams a given bitstream filter
|
|
applies, by appending a stream specifier to the option separated by
|
|
<code>/</code>. <var>spec</var> must be a stream specifier (see <a href="#Format-stream-specifiers">Format stream specifiers</a>). If the stream specifier is not specified, the
|
|
bistream filters will be applied to all streams in the output.
|
|
</p>
|
|
<p>Several bitstream filters can be specified, separated by ",".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>select</samp>’</dt>
|
|
<dd><p>Select the streams that should be mapped to the slave output,
|
|
specified by a stream specifier. If not specified, this defaults to
|
|
all the input streams.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-57"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-57">22.17.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Encode something and both archive it in a WebM file and stream it
|
|
as MPEG-TS over UDP (the streams need to be explicitly mapped):
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
|
|
"archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use <code>ffmpeg</code> to encode the input, and send the output
|
|
to three different destinations. The <code>dump_extra</code> bitstream
|
|
filter is used to add extradata information to all the output video
|
|
keyframes packets, as requested by the MPEG-TS format. The select
|
|
option is applied to ‘<tt>out.aac</tt>’ in order to make it contain only
|
|
audio packets.
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -strict experimental
|
|
-f tee "[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
As below, but select only stream <code>a:1</code> for the audio output. Note
|
|
that a second level escaping must be performed, as ":" is a special
|
|
character used to separate options.
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -strict experimental
|
|
-f tee "[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=\'a:1\']out.aac"
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>Note: some codecs may need different options depending on the output format;
|
|
the auto-detection of this can not work with the tee muxer. The main example
|
|
is the ‘<samp>global_header</samp>’ flag.
|
|
</p>
|
|
<a name="Metadata"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Metadata">23. Metadata</a></h1>
|
|
|
|
<p>FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
|
|
INI-like text file and then load it back using the metadata muxer/demuxer.
|
|
</p>
|
|
<p>The file format is as follows:
|
|
</p><ol>
|
|
<li>
|
|
A file consists of a header and a number of metadata tags divided into sections,
|
|
each on its own line.
|
|
|
|
</li><li>
|
|
The header is a ’;FFMETADATA’ string, followed by a version number (now 1).
|
|
|
|
</li><li>
|
|
Metadata tags are of the form ’key=value’
|
|
|
|
</li><li>
|
|
Immediately after header follows global metadata
|
|
|
|
</li><li>
|
|
After global metadata there may be sections with per-stream/per-chapter
|
|
metadata.
|
|
|
|
</li><li>
|
|
A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
|
|
brackets (’[’, ’]’) and ends with next section or end of file.
|
|
|
|
</li><li>
|
|
At the beginning of a chapter section there may be an optional timebase to be
|
|
used for start/end values. It must be in form ’TIMEBASE=num/den’, where num and
|
|
den are integers. If the timebase is missing then start/end times are assumed to
|
|
be in milliseconds.
|
|
Next a chapter section must contain chapter start and end times in form
|
|
’START=num’, ’END=num’, where num is a positive integer.
|
|
|
|
</li><li>
|
|
Empty lines and lines starting with ’;’ or ’#’ are ignored.
|
|
|
|
</li><li>
|
|
Metadata keys or values containing special characters (’=’, ’;’, ’#’, ’\’ and a
|
|
newline) must be escaped with a backslash ’\’.
|
|
|
|
</li><li>
|
|
Note that whitespace in metadata (e.g. foo = bar) is considered to be a part of
|
|
the tag (in the example above key is ’foo ’, value is ’ bar’).
|
|
</li></ol>
|
|
|
|
<p>A ffmetadata file might look like this:
|
|
</p><table><tr><td> </td><td><pre class="example">;FFMETADATA1
|
|
title=bike\\shed
|
|
;this is a comment
|
|
artist=FFmpeg troll team
|
|
|
|
[CHAPTER]
|
|
TIMEBASE=1/1000
|
|
START=0
|
|
#chapter ends at 0:01:00
|
|
END=60000
|
|
title=chapter \#1
|
|
[STREAM]
|
|
title=multi\
|
|
line
|
|
</pre></td></tr></table>
|
|
|
|
<p>By using the ffmetadata muxer and demuxer it is possible to extract
|
|
metadata from an input file to an ffmetadata file, and then transcode
|
|
the file into an output file with the edited ffmetadata file.
|
|
</p>
|
|
<p>Extracting an ffmetadata file with ‘<tt>ffmpeg</tt>’ goes as follows:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
|
|
</pre></td></tr></table>
|
|
|
|
<p>Reinserting edited metadata information from the FFMETADATAFILE file can
|
|
be done as:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Protocols"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Protocols">24. Protocols</a></h1>
|
|
|
|
<p>Protocols are configured elements in FFmpeg that enable access to
|
|
resources that require specific protocols.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported protocols are
|
|
enabled by default. You can list all available ones using the
|
|
configure option "–list-protocols".
|
|
</p>
|
|
<p>You can disable all the protocols using the configure option
|
|
"–disable-protocols", and selectively enable a protocol using the
|
|
option "–enable-protocol=<var>PROTOCOL</var>", or you can disable a
|
|
particular protocol using the option
|
|
"–disable-protocol=<var>PROTOCOL</var>".
|
|
</p>
|
|
<p>The option "-protocols" of the ff* tools will display the list of
|
|
supported protocols.
|
|
</p>
|
|
<p>A description of the currently available protocols follows.
|
|
</p>
|
|
<a name="bluray"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-bluray">24.1 bluray</a></h2>
|
|
|
|
<p>Read BluRay playlist.
|
|
</p>
|
|
<p>The accepted options are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>angle</samp>’</dt>
|
|
<dd><p>BluRay angle
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chapter</samp>’</dt>
|
|
<dd><p>Start chapter (1...N)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>playlist</samp>’</dt>
|
|
<dd><p>Playlist to read (BDMV/PLAYLIST/?????.mpls)
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Examples:
|
|
</p>
|
|
<p>Read longest playlist from BluRay mounted to /mnt/bluray:
|
|
</p><table><tr><td> </td><td><pre class="example">bluray:/mnt/bluray
|
|
</pre></td></tr></table>
|
|
|
|
<p>Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start from chapter 2:
|
|
</p><table><tr><td> </td><td><pre class="example">-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
|
|
</pre></td></tr></table>
|
|
|
|
<a name="cache"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-cache">24.2 cache</a></h2>
|
|
|
|
<p>Caching wrapper for input stream.
|
|
</p>
|
|
<p>Cache the input stream to temporary file. It brings seeking capability to live streams.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">cache:<var>URL</var>
|
|
</pre></td></tr></table>
|
|
|
|
<a name="concat-2"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-concat-2">24.3 concat</a></h2>
|
|
|
|
<p>Physical concatenation protocol.
|
|
</p>
|
|
<p>Allow to read and seek from many resource in sequence as if they were
|
|
a unique resource.
|
|
</p>
|
|
<p>A URL accepted by this protocol has the syntax:
|
|
</p><table><tr><td> </td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
|
|
resource to be concatenated, each one possibly specifying a distinct
|
|
protocol.
|
|
</p>
|
|
<p>For example to read a sequence of files ‘<tt>split1.mpeg</tt>’,
|
|
‘<tt>split2.mpeg</tt>’, ‘<tt>split3.mpeg</tt>’ with <code>ffplay</code> use the
|
|
command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that you may need to escape the character "|" which is special for
|
|
many shells.
|
|
</p>
|
|
<a name="crypto"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-crypto">24.4 crypto</a></h2>
|
|
|
|
<p>AES-encrypted stream reading protocol.
|
|
</p>
|
|
<p>The accepted options are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>key</samp>’</dt>
|
|
<dd><p>Set the AES decryption key binary block from given hexadecimal representation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>iv</samp>’</dt>
|
|
<dd><p>Set the AES decryption initialization vector binary block from given hexadecimal representation.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Accepted URL formats:
|
|
</p><table><tr><td> </td><td><pre class="example">crypto:<var>URL</var>
|
|
crypto+<var>URL</var>
|
|
</pre></td></tr></table>
|
|
|
|
<a name="data"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-data">24.5 data</a></h2>
|
|
|
|
<p>Data in-line in the URI. See <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">http://en.wikipedia.org/wiki/Data_URI_scheme</a>.
|
|
</p>
|
|
<p>For example, to convert a GIF file given inline with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
|
|
</pre></td></tr></table>
|
|
|
|
<a name="file"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-file">24.6 file</a></h2>
|
|
|
|
<p>File access protocol.
|
|
</p>
|
|
<p>Allow to read from or write to a file.
|
|
</p>
|
|
<p>A file URL can have the form:
|
|
</p><table><tr><td> </td><td><pre class="example">file:<var>filename</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>where <var>filename</var> is the path of the file to read.
|
|
</p>
|
|
<p>An URL that does not have a protocol prefix will be assumed to be a
|
|
file URL. Depending on the build, an URL that looks like a Windows
|
|
path with the drive letter at the beginning will also be assumed to be
|
|
a file URL (usually not the case in builds for unix-like systems).
|
|
</p>
|
|
<p>For example to read from a file ‘<tt>input.mpeg</tt>’ with <code>ffmpeg</code>
|
|
use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>This protocol accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>truncate</samp>’</dt>
|
|
<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
|
|
truncating. Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>blocksize</samp>’</dt>
|
|
<dd><p>Set I/O operation maximum block size, in bytes. Default value is
|
|
<code>INT_MAX</code>, which results in not limiting the requested block size.
|
|
Setting this value reasonably low improves user termination request reaction
|
|
time, which is valuable for files on slow medium.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="ftp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ftp">24.7 ftp</a></h2>
|
|
|
|
<p>FTP (File Transfer Protocol).
|
|
</p>
|
|
<p>Allow to read from or write to remote resources using FTP protocol.
|
|
</p>
|
|
<p>Following syntax is required.
|
|
</p><table><tr><td> </td><td><pre class="example">ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>This protocol accepts the following options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>timeout</samp>’</dt>
|
|
<dd><p>Set timeout of socket I/O operations used by the underlying low level
|
|
operation. By default it is set to -1, which means that the timeout is
|
|
not specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ftp-anonymous-password</samp>’</dt>
|
|
<dd><p>Password used when login as anonymous user. Typically an e-mail address
|
|
should be used.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ftp-write-seekable</samp>’</dt>
|
|
<dd><p>Control seekability of connection during encoding. If set to 1 the
|
|
resource is supposed to be seekable, if set to 0 it is assumed not
|
|
to be seekable. Default value is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>NOTE: Protocol can be used as output, but it is recommended to not do
|
|
it, unless special care is taken (tests, customized server configuration
|
|
etc.). Different FTP servers behave in different way during seek
|
|
operation. ff* tools may produce incomplete content due to server limitations.
|
|
</p>
|
|
<a name="gopher"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-gopher">24.8 gopher</a></h2>
|
|
|
|
<p>Gopher protocol.
|
|
</p>
|
|
<a name="hls-2"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-hls-2">24.9 hls</a></h2>
|
|
|
|
<p>Read Apple HTTP Live Streaming compliant segmented stream as
|
|
a uniform one. The M3U8 playlists describing the segments can be
|
|
remote HTTP resources or local files, accessed using the standard
|
|
file protocol.
|
|
The nested protocol is declared by specifying
|
|
"+<var>proto</var>" after the hls URI scheme name, where <var>proto</var>
|
|
is either "file" or "http".
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">hls+http://host/path/to/remote/resource.m3u8
|
|
hls+file://path/to/local/resource.m3u8
|
|
</pre></td></tr></table>
|
|
|
|
<p>Using this protocol is discouraged - the hls demuxer should work
|
|
just as well (if not, please report the issues) and is more complete.
|
|
To use the hls demuxer instead, simply use the direct URLs to the
|
|
m3u8 files.
|
|
</p>
|
|
<a name="http"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-http">24.10 http</a></h2>
|
|
|
|
<p>HTTP (Hyper Text Transfer Protocol).
|
|
</p>
|
|
<p>This protocol accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>seekable</samp>’</dt>
|
|
<dd><p>Control seekability of connection. If set to 1 the resource is
|
|
supposed to be seekable, if set to 0 it is assumed not to be seekable,
|
|
if set to -1 it will try to autodetect if it is seekable. Default
|
|
value is -1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chunked_post</samp>’</dt>
|
|
<dd><p>If set to 1 use chunked Transfer-Encoding for posts, default is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>content_type</samp>’</dt>
|
|
<dd><p>Set a specific content type for the POST messages.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>headers</samp>’</dt>
|
|
<dd><p>Set custom HTTP headers, can override built in default headers. The
|
|
value must be a string encoding the headers.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>multiple_requests</samp>’</dt>
|
|
<dd><p>Use persistent connections if set to 1, default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>post_data</samp>’</dt>
|
|
<dd><p>Set custom HTTP post data.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>user-agent</samp>’</dt>
|
|
<dt> ‘<samp>user_agent</samp>’</dt>
|
|
<dd><p>Override the User-Agent header. If not specified the protocol will use a
|
|
string describing the libavformat build. ("Lavf/<version>")
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timeout</samp>’</dt>
|
|
<dd><p>Set timeout of socket I/O operations used by the underlying low level
|
|
operation. By default it is set to -1, which means that the timeout is
|
|
not specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mime_type</samp>’</dt>
|
|
<dd><p>Export the MIME type.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>icy</samp>’</dt>
|
|
<dd><p>If set to 1 request ICY (SHOUTcast) metadata from the server. If the server
|
|
supports this, the metadata has to be retrieved by the application by reading
|
|
the ‘<samp>icy_metadata_headers</samp>’ and ‘<samp>icy_metadata_packet</samp>’ options.
|
|
The default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>icy_metadata_headers</samp>’</dt>
|
|
<dd><p>If the server supports ICY metadata, this contains the ICY-specific HTTP reply
|
|
headers, separated by newline characters.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>icy_metadata_packet</samp>’</dt>
|
|
<dd><p>If the server supports ICY metadata, and ‘<samp>icy</samp>’ was set to 1, this
|
|
contains the last non-empty metadata packet sent by the server. It should be
|
|
polled in regular intervals by applications interested in mid-stream metadata
|
|
updates.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cookies</samp>’</dt>
|
|
<dd><p>Set the cookies to be sent in future requests. The format of each cookie is the
|
|
same as the value of a Set-Cookie HTTP response field. Multiple cookies can be
|
|
delimited by a newline character.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>offset</samp>’</dt>
|
|
<dd><p>Set initial byte offset.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end_offset</samp>’</dt>
|
|
<dd><p>Try to limit the request to bytes preceding this offset.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="HTTP-Cookies"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-HTTP-Cookies">24.10.1 HTTP Cookies</a></h3>
|
|
|
|
<p>Some HTTP requests will be denied unless cookie values are passed in with the
|
|
request. The ‘<samp>cookies</samp>’ option allows these cookies to be specified. At
|
|
the very least, each cookie must specify a value along with a path and domain.
|
|
HTTP requests that match both the domain and path will automatically include the
|
|
cookie value in the HTTP Cookie header field. Multiple cookies can be delimited
|
|
by a newline.
|
|
</p>
|
|
<p>The required syntax to play a stream specifying a cookie is:
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
|
|
</pre></td></tr></table>
|
|
|
|
<a name="mmst"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mmst">24.11 mmst</a></h2>
|
|
|
|
<p>MMS (Microsoft Media Server) protocol over TCP.
|
|
</p>
|
|
<a name="mmsh"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mmsh">24.12 mmsh</a></h2>
|
|
|
|
<p>MMS (Microsoft Media Server) protocol over HTTP.
|
|
</p>
|
|
<p>The required syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<a name="md5-2"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-md5-2">24.13 md5</a></h2>
|
|
|
|
<p>MD5 output protocol.
|
|
</p>
|
|
<p>Computes the MD5 hash of the data to be written, and on close writes
|
|
this to the designated output or stdout if none is specified. It can
|
|
be used to test muxers without writing an actual file.
|
|
</p>
|
|
<p>Some examples follow.
|
|
</p><table><tr><td> </td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
|
|
ffmpeg -i input.flv -f avi -y md5:output.avi.md5
|
|
|
|
# Write the MD5 hash of the encoded AVI file to stdout.
|
|
ffmpeg -i input.flv -f avi -y md5:
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that some formats (typically MOV) require the output protocol to
|
|
be seekable, so they will fail with the MD5 output protocol.
|
|
</p>
|
|
<a name="pipe"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pipe">24.14 pipe</a></h2>
|
|
|
|
<p>UNIX pipe access protocol.
|
|
</p>
|
|
<p>Allow to read and write from UNIX pipes.
|
|
</p>
|
|
<p>The accepted syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">pipe:[<var>number</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>number</var> is the number corresponding to the file descriptor of the
|
|
pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr). If <var>number</var>
|
|
is not specified, by default the stdout file descriptor will be used
|
|
for writing, stdin for reading.
|
|
</p>
|
|
<p>For example to read from stdin with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
|
|
# ...this is the same as...
|
|
cat test.wav | ffmpeg -i pipe:
|
|
</pre></td></tr></table>
|
|
|
|
<p>For writing to stdout with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
|
|
# ...this is the same as...
|
|
ffmpeg -i test.wav -f avi pipe: | cat > test.avi
|
|
</pre></td></tr></table>
|
|
|
|
<p>This protocol accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>blocksize</samp>’</dt>
|
|
<dd><p>Set I/O operation maximum block size, in bytes. Default value is
|
|
<code>INT_MAX</code>, which results in not limiting the requested block size.
|
|
Setting this value reasonably low improves user termination request reaction
|
|
time, which is valuable if data transmission is slow.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note that some formats (typically MOV), require the output protocol to
|
|
be seekable, so they will fail with the pipe output protocol.
|
|
</p>
|
|
<a name="rtmp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtmp">24.15 rtmp</a></h2>
|
|
|
|
<p>Real-Time Messaging Protocol.
|
|
</p>
|
|
<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia
|
|
content across a TCP/IP network.
|
|
</p>
|
|
<p>The required syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">rtmp://[<var>username</var>:<var>password</var>@]<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>instance</var>][/<var>playpath</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p>The accepted parameters are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>username</samp>’</dt>
|
|
<dd><p>An optional username (mostly for publishing).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>password</samp>’</dt>
|
|
<dd><p>An optional password (mostly for publishing).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>server</samp>’</dt>
|
|
<dd><p>The address of the RTMP server.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>port</samp>’</dt>
|
|
<dd><p>The number of the TCP port to use (by default is 1935).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>app</samp>’</dt>
|
|
<dd><p>It is the name of the application to access. It usually corresponds to
|
|
the path where the application is installed on the RTMP server
|
|
(e.g. ‘<tt>/ondemand/</tt>’, ‘<tt>/flash/live/</tt>’, etc.). You can override
|
|
the value parsed from the URI through the <code>rtmp_app</code> option, too.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>playpath</samp>’</dt>
|
|
<dd><p>It is the path or name of the resource to play with reference to the
|
|
application specified in <var>app</var>, may be prefixed by "mp4:". You
|
|
can override the value parsed from the URI through the <code>rtmp_playpath</code>
|
|
option, too.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>listen</samp>’</dt>
|
|
<dd><p>Act as a server, listening for an incoming connection.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timeout</samp>’</dt>
|
|
<dd><p>Maximum time to wait for the incoming connection. Implies listen.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Additionally, the following parameters can be set via command line options
|
|
(or in code via <code>AVOption</code>s):
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>rtmp_app</samp>’</dt>
|
|
<dd><p>Name of application to connect on the RTMP server. This option
|
|
overrides the parameter specified in the URI.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_buffer</samp>’</dt>
|
|
<dd><p>Set the client buffer time in milliseconds. The default is 3000.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_conn</samp>’</dt>
|
|
<dd><p>Extra arbitrary AMF connection parameters, parsed from a string,
|
|
e.g. like <code>B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0</code>.
|
|
Each value is prefixed by a single character denoting the type,
|
|
B for Boolean, N for number, S for string, O for object, or Z for null,
|
|
followed by a colon. For Booleans the data must be either 0 or 1 for
|
|
FALSE or TRUE, respectively. Likewise for Objects the data must be 0 or
|
|
1 to end or begin an object, respectively. Data items in subobjects may
|
|
be named, by prefixing the type with ’N’ and specifying the name before
|
|
the value (i.e. <code>NB:myFlag:1</code>). This option may be used multiple
|
|
times to construct arbitrary AMF sequences.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_flashver</samp>’</dt>
|
|
<dd><p>Version of the Flash plugin used to run the SWF player. The default
|
|
is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0 (compatible;
|
|
<libavformat version>).)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_flush_interval</samp>’</dt>
|
|
<dd><p>Number of packets flushed in the same request (RTMPT only). The default
|
|
is 10.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_live</samp>’</dt>
|
|
<dd><p>Specify that the media is a live stream. No resuming or seeking in
|
|
live streams is possible. The default value is <code>any</code>, which means the
|
|
subscriber first tries to play the live stream specified in the
|
|
playpath. If a live stream of that name is not found, it plays the
|
|
recorded stream. The other possible values are <code>live</code> and
|
|
<code>recorded</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_pageurl</samp>’</dt>
|
|
<dd><p>URL of the web page in which the media was embedded. By default no
|
|
value will be sent.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_playpath</samp>’</dt>
|
|
<dd><p>Stream identifier to play or to publish. This option overrides the
|
|
parameter specified in the URI.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_subscribe</samp>’</dt>
|
|
<dd><p>Name of live stream to subscribe to. By default no value will be sent.
|
|
It is only sent if the option is specified or if rtmp_live
|
|
is set to live.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_swfhash</samp>’</dt>
|
|
<dd><p>SHA256 hash of the decompressed SWF file (32 bytes).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_swfsize</samp>’</dt>
|
|
<dd><p>Size of the decompressed SWF file, required for SWFVerification.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_swfurl</samp>’</dt>
|
|
<dd><p>URL of the SWF player for the media. By default no value will be sent.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_swfverify</samp>’</dt>
|
|
<dd><p>URL to player swf file, compute hash/size automatically.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtmp_tcurl</samp>’</dt>
|
|
<dd><p>URL of the target stream. Defaults to proto://host[:port]/app.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example to read with <code>ffplay</code> a multimedia resource named
|
|
"sample" from the application "vod" from an RTMP server "myserver":
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay rtmp://myserver/vod/sample
|
|
</pre></td></tr></table>
|
|
|
|
<p>To publish to a password protected server, passing the playpath and
|
|
app names separately:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
|
|
</pre></td></tr></table>
|
|
|
|
<a name="rtmpe"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpe">24.16 rtmpe</a></h2>
|
|
|
|
<p>Encrypted Real-Time Messaging Protocol.
|
|
</p>
|
|
<p>The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
|
|
streaming multimedia content within standard cryptographic primitives,
|
|
consisting of Diffie-Hellman key exchange and HMACSHA256, generating
|
|
a pair of RC4 keys.
|
|
</p>
|
|
<a name="rtmps"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtmps">24.17 rtmps</a></h2>
|
|
|
|
<p>Real-Time Messaging Protocol over a secure SSL connection.
|
|
</p>
|
|
<p>The Real-Time Messaging Protocol (RTMPS) is used for streaming
|
|
multimedia content across an encrypted connection.
|
|
</p>
|
|
<a name="rtmpt"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpt">24.18 rtmpt</a></h2>
|
|
|
|
<p>Real-Time Messaging Protocol tunneled through HTTP.
|
|
</p>
|
|
<p>The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
|
|
for streaming multimedia content within HTTP requests to traverse
|
|
firewalls.
|
|
</p>
|
|
<a name="rtmpte"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpte">24.19 rtmpte</a></h2>
|
|
|
|
<p>Encrypted Real-Time Messaging Protocol tunneled through HTTP.
|
|
</p>
|
|
<p>The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE)
|
|
is used for streaming multimedia content within HTTP requests to traverse
|
|
firewalls.
|
|
</p>
|
|
<a name="rtmpts"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpts">24.20 rtmpts</a></h2>
|
|
|
|
<p>Real-Time Messaging Protocol tunneled through HTTPS.
|
|
</p>
|
|
<p>The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used
|
|
for streaming multimedia content within HTTPS requests to traverse
|
|
firewalls.
|
|
</p>
|
|
<a name="libssh"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libssh">24.21 libssh</a></h2>
|
|
|
|
<p>Secure File Transfer Protocol via libssh
|
|
</p>
|
|
<p>Allow to read from or write to remote resources using SFTP protocol.
|
|
</p>
|
|
<p>Following syntax is required.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>This protocol accepts the following options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>timeout</samp>’</dt>
|
|
<dd><p>Set timeout of socket I/O operations used by the underlying low level
|
|
operation. By default it is set to -1, which means that the timeout
|
|
is not specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>truncate</samp>’</dt>
|
|
<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
|
|
truncating. Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>private_key</samp>’</dt>
|
|
<dd><p>Specify the path of the file containing private key to use during authorization.
|
|
By default libssh searches for keys in the ‘<tt>~/.ssh/</tt>’ directory.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Example: Play a file stored on remote server.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
|
|
</pre></td></tr></table>
|
|
|
|
<a name="librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">24.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
|
|
|
|
<p>Real-Time Messaging Protocol and its variants supported through
|
|
librtmp.
|
|
</p>
|
|
<p>Requires the presence of the librtmp headers and library during
|
|
configuration. You need to explicitly configure the build with
|
|
"–enable-librtmp". If enabled this will replace the native RTMP
|
|
protocol.
|
|
</p>
|
|
<p>This protocol provides most client functions and a few server
|
|
functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
|
|
encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
|
|
variants of these encrypted types (RTMPTE, RTMPTS).
|
|
</p>
|
|
<p>The required syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>where <var>rtmp_proto</var> is one of the strings "rtmp", "rtmpt", "rtmpe",
|
|
"rtmps", "rtmpte", "rtmpts" corresponding to each RTMP variant, and
|
|
<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
|
|
meaning as specified for the RTMP native protocol.
|
|
<var>options</var> contains a list of space-separated options of the form
|
|
<var>key</var>=<var>val</var>.
|
|
</p>
|
|
<p>See the librtmp manual page (man 3 librtmp) for more information.
|
|
</p>
|
|
<p>For example, to stream a file in real-time to an RTMP server using
|
|
<code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
|
|
</pre></td></tr></table>
|
|
|
|
<p>To play the same stream using <code>ffplay</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay "rtmp://myserver/live/mystream live=1"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="rtp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtp">24.23 rtp</a></h2>
|
|
|
|
<p>Real-time Transport Protocol.
|
|
</p>
|
|
<p>The required syntax for an RTP URL is:
|
|
rtp://<var>hostname</var>[:<var>port</var>][?<var>option</var>=<var>val</var>...]
|
|
</p>
|
|
<p><var>port</var> specifies the RTP port to use.
|
|
</p>
|
|
<p>The following URL options are supported:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>ttl=<var>n</var></samp>’</dt>
|
|
<dd><p>Set the TTL (Time-To-Live) value (for multicast only).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtcpport=<var>n</var></samp>’</dt>
|
|
<dd><p>Set the remote RTCP port to <var>n</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>localrtpport=<var>n</var></samp>’</dt>
|
|
<dd><p>Set the local RTP port to <var>n</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>localrtcpport=<var>n</var>'</samp>’</dt>
|
|
<dd><p>Set the local RTCP port to <var>n</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pkt_size=<var>n</var></samp>’</dt>
|
|
<dd><p>Set max packet size (in bytes) to <var>n</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>connect=0|1</samp>’</dt>
|
|
<dd><p>Do a <code>connect()</code> on the UDP socket (if set to 1) or not (if set
|
|
to 0).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sources=<var>ip</var>[,<var>ip</var>]</samp>’</dt>
|
|
<dd><p>List allowed source IP addresses.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>block=<var>ip</var>[,<var>ip</var>]</samp>’</dt>
|
|
<dd><p>List disallowed (blocked) source IP addresses.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>write_to_source=0|1</samp>’</dt>
|
|
<dd><p>Send packets to the source address of the latest received packet (if
|
|
set to 1) or to a default remote address (if set to 0).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>localport=<var>n</var></samp>’</dt>
|
|
<dd><p>Set the local RTP port to <var>n</var>.
|
|
</p>
|
|
<p>This is a deprecated option. Instead, ‘<samp>localrtpport</samp>’ should be
|
|
used.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Important notes:
|
|
</p>
|
|
<ol>
|
|
<li>
|
|
If ‘<samp>rtcpport</samp>’ is not set the RTCP port will be set to the RTP
|
|
port value plus 1.
|
|
|
|
</li><li>
|
|
If ‘<samp>localrtpport</samp>’ (the local RTP port) is not set any available
|
|
port will be used for the local RTP and RTCP ports.
|
|
|
|
</li><li>
|
|
If ‘<samp>localrtcpport</samp>’ (the local RTCP port) is not set it will be
|
|
set to the the local RTP port value plus 1.
|
|
</li></ol>
|
|
|
|
<a name="rtsp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rtsp">24.24 rtsp</a></h2>
|
|
|
|
<p>Real-Time Streaming Protocol.
|
|
</p>
|
|
<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
|
|
and muxer. The demuxer supports both normal RTSP (with data transferred
|
|
over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
|
|
data transferred over RDT).
|
|
</p>
|
|
<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
|
|
supporting it (currently Darwin Streaming Server and Mischa Spiegelmock’s
|
|
<a href="https://github.com/revmischa/rtsp-server">RTSP server</a>).
|
|
</p>
|
|
<p>The required syntax for a RTSP url is:
|
|
</p><table><tr><td> </td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>Options can be set on the <code>ffmpeg</code>/<code>ffplay</code> command
|
|
line, or set in code via <code>AVOption</code>s or in
|
|
<code>avformat_open_input</code>.
|
|
</p>
|
|
<p>The following options are supported.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>initial_pause</samp>’</dt>
|
|
<dd><p>Do not start playing the stream immediately if set to 1. Default value
|
|
is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtsp_transport</samp>’</dt>
|
|
<dd><p>Set RTSP trasport protocols.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>udp</samp>’</dt>
|
|
<dd><p>Use UDP as lower transport protocol.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tcp</samp>’</dt>
|
|
<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
|
|
transport protocol.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>udp_multicast</samp>’</dt>
|
|
<dd><p>Use UDP multicast as lower transport protocol.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>http</samp>’</dt>
|
|
<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
|
|
passing proxies.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Multiple lower transport protocols may be specified, in that case they are
|
|
tried one at a time (if the setup of one fails, the next one is tried).
|
|
For the muxer, only the ‘<samp>tcp</samp>’ and ‘<samp>udp</samp>’ options are supported.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rtsp_flags</samp>’</dt>
|
|
<dd><p>Set RTSP flags.
|
|
</p>
|
|
<p>The following values are accepted:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>filter_src</samp>’</dt>
|
|
<dd><p>Accept packets only from negotiated peer address and port.
|
|
</p></dd>
|
|
<dt> ‘<samp>listen</samp>’</dt>
|
|
<dd><p>Act as a server, listening for an incoming connection.
|
|
</p></dd>
|
|
<dt> ‘<samp>prefer_tcp</samp>’</dt>
|
|
<dd><p>Try TCP for RTP transport first, if TCP is available as RTSP RTP transport.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>none</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>allowed_media_types</samp>’</dt>
|
|
<dd><p>Set media types to accept from the server.
|
|
</p>
|
|
<p>The following flags are accepted:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>video</samp>’</dt>
|
|
<dt> ‘<samp>audio</samp>’</dt>
|
|
<dt> ‘<samp>data</samp>’</dt>
|
|
</dl>
|
|
|
|
<p>By default it accepts all media types.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>min_port</samp>’</dt>
|
|
<dd><p>Set minimum local UDP port. Default value is 5000.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_port</samp>’</dt>
|
|
<dd><p>Set maximum local UDP port. Default value is 65000.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timeout</samp>’</dt>
|
|
<dd><p>Set maximum timeout (in seconds) to wait for incoming connections.
|
|
</p>
|
|
<p>A value of -1 mean infinite (default). This option implies the
|
|
‘<samp>rtsp_flags</samp>’ set to ‘<samp>listen</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>reorder_queue_size</samp>’</dt>
|
|
<dd><p>Set number of packets to buffer for handling of reordered packets.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stimeout</samp>’</dt>
|
|
<dd><p>Set socket TCP I/O timeout in micro seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>user-agent</samp>’</dt>
|
|
<dd><p>Override User-Agent header. If not specified, it default to the
|
|
libavformat identifier string.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>When receiving data over UDP, the demuxer tries to reorder received packets
|
|
(since they may arrive out of order, or packets may get lost totally). This
|
|
can be disabled by setting the maximum demuxing delay to zero (via
|
|
the <code>max_delay</code> field of AVFormatContext).
|
|
</p>
|
|
<p>When watching multi-bitrate Real-RTSP streams with <code>ffplay</code>, the
|
|
streams to display can be chosen with <code>-vst</code> <var>n</var> and
|
|
<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
|
|
on the fly by pressing <code>v</code> and <code>a</code>.
|
|
</p>
|
|
<a name="Examples-75"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-75">24.24.1 Examples</a></h3>
|
|
|
|
<p>The following examples all make use of the <code>ffplay</code> and
|
|
<code>ffmpeg</code> tools.
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Watch a stream over UDP, with a max reordering delay of 0.5 seconds:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Watch a stream tunneled over HTTP:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Send a stream in realtime to a RTSP server, for others to watch:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Receive a stream in realtime:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <var>output</var>
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="sap"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sap">24.25 sap</a></h2>
|
|
|
|
<p>Session Announcement Protocol (RFC 2974). This is not technically a
|
|
protocol handler in libavformat, it is a muxer and demuxer.
|
|
It is used for signalling of RTP streams, by announcing the SDP for the
|
|
streams regularly on a separate port.
|
|
</p>
|
|
<a name="Muxer"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Muxer">24.25.1 Muxer</a></h3>
|
|
|
|
<p>The syntax for a SAP url given to the muxer is:
|
|
</p><table><tr><td> </td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
|
|
or to port 5004 if no port is specified.
|
|
<var>options</var> is a <code>&</code>-separated list. The following options
|
|
are supported:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>announce_addr=<var>address</var></samp>’</dt>
|
|
<dd><p>Specify the destination IP address for sending the announcements to.
|
|
If omitted, the announcements are sent to the commonly used SAP
|
|
announcement multicast address 224.2.127.254 (sap.mcast.net), or
|
|
ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>announce_port=<var>port</var></samp>’</dt>
|
|
<dd><p>Specify the port to send the announcements on, defaults to
|
|
9875 if not specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ttl=<var>ttl</var></samp>’</dt>
|
|
<dd><p>Specify the time to live value for the announcements and RTP packets,
|
|
defaults to 255.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>same_port=<var>0|1</var></samp>’</dt>
|
|
<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
|
|
default), all streams are sent on unique ports, with each stream on a
|
|
port 2 numbers higher than the previous.
|
|
VLC/Live555 requires this to be set to 1, to be able to receive the stream.
|
|
The RTP stack in libavformat for receiving requires all streams to be sent
|
|
on unique ports.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Example command lines follow.
|
|
</p>
|
|
<p>To broadcast a stream on the local subnet, for watching in VLC:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
|
|
</pre></td></tr></table>
|
|
|
|
<p>Similarly, for watching in <code>ffplay</code>:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
|
|
</pre></td></tr></table>
|
|
|
|
<p>And for watching in <code>ffplay</code>, over IPv6:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Demuxer"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Demuxer">24.25.2 Demuxer</a></h3>
|
|
|
|
<p>The syntax for a SAP url given to the demuxer is:
|
|
</p><table><tr><td> </td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>address</var> is the multicast address to listen for announcements on,
|
|
if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
|
|
is the port that is listened on, 9875 if omitted.
|
|
</p>
|
|
<p>The demuxers listens for announcements on the given address and port.
|
|
Once an announcement is received, it tries to receive that particular stream.
|
|
</p>
|
|
<p>Example command lines follow.
|
|
</p>
|
|
<p>To play back the first stream announced on the normal SAP multicast address:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffplay sap://
|
|
</pre></td></tr></table>
|
|
|
|
<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
|
|
</pre></td></tr></table>
|
|
|
|
<a name="sctp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sctp">24.26 sctp</a></h2>
|
|
|
|
<p>Stream Control Transmission Protocol.
|
|
</p>
|
|
<p>The accepted URL syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">sctp://<var>host</var>:<var>port</var>[?<var>options</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p>The protocol accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>listen</samp>’</dt>
|
|
<dd><p>If set to any value, listen for an incoming connection. Outgoing connection is done by default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_streams</samp>’</dt>
|
|
<dd><p>Set the maximum number of streams. By default no limit is set.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="srtp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-srtp">24.27 srtp</a></h2>
|
|
|
|
<p>Secure Real-time Transport Protocol.
|
|
</p>
|
|
<p>The accepted options are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>srtp_in_suite</samp>’</dt>
|
|
<dt> ‘<samp>srtp_out_suite</samp>’</dt>
|
|
<dd><p>Select input and output encoding suites.
|
|
</p>
|
|
<p>Supported values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>AES_CM_128_HMAC_SHA1_80</samp>’</dt>
|
|
<dt> ‘<samp>SRTP_AES128_CM_HMAC_SHA1_80</samp>’</dt>
|
|
<dt> ‘<samp>AES_CM_128_HMAC_SHA1_32</samp>’</dt>
|
|
<dt> ‘<samp>SRTP_AES128_CM_HMAC_SHA1_32</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>srtp_in_params</samp>’</dt>
|
|
<dt> ‘<samp>srtp_out_params</samp>’</dt>
|
|
<dd><p>Set input and output encoding parameters, which are expressed by a
|
|
base64-encoded representation of a binary block. The first 16 bytes of
|
|
this binary block are used as master key, the following 14 bytes are
|
|
used as master salt.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="subfile"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-subfile">24.28 subfile</a></h2>
|
|
|
|
<p>Virtually extract a segment of a file or another stream.
|
|
The underlying stream must be seekable.
|
|
</p>
|
|
<p>Accepted options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>start</samp>’</dt>
|
|
<dd><p>Start offset of the extracted segment, in bytes.
|
|
</p></dd>
|
|
<dt> ‘<samp>end</samp>’</dt>
|
|
<dd><p>End offset of the extracted segment, in bytes.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Examples:
|
|
</p>
|
|
<p>Extract a chapter from a DVD VOB file (start and end sectors obtained
|
|
externally and multiplied by 2048):
|
|
</p><table><tr><td> </td><td><pre class="example">subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB
|
|
</pre></td></tr></table>
|
|
|
|
<p>Play an AVI file directly from a TAR archive:
|
|
subfile,,start,183241728,end,366490624,,:archive.tar
|
|
</p>
|
|
<a name="tcp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-tcp">24.29 tcp</a></h2>
|
|
|
|
<p>Transmission Control Protocol.
|
|
</p>
|
|
<p>The required syntax for a TCP url is:
|
|
</p><table><tr><td> </td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>options</var> contains a list of &-separated options of the form
|
|
<var>key</var>=<var>val</var>.
|
|
</p>
|
|
<p>The list of supported options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>listen=<var>1|0</var></samp>’</dt>
|
|
<dd><p>Listen for an incoming connection. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timeout=<var>microseconds</var></samp>’</dt>
|
|
<dd><p>Set raise error timeout, expressed in microseconds.
|
|
</p>
|
|
<p>This option is only relevant in read mode: if no data arrived in more
|
|
than this time interval, raise error.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>listen_timeout=<var>microseconds</var></samp>’</dt>
|
|
<dd><p>Set listen timeout, expressed in microseconds.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following example shows how to setup a listening TCP connection
|
|
with <code>ffmpeg</code>, which is then accessed with <code>ffplay</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
|
|
ffplay tcp://<var>hostname</var>:<var>port</var>
|
|
</pre></td></tr></table>
|
|
|
|
<a name="tls"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-tls">24.30 tls</a></h2>
|
|
|
|
<p>Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
|
|
</p>
|
|
<p>The required syntax for a TLS/SSL url is:
|
|
</p><table><tr><td> </td><td><pre class="example">tls://<var>hostname</var>:<var>port</var>[?<var>options</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p>The following parameters can be set via command line options
|
|
(or in code via <code>AVOption</code>s):
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>ca_file, cafile=<var>filename</var></samp>’</dt>
|
|
<dd><p>A file containing certificate authority (CA) root certificates to treat
|
|
as trusted. If the linked TLS library contains a default this might not
|
|
need to be specified for verification to work, but not all libraries and
|
|
setups have defaults built in.
|
|
The file must be in OpenSSL PEM format.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tls_verify=<var>1|0</var></samp>’</dt>
|
|
<dd><p>If enabled, try to verify the peer that we are communicating with.
|
|
Note, if using OpenSSL, this currently only makes sure that the
|
|
peer certificate is signed by one of the root certificates in the CA
|
|
database, but it does not validate that the certificate actually
|
|
matches the host name we are trying to connect to. (With GnuTLS,
|
|
the host name is validated as well.)
|
|
</p>
|
|
<p>This is disabled by default since it requires a CA database to be
|
|
provided by the caller in many cases.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cert_file, cert=<var>filename</var></samp>’</dt>
|
|
<dd><p>A file containing a certificate to use in the handshake with the peer.
|
|
(When operating as server, in listen mode, this is more often required
|
|
by the peer, while client certificates only are mandated in certain
|
|
setups.)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>key_file, key=<var>filename</var></samp>’</dt>
|
|
<dd><p>A file containing the private key for the certificate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>listen=<var>1|0</var></samp>’</dt>
|
|
<dd><p>If enabled, listen for connections on the provided port, and assume
|
|
the server role in the handshake instead of the client role.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Example command lines:
|
|
</p>
|
|
<p>To create a TLS/SSL server that serves an input stream.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tls://<var>hostname</var>:<var>port</var>?listen&cert=<var>server.crt</var>&key=<var>server.key</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>To play back a stream from the TLS/SSL server using <code>ffplay</code>:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffplay tls://<var>hostname</var>:<var>port</var>
|
|
</pre></td></tr></table>
|
|
|
|
<a name="udp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-udp">24.31 udp</a></h2>
|
|
|
|
<p>User Datagram Protocol.
|
|
</p>
|
|
<p>The required syntax for an UDP URL is:
|
|
</p><table><tr><td> </td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>options</var> contains a list of &-separated options of the form <var>key</var>=<var>val</var>.
|
|
</p>
|
|
<p>In case threading is enabled on the system, a circular buffer is used
|
|
to store the incoming data, which allows one to reduce loss of data due to
|
|
UDP socket buffer overruns. The <var>fifo_size</var> and
|
|
<var>overrun_nonfatal</var> options are related to this buffer.
|
|
</p>
|
|
<p>The list of supported options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>buffer_size=<var>size</var></samp>’</dt>
|
|
<dd><p>Set the UDP maximum socket buffer size in bytes. This is used to set either
|
|
the receive or send buffer size, depending on what the socket is used for.
|
|
Default is 64KB. See also <var>fifo_size</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>localport=<var>port</var></samp>’</dt>
|
|
<dd><p>Override the local UDP port to bind with.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>localaddr=<var>addr</var></samp>’</dt>
|
|
<dd><p>Choose the local IP address. This is useful e.g. if sending multicast
|
|
and the host has multiple interfaces, where the user can choose
|
|
which interface to send on by specifying the IP address of that interface.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pkt_size=<var>size</var></samp>’</dt>
|
|
<dd><p>Set the size in bytes of UDP packets.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>reuse=<var>1|0</var></samp>’</dt>
|
|
<dd><p>Explicitly allow or disallow reusing UDP sockets.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ttl=<var>ttl</var></samp>’</dt>
|
|
<dd><p>Set the time to live value (for multicast only).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>connect=<var>1|0</var></samp>’</dt>
|
|
<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
|
|
destination address can’t be changed with ff_udp_set_remote_url later.
|
|
If the destination address isn’t known at the start, this option can
|
|
be specified in ff_udp_set_remote_url, too.
|
|
This allows finding out the source address for the packets with getsockname,
|
|
and makes writes return with AVERROR(ECONNREFUSED) if "destination
|
|
unreachable" is received.
|
|
For receiving, this gives the benefit of only receiving packets from
|
|
the specified peer address/port.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sources=<var>address</var>[,<var>address</var>]</samp>’</dt>
|
|
<dd><p>Only receive packets sent to the multicast group from one of the
|
|
specified sender IP addresses.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>block=<var>address</var>[,<var>address</var>]</samp>’</dt>
|
|
<dd><p>Ignore packets sent to the multicast group from the specified
|
|
sender IP addresses.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fifo_size=<var>units</var></samp>’</dt>
|
|
<dd><p>Set the UDP receiving circular buffer size, expressed as a number of
|
|
packets with size of 188 bytes. If not specified defaults to 7*4096.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>overrun_nonfatal=<var>1|0</var></samp>’</dt>
|
|
<dd><p>Survive in case of UDP receiving circular buffer overrun. Default
|
|
value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timeout=<var>microseconds</var></samp>’</dt>
|
|
<dd><p>Set raise error timeout, expressed in microseconds.
|
|
</p>
|
|
<p>This option is only relevant in read mode: if no data arrived in more
|
|
than this time interval, raise error.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-15"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-15">24.31.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Use <code>ffmpeg</code> to stream over UDP to a remote endpoint:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use <code>ffmpeg</code> to stream in mpegts format over UDP using 188
|
|
sized UDP packets, using a large input buffer:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&buffer_size=65535
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use <code>ffmpeg</code> to receive over UDP from a remote endpoint:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var> ...
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="unix"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-unix">24.32 unix</a></h2>
|
|
|
|
<p>Unix local socket
|
|
</p>
|
|
<p>The required syntax for a Unix socket URL is:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">unix://<var>filepath</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>The following parameters can be set via command line options
|
|
(or in code via <code>AVOption</code>s):
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>timeout</samp>’</dt>
|
|
<dd><p>Timeout in ms.
|
|
</p></dd>
|
|
<dt> ‘<samp>listen</samp>’</dt>
|
|
<dd><p>Create the Unix socket in listening mode.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Device-Options"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Device-Options">25. Device Options</a></h1>
|
|
|
|
<p>The libavdevice library provides the same interface as
|
|
libavformat. Namely, an input device is considered like a demuxer, and
|
|
an output device like a muxer, and the interface and generic device
|
|
options are the same provided by libavformat (see the ffmpeg-formats
|
|
manual).
|
|
</p>
|
|
<p>In addition each input or output device may support so-called private
|
|
options, which are specific for that component.
|
|
</p>
|
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
|
FFmpeg tools, or by setting the value explicitly in the device
|
|
<code>AVFormatContext</code> options or using the ‘<tt>libavutil/opt.h</tt>’ API
|
|
for programmatic use.
|
|
</p>
|
|
|
|
<a name="Input-Devices"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Input-Devices">26. Input Devices</a></h1>
|
|
|
|
<p>Input devices are configured elements in FFmpeg which allow to access
|
|
the data coming from a multimedia device attached to your system.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported input devices
|
|
are enabled by default. You can list all available ones using the
|
|
configure option "–list-indevs".
|
|
</p>
|
|
<p>You can disable all the input devices using the configure option
|
|
"–disable-indevs", and selectively enable an input device using the
|
|
option "–enable-indev=<var>INDEV</var>", or you can disable a particular
|
|
input device using the option "–disable-indev=<var>INDEV</var>".
|
|
</p>
|
|
<p>The option "-formats" of the ff* tools will display the list of
|
|
supported input devices (amongst the demuxers).
|
|
</p>
|
|
<p>A description of the currently available input devices follows.
|
|
</p>
|
|
<a name="alsa-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-alsa-1">26.1 alsa</a></h2>
|
|
|
|
<p>ALSA (Advanced Linux Sound Architecture) input device.
|
|
</p>
|
|
<p>To enable this input device during configuration you need libasound
|
|
installed on your system.
|
|
</p>
|
|
<p>This device allows capturing from an ALSA device. The name of the
|
|
device to capture has to be an ALSA card identifier.
|
|
</p>
|
|
<p>An ALSA identifier has the syntax:
|
|
</p><table><tr><td> </td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
|
|
</pre></td></tr></table>
|
|
|
|
<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
|
|
</p>
|
|
<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
|
|
specify card number or identifier, device number and subdevice number
|
|
(-1 means any).
|
|
</p>
|
|
<p>To see the list of cards currently recognized by your system check the
|
|
files ‘<tt>/proc/asound/cards</tt>’ and ‘<tt>/proc/asound/devices</tt>’.
|
|
</p>
|
|
<p>For example to capture with <code>ffmpeg</code> from an ALSA device with
|
|
card id 0, you may run the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
|
|
</pre></td></tr></table>
|
|
|
|
<p>For more information see:
|
|
<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
|
|
</p>
|
|
<a name="bktr"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-bktr">26.2 bktr</a></h2>
|
|
|
|
<p>BSD video input device.
|
|
</p>
|
|
<a name="dshow"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-dshow">26.3 dshow</a></h2>
|
|
|
|
<p>Windows DirectShow input device.
|
|
</p>
|
|
<p>DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
|
|
Currently only audio and video devices are supported.
|
|
</p>
|
|
<p>Multiple devices may be opened as separate inputs, but they may also be
|
|
opened on the same input, which should improve synchronism between them.
|
|
</p>
|
|
<p>The input name should be in the format:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"><var>TYPE</var>=<var>NAME</var>[:<var>TYPE</var>=<var>NAME</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p>where <var>TYPE</var> can be either <var>audio</var> or <var>video</var>,
|
|
and <var>NAME</var> is the device’s name.
|
|
</p>
|
|
<a name="Options-44"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-44">26.3.1 Options</a></h3>
|
|
|
|
<p>If no options are specified, the device’s defaults are used.
|
|
If the device does not support the requested options, it will
|
|
fail to open.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Set the video size in the captured video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Set the frame rate in the captured video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate</samp>’</dt>
|
|
<dd><p>Set the sample rate (in Hz) of the captured audio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_size</samp>’</dt>
|
|
<dd><p>Set the sample size (in bits) of the captured audio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channels</samp>’</dt>
|
|
<dd><p>Set the number of channels in the captured audio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_devices</samp>’</dt>
|
|
<dd><p>If set to ‘<samp>true</samp>’, print a list of devices and exit.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_options</samp>’</dt>
|
|
<dd><p>If set to ‘<samp>true</samp>’, print a list of selected device’s options
|
|
and exit.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>video_device_number</samp>’</dt>
|
|
<dd><p>Set video device number for devices with same name (starts at 0,
|
|
defaults to 0).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>audio_device_number</samp>’</dt>
|
|
<dd><p>Set audio device number for devices with same name (starts at 0,
|
|
defaults to 0).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pixel_format</samp>’</dt>
|
|
<dd><p>Select pixel format to be used by DirectShow. This may only be set when
|
|
the video codec is not set or set to rawvideo.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>audio_buffer_size</samp>’</dt>
|
|
<dd><p>Set audio device buffer size in milliseconds (which can directly
|
|
impact latency, depending on the device).
|
|
Defaults to using the audio device’s
|
|
default buffer size (typically some multiple of 500ms).
|
|
Setting this value too low can degrade performance.
|
|
See also
|
|
<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx</a>
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-98"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-98">26.3.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Print the list of DirectShow supported devices and exit:
|
|
<table><tr><td> </td><td><pre class="example">$ ffmpeg -list_devices true -f dshow -i dummy
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Open video device <var>Camera</var>:
|
|
<table><tr><td> </td><td><pre class="example">$ ffmpeg -f dshow -i video="Camera"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Open second video device with name <var>Camera</var>:
|
|
<table><tr><td> </td><td><pre class="example">$ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Open video device <var>Camera</var> and audio device <var>Microphone</var>:
|
|
<table><tr><td> </td><td><pre class="example">$ ffmpeg -f dshow -i video="Camera":audio="Microphone"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Print the list of supported options in selected device and exit:
|
|
<table><tr><td> </td><td><pre class="example">$ ffmpeg -list_options true -f dshow -i video="Camera"
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="dv1394"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-dv1394">26.4 dv1394</a></h2>
|
|
|
|
<p>Linux DV 1394 input device.
|
|
</p>
|
|
<a name="fbdev-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fbdev-1">26.5 fbdev</a></h2>
|
|
|
|
<p>Linux framebuffer input device.
|
|
</p>
|
|
<p>The Linux framebuffer is a graphic hardware-independent abstraction
|
|
layer to show graphics on a computer monitor, typically on the
|
|
console. It is accessed through a file device node, usually
|
|
‘<tt>/dev/fb0</tt>’.
|
|
</p>
|
|
<p>For more detailed information read the file
|
|
Documentation/fb/framebuffer.txt included in the Linux source tree.
|
|
</p>
|
|
<p>To record from the framebuffer device ‘<tt>/dev/fb0</tt>’ with
|
|
<code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
|
|
</pre></td></tr></table>
|
|
|
|
<p>You can take a single screenshot image with the command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
|
|
</p>
|
|
<a name="gdigrab"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-gdigrab">26.6 gdigrab</a></h2>
|
|
|
|
<p>Win32 GDI-based screen capture device.
|
|
</p>
|
|
<p>This device allows you to capture a region of the display on Windows.
|
|
</p>
|
|
<p>There are two options for the input filename:
|
|
</p><table><tr><td> </td><td><pre class="example">desktop
|
|
</pre></td></tr></table>
|
|
<p>or
|
|
</p><table><tr><td> </td><td><pre class="example">title=<var>window_title</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>The first option will capture the entire desktop, or a fixed region of the
|
|
desktop. The second option will instead capture the contents of a single
|
|
window, regardless of its position on the screen.
|
|
</p>
|
|
<p>For example, to grab the entire desktop using <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Grab a 640x480 region at position <code>10,20</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Grab the contents of the window named "Calculator"
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Options-23"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-23">26.6.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>draw_mouse</samp>’</dt>
|
|
<dd><p>Specify whether to draw the mouse pointer. Use the value <code>0</code> to
|
|
not draw the pointer. Default value is <code>1</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Set the grabbing frame rate. Default value is <code>ntsc</code>,
|
|
corresponding to a frame rate of <code>30000/1001</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>show_region</samp>’</dt>
|
|
<dd><p>Show grabbed region on screen.
|
|
</p>
|
|
<p>If <var>show_region</var> is specified with <code>1</code>, then the grabbing
|
|
region will be indicated on screen. With this option, it is easy to
|
|
know what is being grabbed if only a portion of the screen is grabbed.
|
|
</p>
|
|
<p>Note that <var>show_region</var> is incompatible with grabbing the contents
|
|
of a single window.
|
|
</p>
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Set the video frame size. The default is to capture the full screen if ‘<tt>desktop</tt>’ is selected, or the full window size if ‘<tt>title=<var>window_title</var></tt>’ is selected.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>offset_x</samp>’</dt>
|
|
<dd><p>When capturing a region with <var>video_size</var>, set the distance from the left edge of the screen or desktop.
|
|
</p>
|
|
<p>Note that the offset calculation is from the top left corner of the primary monitor on Windows. If you have a monitor positioned to the left of your primary monitor, you will need to use a negative <var>offset_x</var> value to move the region to that monitor.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>offset_y</samp>’</dt>
|
|
<dd><p>When capturing a region with <var>video_size</var>, set the distance from the top edge of the screen or desktop.
|
|
</p>
|
|
<p>Note that the offset calculation is from the top left corner of the primary monitor on Windows. If you have a monitor positioned above your primary monitor, you will need to use a negative <var>offset_y</var> value to move the region to that monitor.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="iec61883"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-iec61883">26.7 iec61883</a></h2>
|
|
|
|
<p>FireWire DV/HDV input device using libiec61883.
|
|
</p>
|
|
<p>To enable this input device, you need libiec61883, libraw1394 and
|
|
libavc1394 installed on your system. Use the configure option
|
|
<code>--enable-libiec61883</code> to compile with the device enabled.
|
|
</p>
|
|
<p>The iec61883 capture device supports capturing from a video device
|
|
connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
|
|
FireWire stack (juju). This is the default DV/HDV input method in Linux
|
|
Kernel 2.6.37 and later, since the old FireWire stack was removed.
|
|
</p>
|
|
<p>Specify the FireWire port to be used as input file, or "auto"
|
|
to choose the first port connected.
|
|
</p>
|
|
<a name="Options-35"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-35">26.7.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dvtype</samp>’</dt>
|
|
<dd><p>Override autodetection of DV/HDV. This should only be used if auto
|
|
detection does not work, or if usage of a different device type
|
|
should be prohibited. Treating a DV device as HDV (or vice versa) will
|
|
not work and result in undefined behavior.
|
|
The values ‘<samp>auto</samp>’, ‘<samp>dv</samp>’ and ‘<samp>hdv</samp>’ are supported.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dvbuffer</samp>’</dt>
|
|
<dd><p>Set maxiumum size of buffer for incoming data, in frames. For DV, this
|
|
is an exact value. For HDV, it is not frame exact, since HDV does
|
|
not have a fixed frame size.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dvguid</samp>’</dt>
|
|
<dd><p>Select the capture device by specifying it’s GUID. Capturing will only
|
|
be performed from the specified device and fails if no device with the
|
|
given GUID is found. This is useful to select the input if multiple
|
|
devices are connected at the same time.
|
|
Look at /sys/bus/firewire/devices to find out the GUIDs.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-77"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-77">26.7.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Grab and show the input of a FireWire DV/HDV device.
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f iec61883 -i auto
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Grab and record the input of a FireWire DV/HDV device,
|
|
using a packet buffer of 100000 packets if the source is HDV.
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="jack"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-jack">26.8 jack</a></h2>
|
|
|
|
<p>JACK input device.
|
|
</p>
|
|
<p>To enable this input device during configuration you need libjack
|
|
installed on your system.
|
|
</p>
|
|
<p>A JACK input device creates one or more JACK writable clients, one for
|
|
each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
|
|
<var>client_name</var> is the name provided by the application, and <var>N</var>
|
|
is a number which identifies the channel.
|
|
Each writable client will send the acquired data to the FFmpeg input
|
|
device.
|
|
</p>
|
|
<p>Once you have created one or more JACK readable clients, you need to
|
|
connect them to one or more JACK writable clients.
|
|
</p>
|
|
<p>To connect or disconnect JACK clients you can use the <code>jack_connect</code>
|
|
and <code>jack_disconnect</code> programs, or do it through a graphical interface,
|
|
for example with <code>qjackctl</code>.
|
|
</p>
|
|
<p>To list the JACK clients and their properties you can invoke the command
|
|
<code>jack_lsp</code>.
|
|
</p>
|
|
<p>Follows an example which shows how to capture a JACK readable client
|
|
with <code>ffmpeg</code>.
|
|
</p><table><tr><td> </td><td><pre class="example"># Create a JACK writable client with name "ffmpeg".
|
|
$ ffmpeg -f jack -i ffmpeg -y out.wav
|
|
|
|
# Start the sample jack_metro readable client.
|
|
$ jack_metro -b 120 -d 0.2 -f 4000
|
|
|
|
# List the current JACK clients.
|
|
$ jack_lsp -c
|
|
system:capture_1
|
|
system:capture_2
|
|
system:playback_1
|
|
system:playback_2
|
|
ffmpeg:input_1
|
|
metro:120_bpm
|
|
|
|
# Connect metro to the ffmpeg writable client.
|
|
$ jack_connect metro:120_bpm ffmpeg:input_1
|
|
</pre></td></tr></table>
|
|
|
|
<p>For more information read:
|
|
<a href="http://jackaudio.org/">http://jackaudio.org/</a>
|
|
</p>
|
|
<a name="lavfi"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-lavfi">26.9 lavfi</a></h2>
|
|
|
|
<p>Libavfilter input virtual device.
|
|
</p>
|
|
<p>This input device reads data from the open output pads of a libavfilter
|
|
filtergraph.
|
|
</p>
|
|
<p>For each filtergraph open output, the input device will create a
|
|
corresponding stream which is mapped to the generated output. Currently
|
|
only video data is supported. The filtergraph is specified through the
|
|
option ‘<samp>graph</samp>’.
|
|
</p>
|
|
<a name="Options-30"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-30">26.9.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>graph</samp>’</dt>
|
|
<dd><p>Specify the filtergraph to use as input. Each video open output must be
|
|
labelled by a unique string of the form "out<var>N</var>", where <var>N</var> is a
|
|
number starting from 0 corresponding to the mapped input stream
|
|
generated by the device.
|
|
The first unlabelled output is automatically assigned to the "out0"
|
|
label, but all the others need to be specified explicitly.
|
|
</p>
|
|
<p>If not specified defaults to the filename specified for the input
|
|
device.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>graph_file</samp>’</dt>
|
|
<dd><p>Set the filename of the filtergraph to be read and sent to the other
|
|
filters. Syntax of the filtergraph is the same as the one specified by
|
|
the option <var>graph</var>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-30"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-30">26.9.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Create a color video stream and play it back with <code>ffplay</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi -graph "color=c=pink [out0]" dummy
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
As the previous example, but use filename for specifying the graph
|
|
description, and omit the "out0" label:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi color=c=pink
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Create three different video test filtered sources and play them:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Read an audio stream from a file using the amovie source and play it
|
|
back with <code>ffplay</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi "amovie=test.wav"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Read an audio stream and a video stream and play it back with
|
|
<code>ffplay</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="libdc1394"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-libdc1394">26.10 libdc1394</a></h2>
|
|
|
|
<p>IIDC1394 input device, based on libdc1394 and libraw1394.
|
|
</p>
|
|
<a name="openal"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-openal">26.11 openal</a></h2>
|
|
|
|
<p>The OpenAL input device provides audio capture on all systems with a
|
|
working OpenAL 1.1 implementation.
|
|
</p>
|
|
<p>To enable this input device during configuration, you need OpenAL
|
|
headers and libraries installed on your system, and need to configure
|
|
FFmpeg with <code>--enable-openal</code>.
|
|
</p>
|
|
<p>OpenAL headers and libraries should be provided as part of your OpenAL
|
|
implementation, or as an additional download (an SDK). Depending on your
|
|
installation you may need to specify additional flags via the
|
|
<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
|
|
system to locate the OpenAL headers and libraries.
|
|
</p>
|
|
<p>An incomplete list of OpenAL implementations follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> <strong>Creative</strong></dt>
|
|
<dd><p>The official Windows implementation, providing hardware acceleration
|
|
with supported devices and software fallback.
|
|
See <a href="http://openal.org/">http://openal.org/</a>.
|
|
</p></dd>
|
|
<dt> <strong>OpenAL Soft</strong></dt>
|
|
<dd><p>Portable, open source (LGPL) software implementation. Includes
|
|
backends for the most common sound APIs on the Windows, Linux,
|
|
Solaris, and BSD operating systems.
|
|
See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
|
|
</p></dd>
|
|
<dt> <strong>Apple</strong></dt>
|
|
<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
|
|
See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>This device allows one to capture from an audio input device handled
|
|
through OpenAL.
|
|
</p>
|
|
<p>You need to specify the name of the device to capture in the provided
|
|
filename. If the empty string is provided, the device will
|
|
automatically select the default device. You can get the list of the
|
|
supported devices by using the option <var>list_devices</var>.
|
|
</p>
|
|
<a name="Options-18"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-18">26.11.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>channels</samp>’</dt>
|
|
<dd><p>Set the number of channels in the captured audio. Only the values
|
|
‘<samp>1</samp>’ (monaural) and ‘<samp>2</samp>’ (stereo) are currently supported.
|
|
Defaults to ‘<samp>2</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_size</samp>’</dt>
|
|
<dd><p>Set the sample size (in bits) of the captured audio. Only the values
|
|
‘<samp>8</samp>’ and ‘<samp>16</samp>’ are currently supported. Defaults to
|
|
‘<samp>16</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate</samp>’</dt>
|
|
<dd><p>Set the sample rate (in Hz) of the captured audio.
|
|
Defaults to ‘<samp>44.1k</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_devices</samp>’</dt>
|
|
<dd><p>If set to ‘<samp>true</samp>’, print a list of devices and exit.
|
|
Defaults to ‘<samp>false</samp>’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-101"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-101">26.11.2 Examples</a></h3>
|
|
|
|
<p>Print the list of OpenAL supported devices and exit:
|
|
</p><table><tr><td> </td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Capture from the OpenAL device ‘<tt>DR-BT101 via PulseAudio</tt>’:
|
|
</p><table><tr><td> </td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Capture from the default device (note the empty string ” as filename):
|
|
</p><table><tr><td> </td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Capture from two devices simultaneously, writing to two different files,
|
|
within the same <code>ffmpeg</code> command:
|
|
</p><table><tr><td> </td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
|
|
</pre></td></tr></table>
|
|
<p>Note: not all OpenAL implementations support multiple simultaneous capture -
|
|
try the latest OpenAL Soft if the above does not work.
|
|
</p>
|
|
<a name="oss"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-oss">26.12 oss</a></h2>
|
|
|
|
<p>Open Sound System input device.
|
|
</p>
|
|
<p>The filename to provide to the input device is the device node
|
|
representing the OSS input device, and is usually set to
|
|
‘<tt>/dev/dsp</tt>’.
|
|
</p>
|
|
<p>For example to grab from ‘<tt>/dev/dsp</tt>’ using <code>ffmpeg</code> use the
|
|
command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
|
|
</pre></td></tr></table>
|
|
|
|
<p>For more information about OSS see:
|
|
<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
|
|
</p>
|
|
<a name="pulse"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pulse">26.13 pulse</a></h2>
|
|
|
|
<p>PulseAudio input device.
|
|
</p>
|
|
<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
|
|
</p>
|
|
<p>The filename to provide to the input device is a source device or the
|
|
string "default"
|
|
</p>
|
|
<p>To list the PulseAudio source devices and their properties you can invoke
|
|
the command <code>pactl list sources</code>.
|
|
</p>
|
|
<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>.
|
|
</p>
|
|
<a name="Options"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options">26.13.1 Options</a></h3>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>server</samp>’</dt>
|
|
<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
|
|
Default server is used when not provided.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>name</samp>’</dt>
|
|
<dd><p>Specify the application name PulseAudio will use when showing active clients,
|
|
by default it is the <code>LIBAVFORMAT_IDENT</code> string.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stream_name</samp>’</dt>
|
|
<dd><p>Specify the stream name PulseAudio will use when showing active streams,
|
|
by default it is "record".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate</samp>’</dt>
|
|
<dd><p>Specify the samplerate in Hz, by default 48kHz is used.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channels</samp>’</dt>
|
|
<dd><p>Specify the channels in use, by default 2 (stereo) is set.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame_size</samp>’</dt>
|
|
<dd><p>Specify the number of bytes per frame, by default it is set to 1024.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fragment_size</samp>’</dt>
|
|
<dd><p>Specify the minimal buffering fragment in PulseAudio, it will affect the
|
|
audio latency. By default it is unset.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-48"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-48">26.13.2 Examples</a></h3>
|
|
<p>Record a stream from default device:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f pulse -i default /tmp/pulse.wav
|
|
</pre></td></tr></table>
|
|
|
|
<a name="qtkit"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-qtkit">26.14 qtkit</a></h2>
|
|
|
|
<p>QTKit input device.
|
|
</p>
|
|
<p>The filename passed as input is parsed to contain either a device name or index.
|
|
The device index can also be given by using -video_device_index.
|
|
A given device index will override any given device name.
|
|
If the desired device consists of numbers only, use -video_device_index to identify it.
|
|
The default device will be chosen if an empty string or the device name "default" is given.
|
|
The available devices can be enumerated by using -list_devices.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f qtkit -i "0" out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f qtkit -video_device_index 0 -i "" out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f qtkit -i "default" out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f qtkit -list_devices true -i ""
|
|
</pre></td></tr></table>
|
|
|
|
<a name="sndio-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sndio-1">26.15 sndio</a></h2>
|
|
|
|
<p>sndio input device.
|
|
</p>
|
|
<p>To enable this input device during configuration you need libsndio
|
|
installed on your system.
|
|
</p>
|
|
<p>The filename to provide to the input device is the device node
|
|
representing the sndio input device, and is usually set to
|
|
‘<tt>/dev/audio0</tt>’.
|
|
</p>
|
|
<p>For example to grab from ‘<tt>/dev/audio0</tt>’ using <code>ffmpeg</code> use the
|
|
command:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
|
|
</pre></td></tr></table>
|
|
|
|
<a name="video4linux2_002c-v4l2"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-video4linux2_002c-v4l2">26.16 video4linux2, v4l2</a></h2>
|
|
|
|
<p>Video4Linux2 input video device.
|
|
</p>
|
|
<p>"v4l2" can be used as alias for "video4linux2".
|
|
</p>
|
|
<p>If FFmpeg is built with v4l-utils support (by using the
|
|
<code>--enable-libv4l2</code> configure option), it is possible to use it with the
|
|
<code>-use_libv4l2</code> input device option.
|
|
</p>
|
|
<p>The name of the device to grab is a file device node, usually Linux
|
|
systems tend to automatically create such nodes when the device
|
|
(e.g. an USB webcam) is plugged into the system, and has a name of the
|
|
kind ‘<tt>/dev/video<var>N</var></tt>’, where <var>N</var> is a number associated to
|
|
the device.
|
|
</p>
|
|
<p>Video4Linux2 devices usually support a limited set of
|
|
<var>width</var>x<var>height</var> sizes and frame rates. You can check which are
|
|
supported using <code>-list_formats all</code> for Video4Linux2 devices.
|
|
Some devices, like TV cards, support one or more standards. It is possible
|
|
to list all the supported standards using <code>-list_standards all</code>.
|
|
</p>
|
|
<p>The time base for the timestamps is 1 microsecond. Depending on the kernel
|
|
version and configuration, the timestamps may be derived from the real time
|
|
clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
|
|
boot time, unaffected by NTP or manual changes to the clock). The
|
|
‘<samp>-timestamps abs</samp>’ or ‘<samp>-ts abs</samp>’ option can be used to force
|
|
conversion into the real time clock.
|
|
</p>
|
|
<p>Some usage examples of the video4linux2 device with <code>ffmpeg</code>
|
|
and <code>ffplay</code>:
|
|
</p><ul>
|
|
<li>
|
|
Grab and show the input of a video4linux2 device:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Grab and record the input of a video4linux2 device, leave the
|
|
frame rate and size as previously set:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>For more information about Video4Linux, check <a href="http://linuxtv.org/">http://linuxtv.org/</a>.
|
|
</p>
|
|
<a name="Options-29"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-29">26.16.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>standard</samp>’</dt>
|
|
<dd><p>Set the standard. Must be the name of a supported standard. To get a
|
|
list of the supported standards, use the ‘<samp>list_standards</samp>’
|
|
option.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channel</samp>’</dt>
|
|
<dd><p>Set the input channel number. Default to -1, which means using the
|
|
previously selected channel.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Set the video frame size. The argument must be a string in the form
|
|
<var>WIDTH</var>x<var>HEIGHT</var> or a valid size abbreviation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pixel_format</samp>’</dt>
|
|
<dd><p>Select the pixel format (only valid for raw video input).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>input_format</samp>’</dt>
|
|
<dd><p>Set the preferred pixel format (for raw video) or a codec name.
|
|
This option allows one to select the input format, when several are
|
|
available.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Set the preferred video frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_formats</samp>’</dt>
|
|
<dd><p>List available formats (supported pixel formats, codecs, and frame
|
|
sizes) and exit.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>all</samp>’</dt>
|
|
<dd><p>Show all available (compressed and non-compressed) formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>raw</samp>’</dt>
|
|
<dd><p>Show only raw video (non-compressed) formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>compressed</samp>’</dt>
|
|
<dd><p>Show only compressed formats.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>list_standards</samp>’</dt>
|
|
<dd><p>List supported standards and exit.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>all</samp>’</dt>
|
|
<dd><p>Show all supported standards.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>timestamps, ts</samp>’</dt>
|
|
<dd><p>Set type of timestamps for grabbed frames.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>default</samp>’</dt>
|
|
<dd><p>Use timestamps from the kernel.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>abs</samp>’</dt>
|
|
<dd><p>Use absolute timestamps (wall clock).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mono2abs</samp>’</dt>
|
|
<dd><p>Force conversion from monotonic to absolute timestamps.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>default</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="vfwcap"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-vfwcap">26.17 vfwcap</a></h2>
|
|
|
|
<p>VfW (Video for Windows) capture input device.
|
|
</p>
|
|
<p>The filename passed as input is the capture driver number, ranging from
|
|
0 to 9. You may use "list" as filename to print a list of drivers. Any
|
|
other filename will be interpreted as device number 0.
|
|
</p>
|
|
<a name="x11grab"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-x11grab">26.18 x11grab</a></h2>
|
|
|
|
<p>X11 video input device.
|
|
</p>
|
|
<p>This device allows one to capture a region of an X11 display.
|
|
</p>
|
|
<p>The filename passed as input has the syntax:
|
|
</p><table><tr><td> </td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
|
|
X11 display name of the screen to grab from. <var>hostname</var> can be
|
|
omitted, and defaults to "localhost". The environment variable
|
|
<code>DISPLAY</code> contains the default display name.
|
|
</p>
|
|
<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
|
|
area with respect to the top-left border of the X11 screen. They
|
|
default to 0.
|
|
</p>
|
|
<p>Check the X11 documentation (e.g. man X) for more detailed information.
|
|
</p>
|
|
<p>Use the <code>dpyinfo</code> program for getting basic information about the
|
|
properties of your X11 display (e.g. grep for "name" or "dimensions").
|
|
</p>
|
|
<p>For example to grab from ‘<tt>:0.0</tt>’ using <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Grab at position <code>10,20</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Options-5"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-5">26.18.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>draw_mouse</samp>’</dt>
|
|
<dd><p>Specify whether to draw the mouse pointer. A value of <code>0</code> specify
|
|
not to draw the pointer. Default value is <code>1</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>follow_mouse</samp>’</dt>
|
|
<dd><p>Make the grabbed area follow the mouse. The argument can be
|
|
<code>centered</code> or a number of pixels <var>PIXELS</var>.
|
|
</p>
|
|
<p>When it is specified with "centered", the grabbing region follows the mouse
|
|
pointer and keeps the pointer at the center of region; otherwise, the region
|
|
follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
|
|
zero) to the edge of region.
|
|
</p>
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>To follow only when the mouse pointer reaches within 100 pixels to edge:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Set the grabbing frame rate. Default value is <code>ntsc</code>,
|
|
corresponding to a frame rate of <code>30000/1001</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>show_region</samp>’</dt>
|
|
<dd><p>Show grabbed region on screen.
|
|
</p>
|
|
<p>If <var>show_region</var> is specified with <code>1</code>, then the grabbing
|
|
region will be indicated on screen. With this option, it is easy to
|
|
know what is being grabbed if only a portion of the screen is grabbed.
|
|
</p>
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
<p>With <var>follow_mouse</var>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Set the video frame size. Default value is <code>vga</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Output-Devices"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Output-Devices">27. Output Devices</a></h1>
|
|
|
|
<p>Output devices are configured elements in FFmpeg that can write
|
|
multimedia data to an output device attached to your system.
|
|
</p>
|
|
<p>When you configure your FFmpeg build, all the supported output devices
|
|
are enabled by default. You can list all available ones using the
|
|
configure option "–list-outdevs".
|
|
</p>
|
|
<p>You can disable all the output devices using the configure option
|
|
"–disable-outdevs", and selectively enable an output device using the
|
|
option "–enable-outdev=<var>OUTDEV</var>", or you can disable a particular
|
|
input device using the option "–disable-outdev=<var>OUTDEV</var>".
|
|
</p>
|
|
<p>The option "-formats" of the ff* tools will display the list of
|
|
enabled output devices (amongst the muxers).
|
|
</p>
|
|
<p>A description of the currently available output devices follows.
|
|
</p>
|
|
<a name="alsa"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-alsa">27.1 alsa</a></h2>
|
|
|
|
<p>ALSA (Advanced Linux Sound Architecture) output device.
|
|
</p>
|
|
<a name="Examples-32"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-32">27.1.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Play a file on default ALSA device:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f alsa default
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Play a file on soundcard 1, audio device 7:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f alsa hw:1,7
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="caca"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-caca">27.2 caca</a></h2>
|
|
|
|
<p>CACA output device.
|
|
</p>
|
|
<p>This output device allows one to show a video stream in CACA window.
|
|
Only one CACA window is allowed per application, so you can
|
|
have only one instance of this output device in an application.
|
|
</p>
|
|
<p>To enable this output device you need to configure FFmpeg with
|
|
<code>--enable-libcaca</code>.
|
|
libcaca is a graphics library that outputs text instead of pixels.
|
|
</p>
|
|
<p>For more information about libcaca, check:
|
|
<a href="http://caca.zoy.org/wiki/libcaca">http://caca.zoy.org/wiki/libcaca</a>
|
|
</p>
|
|
<a name="Options-45"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-45">27.2.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>window_title</samp>’</dt>
|
|
<dd><p>Set the CACA window title, if not specified default to the filename
|
|
specified for the output device.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>window_size</samp>’</dt>
|
|
<dd><p>Set the CACA window size, can be a string of the form
|
|
<var>width</var>x<var>height</var> or a video size abbreviation.
|
|
If not specified it defaults to the size of the input video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>driver</samp>’</dt>
|
|
<dd><p>Set display driver.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>algorithm</samp>’</dt>
|
|
<dd><p>Set dithering algorithm. Dithering is necessary
|
|
because the picture being rendered has usually far more colours than
|
|
the available palette.
|
|
The accepted values are listed with <code>-list_dither algorithms</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>antialias</samp>’</dt>
|
|
<dd><p>Set antialias method. Antialiasing smoothens the rendered
|
|
image and avoids the commonly seen staircase effect.
|
|
The accepted values are listed with <code>-list_dither antialiases</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>charset</samp>’</dt>
|
|
<dd><p>Set which characters are going to be used when rendering text.
|
|
The accepted values are listed with <code>-list_dither charsets</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color</samp>’</dt>
|
|
<dd><p>Set color to be used when rendering text.
|
|
The accepted values are listed with <code>-list_dither colors</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_drivers</samp>’</dt>
|
|
<dd><p>If set to ‘<samp>true</samp>’, print a list of available drivers and exit.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_dither</samp>’</dt>
|
|
<dd><p>List available dither options related to the argument.
|
|
The argument must be one of <code>algorithms</code>, <code>antialiases</code>,
|
|
<code>charsets</code>, <code>colors</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-31"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-31">27.2.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
The following command shows the <code>ffmpeg</code> output is an
|
|
CACA window, forcing its size to 80x25:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Show the list of available drivers and exit:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Show the list of available dither colors and exit:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="decklink"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-decklink">27.3 decklink</a></h2>
|
|
|
|
<p>The decklink output device provides playback capabilities for Blackmagic
|
|
DeckLink devices.
|
|
</p>
|
|
<p>To enable this output device, you need the Blackmagic DeckLink SDK and you
|
|
need to configure with the appropriate <code>--extra-cflags</code>
|
|
and <code>--extra-ldflags</code>.
|
|
On Windows, you need to run the IDL files through <code>widl</code>.
|
|
</p>
|
|
<p>DeckLink is very picky about the formats it supports. Pixel format is always
|
|
uyvy422, framerate and video size must be determined for your device with
|
|
<code>-list_formats 1</code>. Audio sample rate is always 48 kHz.
|
|
</p>
|
|
<a name="Options-10"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-10">27.3.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>list_devices</samp>’</dt>
|
|
<dd><p>If set to ‘<samp>true</samp>’, print a list of devices and exit.
|
|
Defaults to ‘<samp>false</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>list_formats</samp>’</dt>
|
|
<dd><p>If set to ‘<samp>true</samp>’, print a list of supported formats and exit.
|
|
Defaults to ‘<samp>false</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>preroll</samp>’</dt>
|
|
<dd><p>Amount of time to preroll video in seconds.
|
|
Defaults to ‘<samp>0.5</samp>’.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-5"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-5">27.3.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
List output devices:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i test.avi -f decklink -list_devices 1 dummy
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
List supported formats:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Play video clip:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Play video clip with non-standard framerate or video size:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="fbdev"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fbdev">27.4 fbdev</a></h2>
|
|
|
|
<p>Linux framebuffer output device.
|
|
</p>
|
|
<p>The Linux framebuffer is a graphic hardware-independent abstraction
|
|
layer to show graphics on a computer monitor, typically on the
|
|
console. It is accessed through a file device node, usually
|
|
‘<tt>/dev/fb0</tt>’.
|
|
</p>
|
|
<p>For more detailed information read the file
|
|
‘<tt>Documentation/fb/framebuffer.txt</tt>’ included in the Linux source tree.
|
|
</p>
|
|
<a name="Options-41"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-41">27.4.1 Options</a></h3>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>xoffset</samp>’</dt>
|
|
<dt> ‘<samp>yoffset</samp>’</dt>
|
|
<dd><p>Set x/y coordinate of top left corner. Default is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-12"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-12">27.4.2 Examples</a></h3>
|
|
<p>Play a file on framebuffer device ‘<tt>/dev/fb0</tt>’.
|
|
Required pixel format depends on current framebuffer settings.
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -re -i INPUT -vcodec rawvideo -pix_fmt bgra -f fbdev /dev/fb0
|
|
</pre></td></tr></table>
|
|
|
|
<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
|
|
</p>
|
|
<a name="opengl"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-opengl">27.5 opengl</a></h2>
|
|
<p>OpenGL output device.
|
|
</p>
|
|
<p>To enable this output device you need to configure FFmpeg with <code>--enable-opengl</code>.
|
|
</p>
|
|
<p>This output device allows one to render to OpenGL context.
|
|
Context may be provided by application or default SDL window is created.
|
|
</p>
|
|
<p>When device renders to external context, application must implement handlers for following messages:
|
|
<code>AV_CTL_MESSAGE_CREATE_WINDOW_BUFFER</code> - create OpenGL context on current thread.
|
|
<code>AV_CTL_MESSAGE_PREPARE_WINDOW_BUFFER</code> - make OpenGL context current.
|
|
<code>AV_CTL_MESSAGE_DISPLAY_WINDOW_BUFFER</code> - swap buffers.
|
|
<code>AV_CTL_MESSAGE_DESTROY_WINDOW_BUFFER</code> - destroy OpenGL context.
|
|
Application is also required to inform a device about current resolution by sending <code>AV_DEVICE_WINDOW_RESIZED</code> message.
|
|
</p>
|
|
<a name="Options-25"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-25">27.5.1 Options</a></h3>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>background</samp>’</dt>
|
|
<dd><p>Set background color. Black is a default.
|
|
</p></dd>
|
|
<dt> ‘<samp>no_window</samp>’</dt>
|
|
<dd><p>Disables default SDL window when set to non-zero value.
|
|
Application must provide OpenGL context and both <code>window_size_cb</code> and <code>window_swap_buffers_cb</code> callbacks when set.
|
|
</p></dd>
|
|
<dt> ‘<samp>window_title</samp>’</dt>
|
|
<dd><p>Set the SDL window title, if not specified default to the filename specified for the output device.
|
|
Ignored when ‘<samp>no_window</samp>’ is set.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-46"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-46">27.5.2 Examples</a></h3>
|
|
<p>Play a file on SDL window using OpenGL rendering:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f opengl "window title"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="oss-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-oss-1">27.6 oss</a></h2>
|
|
|
|
<p>OSS (Open Sound System) output device.
|
|
</p>
|
|
<a name="pulse-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pulse-1">27.7 pulse</a></h2>
|
|
|
|
<p>PulseAudio output device.
|
|
</p>
|
|
<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
|
|
</p>
|
|
<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>
|
|
</p>
|
|
<a name="Options-17"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-17">27.7.1 Options</a></h3>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>server</samp>’</dt>
|
|
<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
|
|
Default server is used when not provided.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>name</samp>’</dt>
|
|
<dd><p>Specify the application name PulseAudio will use when showing active clients,
|
|
by default it is the <code>LIBAVFORMAT_IDENT</code> string.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stream_name</samp>’</dt>
|
|
<dd><p>Specify the stream name PulseAudio will use when showing active streams,
|
|
by default it is set to the specified output name.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>device</samp>’</dt>
|
|
<dd><p>Specify the device to use. Default device is used when not provided.
|
|
List of output devices can be obtained with command <code>pactl list sinks</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>buffer_size</samp>’</dt>
|
|
<dt> ‘<samp>buffer_duration</samp>’</dt>
|
|
<dd><p>Control the size and duration of the PulseAudio buffer. A small buffer
|
|
gives more control, but requires more frequent updates.
|
|
</p>
|
|
<p>‘<samp>buffer_size</samp>’ specifies size in bytes while
|
|
‘<samp>buffer_duration</samp>’ specifies duration in milliseconds.
|
|
</p>
|
|
<p>When both options are provided then the highest value is used
|
|
(duration is recalculated to bytes using stream parameters). If they
|
|
are set to 0 (which is default), the device will use the default
|
|
PulseAudio duration value. By default PulseAudio set buffer duration
|
|
to around 2 seconds.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-74"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-74">27.7.2 Examples</a></h3>
|
|
<p>Play a file on default device on default server:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f pulse "stream name"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="sdl"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sdl">27.8 sdl</a></h2>
|
|
|
|
<p>SDL (Simple DirectMedia Layer) output device.
|
|
</p>
|
|
<p>This output device allows one to show a video stream in an SDL
|
|
window. Only one SDL window is allowed per application, so you can
|
|
have only one instance of this output device in an application.
|
|
</p>
|
|
<p>To enable this output device you need libsdl installed on your system
|
|
when configuring your build.
|
|
</p>
|
|
<p>For more information about SDL, check:
|
|
<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
|
|
</p>
|
|
<a name="Options-40"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-40">27.8.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>window_title</samp>’</dt>
|
|
<dd><p>Set the SDL window title, if not specified default to the filename
|
|
specified for the output device.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>icon_title</samp>’</dt>
|
|
<dd><p>Set the name of the iconified SDL window, if not specified it is set
|
|
to the same value of <var>window_title</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>window_size</samp>’</dt>
|
|
<dd><p>Set the SDL window size, can be a string of the form
|
|
<var>width</var>x<var>height</var> or a video size abbreviation.
|
|
If not specified it defaults to the size of the input video,
|
|
downscaled according to the aspect ratio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>window_fullscreen</samp>’</dt>
|
|
<dd><p>Set fullscreen mode when non-zero value is provided.
|
|
Default value is zero.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Interactive-commands"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Interactive-commands">27.8.2 Interactive commands</a></h3>
|
|
|
|
<p>The window created by the device can be controlled through the
|
|
following interactive commands.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> <q, ESC></dt>
|
|
<dd><p>Quit the device immediately.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-89"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-89">27.8.3 Examples</a></h3>
|
|
|
|
<p>The following command shows the <code>ffmpeg</code> output is an
|
|
SDL window, forcing its size to the qcif format:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL output"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="sndio"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sndio">27.9 sndio</a></h2>
|
|
|
|
<p>sndio audio output device.
|
|
</p>
|
|
<a name="xv"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-xv">27.10 xv</a></h2>
|
|
|
|
<p>XV (XVideo) output device.
|
|
</p>
|
|
<p>This output device allows one to show a video stream in a X Window System
|
|
window.
|
|
</p>
|
|
<a name="Options-21"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-21">27.10.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>display_name</samp>’</dt>
|
|
<dd><p>Specify the hardware display name, which determines the display and
|
|
communications domain to be used.
|
|
</p>
|
|
<p>The display name or DISPLAY environment variable can be a string in
|
|
the format <var>hostname</var>[:<var>number</var>[.<var>screen_number</var>]].
|
|
</p>
|
|
<p><var>hostname</var> specifies the name of the host machine on which the
|
|
display is physically attached. <var>number</var> specifies the number of
|
|
the display server on that host machine. <var>screen_number</var> specifies
|
|
the screen to be used on that server.
|
|
</p>
|
|
<p>If unspecified, it defaults to the value of the DISPLAY environment
|
|
variable.
|
|
</p>
|
|
<p>For example, <code>dual-headed:0.1</code> would specify screen 1 of display
|
|
0 on the machine named “dual-headed”.
|
|
</p>
|
|
<p>Check the X11 specification for more detailed information about the
|
|
display name format.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>window_size</samp>’</dt>
|
|
<dd><p>Set the created window size, can be a string of the form
|
|
<var>width</var>x<var>height</var> or a video size abbreviation. If not
|
|
specified it defaults to the size of the input video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>window_x</samp>’</dt>
|
|
<dt> ‘<samp>window_y</samp>’</dt>
|
|
<dd><p>Set the X and Y window offsets for the created window. They are both
|
|
set to 0 by default. The values may be ignored by the window manager.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>window_title</samp>’</dt>
|
|
<dd><p>Set the window title, if not specified default to the filename
|
|
specified for the output device.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For more information about XVideo see <a href="http://www.x.org/">http://www.x.org/</a>.
|
|
</p>
|
|
<a name="Examples-56"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-56">27.10.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Decode, display and encode video input with <code>ffmpeg</code> at the
|
|
same time:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT OUTPUT -f xv display
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Decode and display the input video to multiple X11 windows:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="Resampler-Options"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Resampler-Options">28. Resampler Options</a></h1>
|
|
|
|
<p>The audio resampler supports the following named options.
|
|
</p>
|
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
|
FFmpeg tools, <var>option</var>=<var>value</var> for the aresample filter,
|
|
by setting the value explicitly in the
|
|
<code>SwrContext</code> options or using the ‘<tt>libavutil/opt.h</tt>’ API for
|
|
programmatic use.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>ich, in_channel_count</samp>’</dt>
|
|
<dd><p>Set the number of input channels. Default value is 0. Setting this
|
|
value is not mandatory if the corresponding channel layout
|
|
‘<samp>in_channel_layout</samp>’ is set.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>och, out_channel_count</samp>’</dt>
|
|
<dd><p>Set the number of output channels. Default value is 0. Setting this
|
|
value is not mandatory if the corresponding channel layout
|
|
‘<samp>out_channel_layout</samp>’ is set.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>uch, used_channel_count</samp>’</dt>
|
|
<dd><p>Set the number of used input channels. Default value is 0. This option is
|
|
only used for special remapping.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>isr, in_sample_rate</samp>’</dt>
|
|
<dd><p>Set the input sample rate. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>osr, out_sample_rate</samp>’</dt>
|
|
<dd><p>Set the output sample rate. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>isf, in_sample_fmt</samp>’</dt>
|
|
<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>osf, out_sample_fmt</samp>’</dt>
|
|
<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tsf, internal_sample_fmt</samp>’</dt>
|
|
<dd><p>Set the internal sample format. Default value is <code>none</code>.
|
|
This will automatically be chosen when it is not explicitly set.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>icl, in_channel_layout</samp>’</dt>
|
|
<dt> ‘<samp>ocl, out_channel_layout</samp>’</dt>
|
|
<dd><p>Set the input/output channel layout.
|
|
</p>
|
|
<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
|
|
for the required syntax.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>clev, center_mix_level</samp>’</dt>
|
|
<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
|
|
in the interval [-32,32].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>slev, surround_mix_level</samp>’</dt>
|
|
<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
|
|
be in the interval [-32,32].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lfe_mix_level</samp>’</dt>
|
|
<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
|
|
LFE output. It is a value expressed in deciBel, and must
|
|
be in the interval [-32,32].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rmvol, rematrix_volume</samp>’</dt>
|
|
<dd><p>Set rematrix volume. Default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rematrix_maxval</samp>’</dt>
|
|
<dd><p>Set maximum output value for rematrixing.
|
|
This can be used to prevent clipping vs. preventing volumn reduction
|
|
A value of 1.0 prevents cliping.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags, swr_flags</samp>’</dt>
|
|
<dd><p>Set flags used by the converter. Default value is 0.
|
|
</p>
|
|
<p>It supports the following individual flags:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>res</samp>’</dt>
|
|
<dd><p>force resampling, this flag forces resampling to be used even when the
|
|
input and output sample rates match.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>dither_scale</samp>’</dt>
|
|
<dd><p>Set the dither scale. Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dither_method</samp>’</dt>
|
|
<dd><p>Set dither method. Default value is 0.
|
|
</p>
|
|
<p>Supported values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>rectangular</samp>’</dt>
|
|
<dd><p>select rectangular dither
|
|
</p></dd>
|
|
<dt> ‘<samp>triangular</samp>’</dt>
|
|
<dd><p>select triangular dither
|
|
</p></dd>
|
|
<dt> ‘<samp>triangular_hp</samp>’</dt>
|
|
<dd><p>select triangular dither with high pass
|
|
</p></dd>
|
|
<dt> ‘<samp>lipshitz</samp>’</dt>
|
|
<dd><p>select lipshitz noise shaping dither
|
|
</p></dd>
|
|
<dt> ‘<samp>shibata</samp>’</dt>
|
|
<dd><p>select shibata noise shaping dither
|
|
</p></dd>
|
|
<dt> ‘<samp>low_shibata</samp>’</dt>
|
|
<dd><p>select low shibata noise shaping dither
|
|
</p></dd>
|
|
<dt> ‘<samp>high_shibata</samp>’</dt>
|
|
<dd><p>select high shibata noise shaping dither
|
|
</p></dd>
|
|
<dt> ‘<samp>f_weighted</samp>’</dt>
|
|
<dd><p>select f-weighted noise shaping dither
|
|
</p></dd>
|
|
<dt> ‘<samp>modified_e_weighted</samp>’</dt>
|
|
<dd><p>select modified-e-weighted noise shaping dither
|
|
</p></dd>
|
|
<dt> ‘<samp>improved_e_weighted</samp>’</dt>
|
|
<dd><p>select improved-e-weighted noise shaping dither
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>resampler</samp>’</dt>
|
|
<dd><p>Set resampling engine. Default value is swr.
|
|
</p>
|
|
<p>Supported values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>swr</samp>’</dt>
|
|
<dd><p>select the native SW Resampler; filter options precision and cheby are not
|
|
applicable in this case.
|
|
</p></dd>
|
|
<dt> ‘<samp>soxr</samp>’</dt>
|
|
<dd><p>select the SoX Resampler (where available); compensation, and filter options
|
|
filter_size, phase_shift, filter_type & kaiser_beta, are not applicable in this
|
|
case.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>filter_size</samp>’</dt>
|
|
<dd><p>For swr only, set resampling filter size, default value is 32.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>phase_shift</samp>’</dt>
|
|
<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
|
|
the interval [0,30].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>linear_interp</samp>’</dt>
|
|
<dd><p>Use Linear Interpolation if set to 1, default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cutoff</samp>’</dt>
|
|
<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
|
|
value between 0 and 1. Default value is 0.97 with swr, and 0.91 with soxr
|
|
(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>precision</samp>’</dt>
|
|
<dd><p>For soxr only, the precision in bits to which the resampled signal will be
|
|
calculated. The default value of 20 (which, with suitable dithering, is
|
|
appropriate for a destination bit-depth of 16) gives SoX’s ’High Quality’; a
|
|
value of 28 gives SoX’s ’Very High Quality’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cheby</samp>’</dt>
|
|
<dd><p>For soxr only, selects passband rolloff none (Chebyshev) & higher-precision
|
|
approximation for ’irrational’ ratios. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>async</samp>’</dt>
|
|
<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
|
|
squeezing, filling and trimming. Setting this to 1 will enable filling and
|
|
trimming, larger values represent the maximum amount in samples that the data
|
|
may be stretched or squeezed for each second.
|
|
Default value is 0, thus no compensation is applied to make the samples match
|
|
the audio timestamps.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>first_pts</samp>’</dt>
|
|
<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
|
|
This allows for padding/trimming at the start of stream. By default, no
|
|
assumption is made about the first frame’s expected pts, so no padding or
|
|
trimming is done. For example, this could be set to 0 to pad the beginning with
|
|
silence if an audio stream starts after the video stream or to trim any samples
|
|
with a negative pts due to encoder delay.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>min_comp</samp>’</dt>
|
|
<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
|
|
seconds) to trigger stretching/squeezing/filling or trimming of the
|
|
data to make it match the timestamps. The default is that
|
|
stretching/squeezing/filling and trimming is disabled
|
|
(‘<samp>min_comp</samp>’ = <code>FLT_MAX</code>).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>min_hard_comp</samp>’</dt>
|
|
<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
|
|
seconds) to trigger adding/dropping samples to make it match the
|
|
timestamps. This option effectively is a threshold to select between
|
|
hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
|
|
all compensation is by default disabled through ‘<samp>min_comp</samp>’.
|
|
The default is 0.1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>comp_duration</samp>’</dt>
|
|
<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
|
|
to make it match the timestamps. Must be a non-negative double float value,
|
|
default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_soft_comp</samp>’</dt>
|
|
<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
|
|
match the timestamps. Must be a non-negative double float value, default value
|
|
is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>matrix_encoding</samp>’</dt>
|
|
<dd><p>Select matrixed stereo encoding.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>select none
|
|
</p></dd>
|
|
<dt> ‘<samp>dolby</samp>’</dt>
|
|
<dd><p>select Dolby
|
|
</p></dd>
|
|
<dt> ‘<samp>dplii</samp>’</dt>
|
|
<dd><p>select Dolby Pro Logic II
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>none</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filter_type</samp>’</dt>
|
|
<dd><p>For swr only, select resampling filter type. This only affects resampling
|
|
operations.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>cubic</samp>’</dt>
|
|
<dd><p>select cubic
|
|
</p></dd>
|
|
<dt> ‘<samp>blackman_nuttall</samp>’</dt>
|
|
<dd><p>select Blackman Nuttall Windowed Sinc
|
|
</p></dd>
|
|
<dt> ‘<samp>kaiser</samp>’</dt>
|
|
<dd><p>select Kaiser Windowed Sinc
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>kaiser_beta</samp>’</dt>
|
|
<dd><p>For swr only, set Kaiser Window Beta value. Must be an integer in the
|
|
interval [2,16], default value is 9.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>output_sample_bits</samp>’</dt>
|
|
<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
|
|
interval [0,64], default value is 0, which means it’s not used.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="scaler_005foptions"></a>
|
|
</p><a name="Scaler-Options"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Scaler-Options">29. Scaler Options</a></h1>
|
|
|
|
<p>The video scaler supports the following named options.
|
|
</p>
|
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
|
FFmpeg tools. For programmatic use, they can be set explicitly in the
|
|
<code>SwsContext</code> options or through the ‘<tt>libavutil/opt.h</tt>’ API.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dd>
|
|
<p><a name="sws_005fflags"></a>
|
|
</p></dd>
|
|
<dt> ‘<samp>sws_flags</samp>’</dt>
|
|
<dd><p>Set the scaler flags. This is also used to set the scaling
|
|
algorithm. Only a single algorithm should be selected.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>fast_bilinear</samp>’</dt>
|
|
<dd><p>Select fast bilinear scaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bilinear</samp>’</dt>
|
|
<dd><p>Select bilinear scaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bicubic</samp>’</dt>
|
|
<dd><p>Select bicubic scaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>experimental</samp>’</dt>
|
|
<dd><p>Select experimental scaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>neighbor</samp>’</dt>
|
|
<dd><p>Select nearest neighbor rescaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>area</samp>’</dt>
|
|
<dd><p>Select averaging area rescaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bicublin</samp>’</dt>
|
|
<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
|
|
chroma components.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gauss</samp>’</dt>
|
|
<dd><p>Select Gaussian rescaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sinc</samp>’</dt>
|
|
<dd><p>Select sinc rescaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lanczos</samp>’</dt>
|
|
<dd><p>Select lanczos rescaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>spline</samp>’</dt>
|
|
<dd><p>Select natural bicubic spline rescaling algorithm.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>print_info</samp>’</dt>
|
|
<dd><p>Enable printing/debug logging.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>accurate_rnd</samp>’</dt>
|
|
<dd><p>Enable accurate rounding.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>full_chroma_int</samp>’</dt>
|
|
<dd><p>Enable full chroma interpolation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>full_chroma_inp</samp>’</dt>
|
|
<dd><p>Select full chroma input.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bitexact</samp>’</dt>
|
|
<dd><p>Enable bitexact output.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>srcw</samp>’</dt>
|
|
<dd><p>Set source width.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>srch</samp>’</dt>
|
|
<dd><p>Set source height.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dstw</samp>’</dt>
|
|
<dd><p>Set destination width.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dsth</samp>’</dt>
|
|
<dd><p>Set destination height.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>src_format</samp>’</dt>
|
|
<dd><p>Set source pixel format (must be expressed as an integer).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dst_format</samp>’</dt>
|
|
<dd><p>Set destination pixel format (must be expressed as an integer).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>src_range</samp>’</dt>
|
|
<dd><p>Select source range.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dst_range</samp>’</dt>
|
|
<dd><p>Select destination range.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>param0, param1</samp>’</dt>
|
|
<dd><p>Set scaling algorithm parameters. The specified values are specific of
|
|
some scaling algorithms and ignored by others. The specified values
|
|
are floating point number values.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sws_dither</samp>’</dt>
|
|
<dd><p>Set the dithering algorithm. Accepts one of the following
|
|
values. Default value is ‘<samp>auto</samp>’.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>automatic choice
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>no dithering
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bayer</samp>’</dt>
|
|
<dd><p>bayer dither
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ed</samp>’</dt>
|
|
<dd><p>error diffusion dither
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>a_dither</samp>’</dt>
|
|
<dd><p>arithmetic dither, based using addition
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x_dither</samp>’</dt>
|
|
<dd><p>arithmetic dither, based using xor (more random/less apparent patterning that
|
|
a_dither).
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Filtering-Introduction"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Filtering-Introduction">30. Filtering Introduction</a></h1>
|
|
|
|
<p>Filtering in FFmpeg is enabled through the libavfilter library.
|
|
</p>
|
|
<p>In libavfilter, a filter can have multiple inputs and multiple
|
|
outputs.
|
|
To illustrate the sorts of things that are possible, we consider the
|
|
following filtergraph.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> [main]
|
|
input --> split ---------------------> overlay --> output
|
|
| ^
|
|
|[tmp] [flip]|
|
|
+-----> crop --> vflip -------+
|
|
</pre></td></tr></table>
|
|
|
|
<p>This filtergraph splits the input stream in two streams, sends one
|
|
stream through the crop filter and the vflip filter before merging it
|
|
back with the other stream by overlaying it on top. You can use the
|
|
following command to achieve this:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>The result will be that in output the top half of the video is mirrored
|
|
onto the bottom half.
|
|
</p>
|
|
<p>Filters in the same linear chain are separated by commas, and distinct
|
|
linear chains of filters are separated by semicolons. In our example,
|
|
<var>crop,vflip</var> are in one linear chain, <var>split</var> and
|
|
<var>overlay</var> are separately in another. The points where the linear
|
|
chains join are labelled by names enclosed in square brackets. In the
|
|
example, the split filter generates two outputs that are associated to
|
|
the labels <var>[main]</var> and <var>[tmp]</var>.
|
|
</p>
|
|
<p>The stream sent to the second output of <var>split</var>, labelled as
|
|
<var>[tmp]</var>, is processed through the <var>crop</var> filter, which crops
|
|
away the lower half part of the video, and then vertically flipped. The
|
|
<var>overlay</var> filter takes in input the first unchanged output of the
|
|
split filter (which was labelled as <var>[main]</var>), and overlay on its
|
|
lower half the output generated by the <var>crop,vflip</var> filterchain.
|
|
</p>
|
|
<p>Some filters take in input a list of parameters: they are specified
|
|
after the filter name and an equal sign, and are separated from each other
|
|
by a colon.
|
|
</p>
|
|
<p>There exist so-called <var>source filters</var> that do not have an
|
|
audio/video input, and <var>sink filters</var> that will not have audio/video
|
|
output.
|
|
</p>
|
|
|
|
<a name="graph2dot"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-graph2dot">31. graph2dot</a></h1>
|
|
|
|
<p>The ‘<tt>graph2dot</tt>’ program included in the FFmpeg ‘<tt>tools</tt>’
|
|
directory can be used to parse a filtergraph description and issue a
|
|
corresponding textual representation in the dot language.
|
|
</p>
|
|
<p>Invoke the command:
|
|
</p><table><tr><td> </td><td><pre class="example">graph2dot -h
|
|
</pre></td></tr></table>
|
|
|
|
<p>to see how to use ‘<tt>graph2dot</tt>’.
|
|
</p>
|
|
<p>You can then pass the dot description to the ‘<tt>dot</tt>’ program (from
|
|
the graphviz suite of programs) and obtain a graphical representation
|
|
of the filtergraph.
|
|
</p>
|
|
<p>For example the sequence of commands:
|
|
</p><table><tr><td> </td><td><pre class="example">echo <var>GRAPH_DESCRIPTION</var> | \
|
|
tools/graph2dot -o graph.tmp && \
|
|
dot -Tpng graph.tmp -o graph.png && \
|
|
display graph.png
|
|
</pre></td></tr></table>
|
|
|
|
<p>can be used to create and display an image representing the graph
|
|
described by the <var>GRAPH_DESCRIPTION</var> string. Note that this string must be
|
|
a complete self-contained graph, with its inputs and outputs explicitly defined.
|
|
For example if your command line is of the form:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i infile -vf scale=640:360 outfile
|
|
</pre></td></tr></table>
|
|
<p>your <var>GRAPH_DESCRIPTION</var> string will need to be of the form:
|
|
</p><table><tr><td> </td><td><pre class="example">nullsrc,scale=640:360,nullsink
|
|
</pre></td></tr></table>
|
|
<p>you may also need to set the <var>nullsrc</var> parameters and add a <var>format</var>
|
|
filter in order to simulate a specific input file.
|
|
</p>
|
|
|
|
<a name="Filtergraph-description"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Filtergraph-description">32. Filtergraph description</a></h1>
|
|
|
|
<p>A filtergraph is a directed graph of connected filters. It can contain
|
|
cycles, and there can be multiple links between a pair of
|
|
filters. Each link has one input pad on one side connecting it to one
|
|
filter from which it takes its input, and one output pad on the other
|
|
side connecting it to the one filter accepting its output.
|
|
</p>
|
|
<p>Each filter in a filtergraph is an instance of a filter class
|
|
registered in the application, which defines the features and the
|
|
number of input and output pads of the filter.
|
|
</p>
|
|
<p>A filter with no input pads is called a "source", a filter with no
|
|
output pads is called a "sink".
|
|
</p>
|
|
<p><a name="Filtergraph-syntax"></a>
|
|
</p><a name="Filtergraph-syntax-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Filtergraph-syntax-1">32.1 Filtergraph syntax</a></h2>
|
|
|
|
<p>A filtergraph can be represented using a textual representation, which is
|
|
recognized by the ‘<samp>-filter</samp>’/‘<samp>-vf</samp>’ and ‘<samp>-filter_complex</samp>’
|
|
options in <code>ffmpeg</code> and ‘<samp>-vf</samp>’ in <code>ffplay</code>, and by the
|
|
<code>avfilter_graph_parse()</code>/<code>avfilter_graph_parse2()</code> function defined in
|
|
‘<tt>libavfilter/avfilter.h</tt>’.
|
|
</p>
|
|
<p>A filterchain consists of a sequence of connected filters, each one
|
|
connected to the previous one in the sequence. A filterchain is
|
|
represented by a list of ","-separated filter descriptions.
|
|
</p>
|
|
<p>A filtergraph consists of a sequence of filterchains. A sequence of
|
|
filterchains is represented by a list of ";"-separated filterchain
|
|
descriptions.
|
|
</p>
|
|
<p>A filter is represented by a string of the form:
|
|
[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
|
|
</p>
|
|
<p><var>filter_name</var> is the name of the filter class of which the
|
|
described filter is an instance of, and has to be the name of one of
|
|
the filter classes registered in the program.
|
|
The name of the filter class is optionally followed by a string
|
|
"=<var>arguments</var>".
|
|
</p>
|
|
<p><var>arguments</var> is a string which contains the parameters used to
|
|
initialize the filter instance. It may have one of the following forms:
|
|
</p><ul>
|
|
<li>
|
|
A ’:’-separated list of <var>key=value</var> pairs.
|
|
|
|
</li><li>
|
|
A ’:’-separated list of <var>value</var>. In this case, the keys are assumed to be
|
|
the option names in the order they are declared. E.g. the <code>fade</code> filter
|
|
declares three options in this order – ‘<samp>type</samp>’, ‘<samp>start_frame</samp>’ and
|
|
‘<samp>nb_frames</samp>’. Then the parameter list <var>in:0:30</var> means that the value
|
|
<var>in</var> is assigned to the option ‘<samp>type</samp>’, <var>0</var> to
|
|
‘<samp>start_frame</samp>’ and <var>30</var> to ‘<samp>nb_frames</samp>’.
|
|
|
|
</li><li>
|
|
A ’:’-separated list of mixed direct <var>value</var> and long <var>key=value</var>
|
|
pairs. The direct <var>value</var> must precede the <var>key=value</var> pairs, and
|
|
follow the same constraints order of the previous point. The following
|
|
<var>key=value</var> pairs can be set in any preferred order.
|
|
|
|
</li></ul>
|
|
|
|
<p>If the option value itself is a list of items (e.g. the <code>format</code> filter
|
|
takes a list of pixel formats), the items in the list are usually separated by
|
|
’|’.
|
|
</p>
|
|
<p>The list of arguments can be quoted using the character "’" as initial
|
|
and ending mark, and the character ’\’ for escaping the characters
|
|
within the quoted text; otherwise the argument string is considered
|
|
terminated when the next special character (belonging to the set
|
|
"[]=;,") is encountered.
|
|
</p>
|
|
<p>The name and arguments of the filter are optionally preceded and
|
|
followed by a list of link labels.
|
|
A link label allows one to name a link and associate it to a filter output
|
|
or input pad. The preceding labels <var>in_link_1</var>
|
|
... <var>in_link_N</var>, are associated to the filter input pads,
|
|
the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
|
|
associated to the output pads.
|
|
</p>
|
|
<p>When two link labels with the same name are found in the
|
|
filtergraph, a link between the corresponding input and output pad is
|
|
created.
|
|
</p>
|
|
<p>If an output pad is not labelled, it is linked by default to the first
|
|
unlabelled input pad of the next filter in the filterchain.
|
|
For example in the filterchain:
|
|
</p><table><tr><td> </td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
|
|
</pre></td></tr></table>
|
|
<p>the split filter instance has two output pads, and the overlay filter
|
|
instance two input pads. The first output pad of split is labelled
|
|
"L1", the first input pad of overlay is labelled "L2", and the second
|
|
output pad of split is linked to the second input pad of overlay,
|
|
which are both unlabelled.
|
|
</p>
|
|
<p>In a complete filterchain all the unlabelled filter input and output
|
|
pads must be connected. A filtergraph is considered valid if all the
|
|
filter input and output pads of all the filterchains are connected.
|
|
</p>
|
|
<p>Libavfilter will automatically insert <a href="#scale">scale</a> filters where format
|
|
conversion is required. It is possible to specify swscale flags
|
|
for those automatically inserted scalers by prepending
|
|
<code>sws_flags=<var>flags</var>;</code>
|
|
to the filtergraph description.
|
|
</p>
|
|
<p>Follows a BNF description for the filtergraph syntax:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>NAME</var> ::= sequence of alphanumeric characters and '_'
|
|
<var>LINKLABEL</var> ::= "[" <var>NAME</var> "]"
|
|
<var>LINKLABELS</var> ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
|
|
<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
|
|
<var>FILTER</var> ::= [<var>LINKLABELS</var>] <var>NAME</var> ["=" <var>FILTER_ARGUMENTS</var>] [<var>LINKLABELS</var>]
|
|
<var>FILTERCHAIN</var> ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
|
|
<var>FILTERGRAPH</var> ::= [sws_flags=<var>flags</var>;] <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Notes-on-filtergraph-escaping"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-Notes-on-filtergraph-escaping">32.2 Notes on filtergraph escaping</a></h2>
|
|
|
|
<p>Filtergraph description composition entails several levels of
|
|
escaping. See <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a> for more
|
|
information about the employed escaping procedure.
|
|
</p>
|
|
<p>A first level escaping affects the content of each filter option
|
|
value, which may contain the special character <code>:</code> used to
|
|
separate values, or one of the escaping characters <code>\'</code>.
|
|
</p>
|
|
<p>A second level escaping affects the whole filter description, which
|
|
may contain the escaping characters <code>\'</code> or the special
|
|
characters <code>[],;</code> used by the filtergraph description.
|
|
</p>
|
|
<p>Finally, when you specify a filtergraph on a shell commandline, you
|
|
need to perform a third level escaping for the shell special
|
|
characters contained within it.
|
|
</p>
|
|
<p>For example, consider the following string to be embedded in
|
|
the <a href="#drawtext">drawtext</a> filter description ‘<samp>text</samp>’ value:
|
|
</p><table><tr><td> </td><td><pre class="example">this is a 'string': may contain one, or more, special characters
|
|
</pre></td></tr></table>
|
|
|
|
<p>This string contains the <code>'</code> special escaping character, and the
|
|
<code>:</code> special character, so it needs to be escaped in this way:
|
|
</p><table><tr><td> </td><td><pre class="example">text=this is a \'string\'\: may contain one, or more, special characters
|
|
</pre></td></tr></table>
|
|
|
|
<p>A second level of escaping is required when embedding the filter
|
|
description in a filtergraph description, in order to escape all the
|
|
filtergraph special characters. Thus the example above becomes:
|
|
</p><table><tr><td> </td><td><pre class="example">drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
|
|
</pre></td></tr></table>
|
|
<p>(note that in addition to the <code>\'</code> escaping special characters,
|
|
also <code>,</code> needs to be escaped).
|
|
</p>
|
|
<p>Finally an additional level of escaping is needed when writing the
|
|
filtergraph description in a shell command, which depends on the
|
|
escaping rules of the adopted shell. For example, assuming that
|
|
<code>\</code> is special and needs to be escaped with another <code>\</code>, the
|
|
previous string will finally result in:
|
|
</p><table><tr><td> </td><td><pre class="example">-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Timeline-editing"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Timeline-editing">33. Timeline editing</a></h1>
|
|
|
|
<p>Some filters support a generic ‘<samp>enable</samp>’ option. For the filters
|
|
supporting timeline editing, this option can be set to an expression which is
|
|
evaluated before sending a frame to the filter. If the evaluation is non-zero,
|
|
the filter will be enabled, otherwise the frame will be sent unchanged to the
|
|
next filter in the filtergraph.
|
|
</p>
|
|
<p>The expression accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>sequential number of the input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>the position in the file of the input frame, NAN if unknown
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Additionally, these filters support an ‘<samp>enable</samp>’ command that can be used
|
|
to re-define the expression.
|
|
</p>
|
|
<p>Like any other filtering option, the ‘<samp>enable</samp>’ option follows the same
|
|
rules.
|
|
</p>
|
|
<p>For example, to enable a blur filter (<a href="#smartblur">smartblur</a>) from 10 seconds to 3
|
|
minutes, and a <a href="#curves">curves</a> filter starting at 3 seconds:
|
|
</p><table><tr><td> </td><td><pre class="example">smartblur = enable='between(t,10,3*60)',
|
|
curves = enable='gte(t,3)' : preset=cross_process
|
|
</pre></td></tr></table>
|
|
|
|
|
|
<a name="Audio-Filters"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Filters">34. Audio Filters</a></h1>
|
|
|
|
<p>When you configure your FFmpeg build, you can disable any of the
|
|
existing filters using <code>--disable-filters</code>.
|
|
The configure output will show the audio filters included in your
|
|
build.
|
|
</p>
|
|
<p>Below is a description of the currently available audio filters.
|
|
</p>
|
|
<a name="aconvert"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aconvert">34.1 aconvert</a></h2>
|
|
|
|
<p>Convert the input audio format to the specified formats.
|
|
</p>
|
|
<p><em>This filter is deprecated. Use <a href="#aformat">aformat</a> instead.</em>
|
|
</p>
|
|
<p>The filter accepts a string of the form:
|
|
"<var>sample_format</var>:<var>channel_layout</var>".
|
|
</p>
|
|
<p><var>sample_format</var> specifies the sample format, and can be a string or the
|
|
corresponding numeric value defined in ‘<tt>libavutil/samplefmt.h</tt>’. Use ’p’
|
|
suffix for a planar sample format.
|
|
</p>
|
|
<p><var>channel_layout</var> specifies the channel layout, and can be a string
|
|
or the corresponding number value defined in ‘<tt>libavutil/channel_layout.h</tt>’.
|
|
</p>
|
|
<p>The special parameter "auto", signifies that the filter will
|
|
automatically select the output format depending on the output filter.
|
|
</p>
|
|
<a name="Examples-80"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-80">34.1.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Convert input to float, planar, stereo:
|
|
<table><tr><td> </td><td><pre class="example">aconvert=fltp:stereo
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Convert input to unsigned 8-bit, automatically select out channel layout:
|
|
<table><tr><td> </td><td><pre class="example">aconvert=u8:auto
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="adelay"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-adelay">34.2 adelay</a></h2>
|
|
|
|
<p>Delay one or more audio channels.
|
|
</p>
|
|
<p>Samples in delayed channel are filled with silence.
|
|
</p>
|
|
<p>The filter accepts the following option:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>delays</samp>’</dt>
|
|
<dd><p>Set list of delays in milliseconds for each channel separated by ’|’.
|
|
At least one delay greater than 0 should be provided.
|
|
Unused delays will be silently ignored. If number of given delays is
|
|
smaller than number of channels all remaining channels will not be delayed.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-76"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-76">34.2.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
|
|
the second channel (and any other channels that may be present) unchanged.
|
|
<table><tr><td> </td><td><pre class="example">adelay=1500|0|500
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="aecho"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aecho">34.3 aecho</a></h2>
|
|
|
|
<p>Apply echoing to the input audio.
|
|
</p>
|
|
<p>Echoes are reflected sound and can occur naturally amongst mountains
|
|
(and sometimes large buildings) when talking or shouting; digital echo
|
|
effects emulate this behaviour and are often used to help fill out the
|
|
sound of a single instrument or vocal. The time difference between the
|
|
original signal and the reflection is the <code>delay</code>, and the
|
|
loudness of the reflected signal is the <code>decay</code>.
|
|
Multiple echoes can have different delays and decays.
|
|
</p>
|
|
<p>A description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>in_gain</samp>’</dt>
|
|
<dd><p>Set input gain of reflected signal. Default is <code>0.6</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_gain</samp>’</dt>
|
|
<dd><p>Set output gain of reflected signal. Default is <code>0.3</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>delays</samp>’</dt>
|
|
<dd><p>Set list of time intervals in milliseconds between original signal and reflections
|
|
separated by ’|’. Allowed range for each <code>delay</code> is <code>(0 - 90000.0]</code>.
|
|
Default is <code>1000</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>decays</samp>’</dt>
|
|
<dd><p>Set list of loudnesses of reflected signals separated by ’|’.
|
|
Allowed range for each <code>decay</code> is <code>(0 - 1.0]</code>.
|
|
Default is <code>0.5</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples">34.3.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Make it sound as if there are twice as many instruments as are actually playing:
|
|
<table><tr><td> </td><td><pre class="example">aecho=0.8:0.88:60:0.4
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
If delay is very short, then it sound like a (metallic) robot playing music:
|
|
<table><tr><td> </td><td><pre class="example">aecho=0.8:0.88:6:0.4
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
A longer delay will sound like an open air concert in the mountains:
|
|
<table><tr><td> </td><td><pre class="example">aecho=0.8:0.9:1000:0.3
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Same as above but with one more mountain:
|
|
<table><tr><td> </td><td><pre class="example">aecho=0.8:0.9:1000|1800:0.3|0.25
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="aeval"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aeval">34.4 aeval</a></h2>
|
|
|
|
<p>Modify an audio signal according to the specified expressions.
|
|
</p>
|
|
<p>This filter accepts one or more expressions (one for each channel),
|
|
which are evaluated and used to modify a corresponding audio signal.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>exprs</samp>’</dt>
|
|
<dd><p>Set the ’|’-separated expressions list for each separate channel. If
|
|
the number of input channels is greater than the number of
|
|
expressions, the last specified expression is used for the remaining
|
|
output channels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channel_layout, c</samp>’</dt>
|
|
<dd><p>Set output channel layout. If not specified, the channel layout is
|
|
specified by the number of expressions. If set to ‘<samp>same</samp>’, it will
|
|
use by default the same input channel layout.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Each expression in <var>exprs</var> can contain the following constants and functions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>ch</samp>’</dt>
|
|
<dd><p>channel number of the current expression
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>number of the evaluated sample, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>sample rate
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>time of the evaluated sample expressed in seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_in_channels</samp>’</dt>
|
|
<dt> ‘<samp>nb_out_channels</samp>’</dt>
|
|
<dd><p>input and output number of channels
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>val(CH)</samp>’</dt>
|
|
<dd><p>the value of input channel with number <var>CH</var>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note: this filter is slow. For faster processing you should use a
|
|
dedicated filter.
|
|
</p>
|
|
<a name="Examples-16"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-16">34.4.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Half volume:
|
|
<table><tr><td> </td><td><pre class="example">aeval=val(ch)/2:c=same
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Invert phase of the second channel:
|
|
<table><tr><td> </td><td><pre class="example">eval=val(0)|-val(1)
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="afade"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-afade">34.5 afade</a></h2>
|
|
|
|
<p>Apply fade-in/out effect to input audio.
|
|
</p>
|
|
<p>A description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>type, t</samp>’</dt>
|
|
<dd><p>Specify the effect type, can be either <code>in</code> for fade-in, or
|
|
<code>out</code> for a fade-out effect. Default is <code>in</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_sample, ss</samp>’</dt>
|
|
<dd><p>Specify the number of the start sample for starting to apply the fade
|
|
effect. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_samples, ns</samp>’</dt>
|
|
<dd><p>Specify the number of samples for which the fade effect has to last. At
|
|
the end of the fade-in effect the output audio will have the same
|
|
volume as the input audio, at the end of the fade-out transition
|
|
the output audio will be silence. Default is 44100.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_time, st</samp>’</dt>
|
|
<dd><p>Specify time for starting to apply the fade effect. Default is 0.
|
|
The accepted syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
|
|
[-]S+[.m...]
|
|
</pre></td></tr></table>
|
|
<p>See also the function <code>av_parse_time()</code>.
|
|
If set this option is used instead of <var>start_sample</var> one.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Specify the duration for which the fade effect has to last. Default is 0.
|
|
The accepted syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
|
|
[-]S+[.m...]
|
|
</pre></td></tr></table>
|
|
<p>See also the function <code>av_parse_time()</code>.
|
|
At the end of the fade-in effect the output audio will have the same
|
|
volume as the input audio, at the end of the fade-out transition
|
|
the output audio will be silence.
|
|
If set this option is used instead of <var>nb_samples</var> one.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>curve</samp>’</dt>
|
|
<dd><p>Set curve for fade transition.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>tri</samp>’</dt>
|
|
<dd><p>select triangular, linear slope (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>qsin</samp>’</dt>
|
|
<dd><p>select quarter of sine wave
|
|
</p></dd>
|
|
<dt> ‘<samp>hsin</samp>’</dt>
|
|
<dd><p>select half of sine wave
|
|
</p></dd>
|
|
<dt> ‘<samp>esin</samp>’</dt>
|
|
<dd><p>select exponential sine wave
|
|
</p></dd>
|
|
<dt> ‘<samp>log</samp>’</dt>
|
|
<dd><p>select logarithmic
|
|
</p></dd>
|
|
<dt> ‘<samp>par</samp>’</dt>
|
|
<dd><p>select inverted parabola
|
|
</p></dd>
|
|
<dt> ‘<samp>qua</samp>’</dt>
|
|
<dd><p>select quadratic
|
|
</p></dd>
|
|
<dt> ‘<samp>cub</samp>’</dt>
|
|
<dd><p>select cubic
|
|
</p></dd>
|
|
<dt> ‘<samp>squ</samp>’</dt>
|
|
<dd><p>select square root
|
|
</p></dd>
|
|
<dt> ‘<samp>cbr</samp>’</dt>
|
|
<dd><p>select cubic root
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-26"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-26">34.5.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Fade in first 15 seconds of audio:
|
|
<table><tr><td> </td><td><pre class="example">afade=t=in:ss=0:d=15
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Fade out last 25 seconds of a 900 seconds audio:
|
|
<table><tr><td> </td><td><pre class="example">afade=t=out:st=875:d=25
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="aformat"></a>
|
|
</p><a name="aformat-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aformat-1">34.6 aformat</a></h2>
|
|
|
|
<p>Set output format constraints for the input audio. The framework will
|
|
negotiate the most appropriate format to minimize conversions.
|
|
</p>
|
|
<p>The filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sample_fmts</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of requested sample formats.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rates</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of requested sample rates.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channel_layouts</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of requested channel layouts.
|
|
</p>
|
|
<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
|
|
for the required syntax.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If a parameter is omitted, all values are allowed.
|
|
</p>
|
|
<p>For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
|
|
</p><table><tr><td> </td><td><pre class="example">aformat=sample_fmts=u8|s16:channel_layouts=stereo
|
|
</pre></td></tr></table>
|
|
|
|
<a name="allpass"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-allpass">34.7 allpass</a></h2>
|
|
|
|
<p>Apply a two-pole all-pass filter with central frequency (in Hz)
|
|
<var>frequency</var>, and filter-width <var>width</var>.
|
|
An all-pass filter changes the audio’s frequency to phase relationship
|
|
without changing its frequency to amplitude relationship.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set frequency in Hz.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Specify the band-width of a filter in width_type units.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="amerge"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-amerge">34.8 amerge</a></h2>
|
|
|
|
<p>Merge two or more audio streams into a single multi-channel stream.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>inputs</samp>’</dt>
|
|
<dd><p>Set the number of inputs. Default is 2.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>If the channel layouts of the inputs are disjoint, and therefore compatible,
|
|
the channel layout of the output will be set accordingly and the channels
|
|
will be reordered as necessary. If the channel layouts of the inputs are not
|
|
disjoint, the output will have all the channels of the first input then all
|
|
the channels of the second input, in that order, and the channel layout of
|
|
the output will be the default value corresponding to the total number of
|
|
channels.
|
|
</p>
|
|
<p>For example, if the first input is in 2.1 (FL+FR+LF) and the second input
|
|
is FC+BL+BR, then the output will be in 5.1, with the channels in the
|
|
following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
|
|
first input, b1 is the first channel of the second input).
|
|
</p>
|
|
<p>On the other hand, if both input are in stereo, the output channels will be
|
|
in the default order: a1, a2, b1, b2, and the channel layout will be
|
|
arbitrarily set to 4.0, which may or may not be the expected value.
|
|
</p>
|
|
<p>All inputs must have the same sample rate, and format.
|
|
</p>
|
|
<p>If inputs do not have the same duration, the output will stop with the
|
|
shortest.
|
|
</p>
|
|
<a name="Examples-64"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-64">34.8.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Merge two mono files into a stereo stream:
|
|
<table><tr><td> </td><td><pre class="example">amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Multiple merges assuming 1 video stream and 6 audio streams in ‘<tt>input.mkv</tt>’:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="amix"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-amix">34.9 amix</a></h2>
|
|
|
|
<p>Mixes multiple audio inputs into a single output.
|
|
</p>
|
|
<p>For example
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
|
|
</pre></td></tr></table>
|
|
<p>will mix 3 input audio streams to a single output with the same duration as the
|
|
first input and a dropout transition time of 3 seconds.
|
|
</p>
|
|
<p>The filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>inputs</samp>’</dt>
|
|
<dd><p>Number of inputs. If unspecified, it defaults to 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration</samp>’</dt>
|
|
<dd><p>How to determine the end-of-stream.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>longest</samp>’</dt>
|
|
<dd><p>Duration of longest input. (default)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>shortest</samp>’</dt>
|
|
<dd><p>Duration of shortest input.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>first</samp>’</dt>
|
|
<dd><p>Duration of first input.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>dropout_transition</samp>’</dt>
|
|
<dd><p>Transition time, in seconds, for volume renormalization when an input
|
|
stream ends. The default value is 2 seconds.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="anull"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-anull">34.10 anull</a></h2>
|
|
|
|
<p>Pass the audio source unchanged to the output.
|
|
</p>
|
|
<a name="apad"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-apad">34.11 apad</a></h2>
|
|
|
|
<p>Pad the end of a audio stream with silence, this can be used together with
|
|
-shortest to extend audio streams to the same length as the video stream.
|
|
</p>
|
|
<a name="aphaser"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aphaser">34.12 aphaser</a></h2>
|
|
<p>Add a phasing effect to the input audio.
|
|
</p>
|
|
<p>A phaser filter creates series of peaks and troughs in the frequency spectrum.
|
|
The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
|
|
</p>
|
|
<p>A description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>in_gain</samp>’</dt>
|
|
<dd><p>Set input gain. Default is 0.4.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_gain</samp>’</dt>
|
|
<dd><p>Set output gain. Default is 0.74
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>delay</samp>’</dt>
|
|
<dd><p>Set delay in milliseconds. Default is 3.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>decay</samp>’</dt>
|
|
<dd><p>Set decay. Default is 0.4.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>speed</samp>’</dt>
|
|
<dd><p>Set modulation speed in Hz. Default is 0.5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>type</samp>’</dt>
|
|
<dd><p>Set modulation type. Default is triangular.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>triangular, t</samp>’</dt>
|
|
<dt> ‘<samp>sinusoidal, s</samp>’</dt>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><a name="aresample"></a>
|
|
</p><a name="aresample-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aresample-1">34.13 aresample</a></h2>
|
|
|
|
<p>Resample the input audio to the specified parameters, using the
|
|
libswresample library. If none are specified then the filter will
|
|
automatically convert between its input and output.
|
|
</p>
|
|
<p>This filter is also able to stretch/squeeze the audio data to make it match
|
|
the timestamps or to inject silence / cut out audio to make it match the
|
|
timestamps, do a combination of both or do neither.
|
|
</p>
|
|
<p>The filter accepts the syntax
|
|
[<var>sample_rate</var>:]<var>resampler_options</var>, where <var>sample_rate</var>
|
|
expresses a sample rate and <var>resampler_options</var> is a list of
|
|
<var>key</var>=<var>value</var> pairs, separated by ":". See the
|
|
ffmpeg-resampler manual for the complete list of supported options.
|
|
</p>
|
|
<a name="Examples-50"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-50">34.13.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Resample the input audio to 44100Hz:
|
|
<table><tr><td> </td><td><pre class="example">aresample=44100
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Stretch/squeeze samples to the given timestamps, with a maximum of 1000
|
|
samples per second compensation:
|
|
<table><tr><td> </td><td><pre class="example">aresample=async=1000
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="asetnsamples"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-asetnsamples">34.14 asetnsamples</a></h2>
|
|
|
|
<p>Set the number of samples per each output audio frame.
|
|
</p>
|
|
<p>The last output packet may contain a different number of samples, as
|
|
the filter will flush all the remaining samples when the input audio
|
|
signal its end.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>nb_out_samples, n</samp>’</dt>
|
|
<dd><p>Set the number of frames per each output audio frame. The number is
|
|
intended as the number of samples <em>per each channel</em>.
|
|
Default value is 1024.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pad, p</samp>’</dt>
|
|
<dd><p>If set to 1, the filter will pad the last audio frame with zeroes, so
|
|
that the last frame will contain the same number of samples as the
|
|
previous ones. Default value is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example, to set the number of per-frame samples to 1234 and
|
|
disable padding for the last frame, use:
|
|
</p><table><tr><td> </td><td><pre class="example">asetnsamples=n=1234:p=0
|
|
</pre></td></tr></table>
|
|
|
|
<a name="asetrate"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-asetrate">34.15 asetrate</a></h2>
|
|
|
|
<p>Set the sample rate without altering the PCM data.
|
|
This will result in a change of speed and pitch.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>sample_rate, r</samp>’</dt>
|
|
<dd><p>Set the output sample rate. Default is 44100 Hz.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="ashowinfo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ashowinfo">34.16 ashowinfo</a></h2>
|
|
|
|
<p>Show a line containing various information for each input audio frame.
|
|
The input audio is not modified.
|
|
</p>
|
|
<p>The shown line contains a sequence of key/value pairs of the form
|
|
<var>key</var>:<var>value</var>.
|
|
</p>
|
|
<p>A description of each shown parameter follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>sequential number of the input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dd><p>Presentation timestamp of the input frame, in time base units; the time base
|
|
depends on the filter input pad, and is usually 1/<var>sample_rate</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts_time</samp>’</dt>
|
|
<dd><p>presentation timestamp of the input frame in seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>position of the frame in the input stream, -1 if this information in
|
|
unavailable and/or meaningless (for example in case of synthetic audio)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fmt</samp>’</dt>
|
|
<dd><p>sample format
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chlayout</samp>’</dt>
|
|
<dd><p>channel layout
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate</samp>’</dt>
|
|
<dd><p>sample rate for the audio frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_samples</samp>’</dt>
|
|
<dd><p>number of samples (per channel) in the frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>checksum</samp>’</dt>
|
|
<dd><p>Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
|
|
the data is treated as if all the planes were concatenated.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>plane_checksums</samp>’</dt>
|
|
<dd><p>A list of Adler-32 checksums for each data plane.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="astats"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-astats">34.17 astats</a></h2>
|
|
|
|
<p>Display time domain statistical information about the audio channels.
|
|
Statistics are calculated and displayed for each audio channel and,
|
|
where applicable, an overall figure is also given.
|
|
</p>
|
|
<p>The filter accepts the following option:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>length</samp>’</dt>
|
|
<dd><p>Short window length in seconds, used for peak and trough RMS measurement.
|
|
Default is <code>0.05</code> (50 miliseconds). Allowed range is <code>[0.1 - 10]</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>A description of each shown parameter follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>DC offset</samp>’</dt>
|
|
<dd><p>Mean amplitude displacement from zero.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Min level</samp>’</dt>
|
|
<dd><p>Minimal sample level.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Max level</samp>’</dt>
|
|
<dd><p>Maximal sample level.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Peak level dB</samp>’</dt>
|
|
<dt> ‘<samp>RMS level dB</samp>’</dt>
|
|
<dd><p>Standard peak and RMS level measured in dBFS.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>RMS peak dB</samp>’</dt>
|
|
<dt> ‘<samp>RMS trough dB</samp>’</dt>
|
|
<dd><p>Peak and trough values for RMS level measured over a short window.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Crest factor</samp>’</dt>
|
|
<dd><p>Standard ratio of peak to RMS level (note: not in dB).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Flat factor</samp>’</dt>
|
|
<dd><p>Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
|
|
(i.e. either <var>Min level</var> or <var>Max level</var>).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>Peak count</samp>’</dt>
|
|
<dd><p>Number of occasions (not the number of samples) that the signal attained either
|
|
<var>Min level</var> or <var>Max level</var>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="astreamsync"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-astreamsync">34.18 astreamsync</a></h2>
|
|
|
|
<p>Forward two audio streams and control the order the buffers are forwarded.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>expr, e</samp>’</dt>
|
|
<dd><p>Set the expression deciding which stream should be
|
|
forwarded next: if the result is negative, the first stream is forwarded; if
|
|
the result is positive or zero, the second stream is forwarded. It can use
|
|
the following variables:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> <var>b1 b2</var></dt>
|
|
<dd><p>number of buffers forwarded so far on each stream
|
|
</p></dd>
|
|
<dt> <var>s1 s2</var></dt>
|
|
<dd><p>number of samples forwarded so far on each stream
|
|
</p></dd>
|
|
<dt> <var>t1 t2</var></dt>
|
|
<dd><p>current timestamp of each stream
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The default value is <code>t1-t2</code>, which means to always forward the stream
|
|
that has a smaller timestamp.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-14"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-14">34.18.1 Examples</a></h3>
|
|
|
|
<p>Stress-test <code>amerge</code> by randomly sending buffers on the wrong
|
|
input, while avoiding too much of a desynchronization:
|
|
</p><table><tr><td> </td><td><pre class="example">amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
|
|
[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
|
|
[a2] [b2] amerge
|
|
</pre></td></tr></table>
|
|
|
|
<a name="asyncts"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-asyncts">34.19 asyncts</a></h2>
|
|
|
|
<p>Synchronize audio data with timestamps by squeezing/stretching it and/or
|
|
dropping samples/adding silence when needed.
|
|
</p>
|
|
<p>This filter is not built by default, please use <a href="#aresample">aresample</a> to do squeezing/stretching.
|
|
</p>
|
|
<p>The filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>compensate</samp>’</dt>
|
|
<dd><p>Enable stretching/squeezing the data to make it match the timestamps. Disabled
|
|
by default. When disabled, time gaps are covered with silence.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>min_delta</samp>’</dt>
|
|
<dd><p>Minimum difference between timestamps and audio data (in seconds) to trigger
|
|
adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
|
|
this filter, try setting this parameter to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_comp</samp>’</dt>
|
|
<dd><p>Maximum compensation in samples per second. Relevant only with compensate=1.
|
|
Default value 500.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>first_pts</samp>’</dt>
|
|
<dd><p>Assume the first pts should be this value. The time base is 1 / sample rate.
|
|
This allows for padding/trimming at the start of stream. By default, no
|
|
assumption is made about the first frame’s expected pts, so no padding or
|
|
trimming is done. For example, this could be set to 0 to pad the beginning with
|
|
silence if an audio stream starts after the video stream or to trim any samples
|
|
with a negative pts due to encoder delay.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="atempo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-atempo">34.20 atempo</a></h2>
|
|
|
|
<p>Adjust audio tempo.
|
|
</p>
|
|
<p>The filter accepts exactly one parameter, the audio tempo. If not
|
|
specified then the filter will assume nominal 1.0 tempo. Tempo must
|
|
be in the [0.5, 2.0] range.
|
|
</p>
|
|
<a name="Examples-18"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-18">34.20.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Slow down audio to 80% tempo:
|
|
<table><tr><td> </td><td><pre class="example">atempo=0.8
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To speed up audio to 125% tempo:
|
|
<table><tr><td> </td><td><pre class="example">atempo=1.25
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="atrim"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-atrim">34.21 atrim</a></h2>
|
|
|
|
<p>Trim the input so that the output contains one continuous subpart of the input.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>start</samp>’</dt>
|
|
<dd><p>Specify time of the start of the kept section, i.e. the audio sample
|
|
with the timestamp <var>start</var> will be the first sample in the output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end</samp>’</dt>
|
|
<dd><p>Specify time of the first audio sample that will be dropped, i.e. the
|
|
audio sample immediately preceding the one with the timestamp <var>end</var> will be
|
|
the last sample in the output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_pts</samp>’</dt>
|
|
<dd><p>Same as <var>start</var>, except this option sets the start timestamp in samples
|
|
instead of seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end_pts</samp>’</dt>
|
|
<dd><p>Same as <var>end</var>, except this option sets the end timestamp in samples instead
|
|
of seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration</samp>’</dt>
|
|
<dd><p>Specify maximum duration of the output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_sample</samp>’</dt>
|
|
<dd><p>Number of the first sample that should be passed to output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end_sample</samp>’</dt>
|
|
<dd><p>Number of the first sample that should be dropped.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>‘<samp>start</samp>’, ‘<samp>end</samp>’, ‘<samp>duration</samp>’ are expressed as time
|
|
duration specifications, check the "Time duration" section in the
|
|
ffmpeg-utils manual.
|
|
</p>
|
|
<p>Note that the first two sets of the start/end options and the ‘<samp>duration</samp>’
|
|
option look at the frame timestamp, while the _sample options simply count the
|
|
samples that pass through the filter. So start/end_pts and start/end_sample will
|
|
give different results when the timestamps are wrong, inexact or do not start at
|
|
zero. Also note that this filter does not modify the timestamps. If you wish
|
|
that the output timestamps start at zero, insert the asetpts filter after the
|
|
atrim filter.
|
|
</p>
|
|
<p>If multiple start or end options are set, this filter tries to be greedy and
|
|
keep all samples that match at least one of the specified constraints. To keep
|
|
only the part that matches all the constraints at once, chain multiple atrim
|
|
filters.
|
|
</p>
|
|
<p>The defaults are such that all the input is kept. So it is possible to set e.g.
|
|
just the end values to keep everything before the specified time.
|
|
</p>
|
|
<p>Examples:
|
|
</p><ul>
|
|
<li>
|
|
drop everything except the second minute of input
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -af atrim=60:120
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
keep only the first 1000 samples
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -af atrim=end_sample=1000
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="bandpass"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-bandpass">34.22 bandpass</a></h2>
|
|
|
|
<p>Apply a two-pole Butterworth band-pass filter with central
|
|
frequency <var>frequency</var>, and (3dB-point) band-width width.
|
|
The <var>csg</var> option selects a constant skirt gain (peak gain = Q)
|
|
instead of the default: constant 0dB peak gain.
|
|
The filter roll off at 6dB per octave (20dB per decade).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set the filter’s central frequency. Default is <code>3000</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>csg</samp>’</dt>
|
|
<dd><p>Constant skirt gain if set to 1. Defaults to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Specify the band-width of a filter in width_type units.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="bandreject"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-bandreject">34.23 bandreject</a></h2>
|
|
|
|
<p>Apply a two-pole Butterworth band-reject filter with central
|
|
frequency <var>frequency</var>, and (3dB-point) band-width <var>width</var>.
|
|
The filter roll off at 6dB per octave (20dB per decade).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set the filter’s central frequency. Default is <code>3000</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Specify the band-width of a filter in width_type units.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="bass"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-bass">34.24 bass</a></h2>
|
|
|
|
<p>Boost or cut the bass (lower) frequencies of the audio using a two-pole
|
|
shelving filter with a response similar to that of a standard
|
|
hi-fi’s tone-controls. This is also known as shelving equalisation (EQ).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>gain, g</samp>’</dt>
|
|
<dd><p>Give the gain at 0 Hz. Its useful range is about -20
|
|
(for a large cut) to +20 (for a large boost).
|
|
Beware of clipping when using a positive gain.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set the filter’s central frequency and so can be used
|
|
to extend or reduce the frequency range to be boosted or cut.
|
|
The default value is <code>100</code> Hz.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Determine how steep is the filter’s shelf transition.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="biquad"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-biquad">34.25 biquad</a></h2>
|
|
|
|
<p>Apply a biquad IIR filter with the given coefficients.
|
|
Where <var>b0</var>, <var>b1</var>, <var>b2</var> and <var>a0</var>, <var>a1</var>, <var>a2</var>
|
|
are the numerator and denominator coefficients respectively.
|
|
</p>
|
|
<a name="channelmap"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-channelmap">34.26 channelmap</a></h2>
|
|
|
|
<p>Remap input channels to new locations.
|
|
</p>
|
|
<p>This filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>channel_layout</samp>’</dt>
|
|
<dd><p>Channel layout of the output stream.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>map</samp>’</dt>
|
|
<dd><p>Map channels from input to output. The argument is a ’|’-separated list of
|
|
mappings, each in the <code><var>in_channel</var>-<var>out_channel</var></code> or
|
|
<var>in_channel</var> form. <var>in_channel</var> can be either the name of the input
|
|
channel (e.g. FL for front left) or its index in the input channel layout.
|
|
<var>out_channel</var> is the name of the output channel or its index in the output
|
|
channel layout. If <var>out_channel</var> is not given then it is implicitly an
|
|
index, starting with zero and increasing by one for each mapping.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If no mapping is present, the filter will implicitly map input channels to
|
|
output channels preserving index.
|
|
</p>
|
|
<p>For example, assuming a 5.1+downmix input MOV file
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
|
|
</pre></td></tr></table>
|
|
<p>will create an output WAV file tagged as stereo from the downmix channels of
|
|
the input.
|
|
</p>
|
|
<p>To fix a 5.1 WAV improperly encoded in AAC’s native channel order
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
|
|
</pre></td></tr></table>
|
|
|
|
<a name="channelsplit"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-channelsplit">34.27 channelsplit</a></h2>
|
|
|
|
<p>Split each channel in input audio stream into a separate output stream.
|
|
</p>
|
|
<p>This filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>channel_layout</samp>’</dt>
|
|
<dd><p>Channel layout of the input stream. Default is "stereo".
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example, assuming a stereo input MP3 file
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
|
|
</pre></td></tr></table>
|
|
<p>will create an output Matroska file with two audio streams, one containing only
|
|
the left channel and the other the right channel.
|
|
</p>
|
|
<p>To split a 5.1 WAV file into per-channel files
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.wav -filter_complex
|
|
'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
|
|
-map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
|
|
front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
|
|
side_right.wav
|
|
</pre></td></tr></table>
|
|
|
|
<a name="compand"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-compand">34.28 compand</a></h2>
|
|
<p>Compress or expand audio dynamic range.
|
|
</p>
|
|
<p>A description of the accepted options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>attacks</samp>’</dt>
|
|
<dt> ‘<samp>decays</samp>’</dt>
|
|
<dd><p>Set list of times in seconds for each channel over which the instantaneous level
|
|
of the input signal is averaged to determine its volume. <var>attacks</var> refers to
|
|
increase of volume and <var>decays</var> refers to decrease of volume. For most
|
|
situations, the attack time (response to the audio getting louder) should be
|
|
shorter than the decay time because the human ear is more sensitive to sudden
|
|
loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
|
|
a typical value for decay is 0.8 seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>points</samp>’</dt>
|
|
<dd><p>Set list of points for the transfer function, specified in dB relative to the
|
|
maximum possible signal amplitude. Each key points list must be defined using
|
|
the following syntax: <code>x0/y0|x1/y1|x2/y2|....</code> or
|
|
<code>x0/y0 x1/y1 x2/y2 ....</code>
|
|
</p>
|
|
<p>The input values must be in strictly increasing order but the transfer function
|
|
does not have to be monotonically rising. The point <code>0/0</code> is assumed but
|
|
may be overridden (by <code>0/out-dBn</code>). Typical values for the transfer
|
|
function are <code>-70/-70|-60/-20</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>soft-knee</samp>’</dt>
|
|
<dd><p>Set the curve radius in dB for all joints. Defaults to 0.01.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gain</samp>’</dt>
|
|
<dd><p>Set additional gain in dB to be applied at all points on the transfer function.
|
|
This allows easy adjustment of the overall gain. Defaults to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>volume</samp>’</dt>
|
|
<dd><p>Set initial volume in dB to be assumed for each channel when filtering starts.
|
|
This permits the user to supply a nominal level initially, so that, for
|
|
example, a very large gain is not applied to initial signal levels before the
|
|
companding has begun to operate. A typical value for audio which is initially
|
|
quiet is -90 dB. Defaults to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>delay</samp>’</dt>
|
|
<dd><p>Set delay in seconds. The input audio is analyzed immediately, but audio is
|
|
delayed before being fed to the volume adjuster. Specifying a delay
|
|
approximately equal to the attack/decay times allows the filter to effectively
|
|
operate in predictive rather than reactive mode. Defaults to 0.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-49"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-49">34.28.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Make music with both quiet and loud passages suitable for listening in a noisy
|
|
environment:
|
|
<table><tr><td> </td><td><pre class="example">compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Noise gate for when the noise is at a lower level than the signal:
|
|
<table><tr><td> </td><td><pre class="example">compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Here is another noise gate, this time for when the noise is at a higher level
|
|
than the signal (making it, in some ways, similar to squelch):
|
|
<table><tr><td> </td><td><pre class="example">compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="earwax"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-earwax">34.29 earwax</a></h2>
|
|
|
|
<p>Make audio easier to listen to on headphones.
|
|
</p>
|
|
<p>This filter adds ‘cues’ to 44.1kHz stereo (i.e. audio CD format) audio
|
|
so that when listened to on headphones the stereo image is moved from
|
|
inside your head (standard for headphones) to outside and in front of
|
|
the listener (standard for speakers).
|
|
</p>
|
|
<p>Ported from SoX.
|
|
</p>
|
|
<a name="equalizer"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-equalizer">34.30 equalizer</a></h2>
|
|
|
|
<p>Apply a two-pole peaking equalisation (EQ) filter. With this
|
|
filter, the signal-level at and around a selected frequency can
|
|
be increased or decreased, whilst (unlike bandpass and bandreject
|
|
filters) that at all other frequencies is unchanged.
|
|
</p>
|
|
<p>In order to produce complex equalisation curves, this filter can
|
|
be given several times, each with a different central frequency.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set the filter’s central frequency in Hz.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Specify the band-width of a filter in width_type units.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gain, g</samp>’</dt>
|
|
<dd><p>Set the required gain or attenuation in dB.
|
|
Beware of clipping when using a positive gain.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-55"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-55">34.30.1 Examples</a></h3>
|
|
<ul>
|
|
<li>
|
|
Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
|
|
<table><tr><td> </td><td><pre class="example">equalizer=f=1000:width_type=h:width=200:g=-10
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
|
|
<table><tr><td> </td><td><pre class="example">equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="highpass"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-highpass">34.31 highpass</a></h2>
|
|
|
|
<p>Apply a high-pass filter with 3dB point frequency.
|
|
The filter can be either single-pole, or double-pole (the default).
|
|
The filter roll off at 6dB per pole per octave (20dB per pole per decade).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set frequency in Hz. Default is 3000.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>poles, p</samp>’</dt>
|
|
<dd><p>Set number of poles. Default is 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Specify the band-width of a filter in width_type units.
|
|
Applies only to double-pole filter.
|
|
The default is 0.707q and gives a Butterworth response.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="join"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-join">34.32 join</a></h2>
|
|
|
|
<p>Join multiple input streams into one multi-channel stream.
|
|
</p>
|
|
<p>The filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>inputs</samp>’</dt>
|
|
<dd><p>Number of input streams. Defaults to 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channel_layout</samp>’</dt>
|
|
<dd><p>Desired output channel layout. Defaults to stereo.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>map</samp>’</dt>
|
|
<dd><p>Map channels from inputs to output. The argument is a ’|’-separated list of
|
|
mappings, each in the <code><var>input_idx</var>.<var>in_channel</var>-<var>out_channel</var></code>
|
|
form. <var>input_idx</var> is the 0-based index of the input stream. <var>in_channel</var>
|
|
can be either the name of the input channel (e.g. FL for front left) or its
|
|
index in the specified input stream. <var>out_channel</var> is the name of the output
|
|
channel.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The filter will attempt to guess the mappings when those are not specified
|
|
explicitly. It does so by first trying to find an unused matching input channel
|
|
and if that fails it picks the first unused input channel.
|
|
</p>
|
|
<p>E.g. to join 3 inputs (with properly set channel layouts)
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<p>To build a 5.1 output from 6 single-channel streams:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
|
|
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
|
|
out
|
|
</pre></td></tr></table>
|
|
|
|
<a name="ladspa"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ladspa">34.33 ladspa</a></h2>
|
|
|
|
<p>Load a LADSPA (Linux Audio Developer’s Simple Plugin API) plugin.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to configure FFmpeg with
|
|
<code>--enable-ladspa</code>.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>file, f</samp>’</dt>
|
|
<dd><p>Specifies the name of LADSPA plugin library to load. If the environment
|
|
variable <code>LADSPA_PATH</code> is defined, the LADSPA plugin is searched in
|
|
each one of the directories specified by the colon separated list in
|
|
<code>LADSPA_PATH</code>, otherwise in the standard LADSPA paths, which are in
|
|
this order: ‘<tt>HOME/.ladspa/lib/</tt>’, ‘<tt>/usr/local/lib/ladspa/</tt>’,
|
|
‘<tt>/usr/lib/ladspa/</tt>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>plugin, p</samp>’</dt>
|
|
<dd><p>Specifies the plugin within the library. Some libraries contain only
|
|
one plugin, but others contain many of them. If this is not set filter
|
|
will list all available plugins within the specified library.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>controls, c</samp>’</dt>
|
|
<dd><p>Set the ’|’ separated list of controls which are zero or more floating point
|
|
values that determine the behavior of the loaded plugin (for example delay,
|
|
threshold or gain).
|
|
Controls need to be defined using the following syntax:
|
|
c0=<var>value0</var>|c1=<var>value1</var>|c2=<var>value2</var>|..., where
|
|
<var>valuei</var> is the value set on the <var>i</var>-th control.
|
|
If ‘<samp>controls</samp>’ is set to <code>help</code>, all available controls and
|
|
their valid ranges are printed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate, s</samp>’</dt>
|
|
<dd><p>Specify the sample rate, default to 44100. Only used if plugin have
|
|
zero inputs.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_samples, n</samp>’</dt>
|
|
<dd><p>Set the number of samples per channel per each output frame, default
|
|
is 1024. Only used if plugin have zero inputs.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Set the minimum duration of the sourced audio. See the function
|
|
<code>av_parse_time()</code> for the accepted format, also check the "Time duration"
|
|
section in the ffmpeg-utils manual.
|
|
Note that the resulting duration may be greater than the specified duration,
|
|
as the generated audio is always cut at the end of a complete frame.
|
|
If not specified, or the expressed duration is negative, the audio is
|
|
supposed to be generated forever.
|
|
Only used if plugin have zero inputs.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-43"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-43">34.33.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
List all available plugins within amp (LADSPA example plugin) library:
|
|
<table><tr><td> </td><td><pre class="example">ladspa=file=amp
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
List all available controls and their valid ranges for <code>vcf_notch</code>
|
|
plugin from <code>VCF</code> library:
|
|
<table><tr><td> </td><td><pre class="example">ladspa=f=vcf:p=vcf_notch:c=help
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Simulate low quality audio equipment using <code>Computer Music Toolkit</code> (CMT)
|
|
plugin library:
|
|
<table><tr><td> </td><td><pre class="example">ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Add reverberation to the audio using TAP-plugins
|
|
(Tom’s Audio Processing plugins):
|
|
<table><tr><td> </td><td><pre class="example">ladspa=file=tap_reverb:tap_reverb
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate white noise, with 0.2 amplitude:
|
|
<table><tr><td> </td><td><pre class="example">ladspa=file=cmt:noise_source_white:c=c0=.2
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate 20 bpm clicks using plugin <code>C* Click - Metronome</code> from the
|
|
<code>C* Audio Plugin Suite</code> (CAPS) library:
|
|
<table><tr><td> </td><td><pre class="example">ladspa=file=caps:Click:c=c1=20'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply <code>C* Eq10X2 - Stereo 10-band equaliser</code> effect:
|
|
<table><tr><td> </td><td><pre class="example">ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="Commands-3"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-3">34.33.2 Commands</a></h3>
|
|
|
|
<p>This filter supports the following commands:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>cN</samp>’</dt>
|
|
<dd><p>Modify the <var>N</var>-th control value.
|
|
</p>
|
|
<p>If the specified value is not valid, it is ignored and prior one is kept.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="lowpass"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-lowpass">34.34 lowpass</a></h2>
|
|
|
|
<p>Apply a low-pass filter with 3dB point frequency.
|
|
The filter can be either single-pole or double-pole (the default).
|
|
The filter roll off at 6dB per pole per octave (20dB per pole per decade).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set frequency in Hz. Default is 500.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>poles, p</samp>’</dt>
|
|
<dd><p>Set number of poles. Default is 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Specify the band-width of a filter in width_type units.
|
|
Applies only to double-pole filter.
|
|
The default is 0.707q and gives a Butterworth response.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="pan"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pan">34.35 pan</a></h2>
|
|
|
|
<p>Mix channels with specific gain levels. The filter accepts the output
|
|
channel layout followed by a set of channels definitions.
|
|
</p>
|
|
<p>This filter is also designed to remap efficiently the channels of an audio
|
|
stream.
|
|
</p>
|
|
<p>The filter accepts parameters of the form:
|
|
"<var>l</var>:<var>outdef</var>:<var>outdef</var>:..."
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>l</samp>’</dt>
|
|
<dd><p>output channel layout or number of channels
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>outdef</samp>’</dt>
|
|
<dd><p>output channel specification, of the form:
|
|
"<var>out_name</var>=[<var>gain</var>*]<var>in_name</var>[+[<var>gain</var>*]<var>in_name</var>...]"
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_name</samp>’</dt>
|
|
<dd><p>output channel to define, either a channel name (FL, FR, etc.) or a channel
|
|
number (c0, c1, etc.)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gain</samp>’</dt>
|
|
<dd><p>multiplicative coefficient for the channel, 1 leaving the volume unchanged
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>in_name</samp>’</dt>
|
|
<dd><p>input channel to use, see out_name for details; it is not possible to mix
|
|
named and numbered input channels
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If the ‘=’ in a channel specification is replaced by ‘<’, then the gains for
|
|
that specification will be renormalized so that the total is 1, thus
|
|
avoiding clipping noise.
|
|
</p>
|
|
<a name="Mixing-examples"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Mixing-examples">34.35.1 Mixing examples</a></h3>
|
|
|
|
<p>For example, if you want to down-mix from stereo to mono, but with a bigger
|
|
factor for the left channel:
|
|
</p><table><tr><td> </td><td><pre class="example">pan=1:c0=0.9*c0+0.1*c1
|
|
</pre></td></tr></table>
|
|
|
|
<p>A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
|
|
7-channels surround:
|
|
</p><table><tr><td> </td><td><pre class="example">pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that <code>ffmpeg</code> integrates a default down-mix (and up-mix) system
|
|
that should be preferred (see "-ac" option) unless you have very specific
|
|
needs.
|
|
</p>
|
|
<a name="Remapping-examples"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Remapping-examples">34.35.2 Remapping examples</a></h3>
|
|
|
|
<p>The channel remapping will be effective if, and only if:
|
|
</p>
|
|
<ul>
|
|
<li> gain coefficients are zeroes or ones,
|
|
</li><li> only one input per channel output,
|
|
</li></ul>
|
|
|
|
<p>If all these conditions are satisfied, the filter will notify the user ("Pure
|
|
channel mapping detected"), and use an optimized and lossless method to do the
|
|
remapping.
|
|
</p>
|
|
<p>For example, if you have a 5.1 source and want a stereo audio stream by
|
|
dropping the extra channels:
|
|
</p><table><tr><td> </td><td><pre class="example">pan="stereo: c0=FL : c1=FR"
|
|
</pre></td></tr></table>
|
|
|
|
<p>Given the same source, you can also switch front left and front right channels
|
|
and keep the input channel layout:
|
|
</p><table><tr><td> </td><td><pre class="example">pan="5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5"
|
|
</pre></td></tr></table>
|
|
|
|
<p>If the input is a stereo audio stream, you can mute the front left channel (and
|
|
still keep the stereo channel layout) with:
|
|
</p><table><tr><td> </td><td><pre class="example">pan="stereo:c1=c1"
|
|
</pre></td></tr></table>
|
|
|
|
<p>Still with a stereo audio stream input, you can copy the right channel in both
|
|
front left and right:
|
|
</p><table><tr><td> </td><td><pre class="example">pan="stereo: c0=FR : c1=FR"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="replaygain"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-replaygain">34.36 replaygain</a></h2>
|
|
|
|
<p>ReplayGain scanner filter. This filter takes an audio stream as an input and
|
|
outputs it unchanged.
|
|
At end of filtering it displays <code>track_gain</code> and <code>track_peak</code>.
|
|
</p>
|
|
<a name="resample"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-resample">34.37 resample</a></h2>
|
|
|
|
<p>Convert the audio sample format, sample rate and channel layout. This filter is
|
|
not meant to be used directly.
|
|
</p>
|
|
<a name="silencedetect"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-silencedetect">34.38 silencedetect</a></h2>
|
|
|
|
<p>Detect silence in an audio stream.
|
|
</p>
|
|
<p>This filter logs a message when it detects that the input audio volume is less
|
|
or equal to a noise tolerance value for a duration greater or equal to the
|
|
minimum detected noise duration.
|
|
</p>
|
|
<p>The printed times and duration are expressed in seconds.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Set silence duration until notification (default is 2 seconds).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>noise, n</samp>’</dt>
|
|
<dd><p>Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
|
|
specified value) or amplitude ratio. Default is -60dB, or 0.001.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-90"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-90">34.38.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Detect 5 seconds of silence with -50dB noise tolerance:
|
|
<table><tr><td> </td><td><pre class="example">silencedetect=n=-50dB:d=5
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Complete example with <code>ffmpeg</code> to detect silence with 0.0001 noise
|
|
tolerance in ‘<tt>silence.mp3</tt>’:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="treble"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-treble">34.39 treble</a></h2>
|
|
|
|
<p>Boost or cut treble (upper) frequencies of the audio using a two-pole
|
|
shelving filter with a response similar to that of a standard
|
|
hi-fi’s tone-controls. This is also known as shelving equalisation (EQ).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>gain, g</samp>’</dt>
|
|
<dd><p>Give the gain at whichever is the lower of ~22 kHz and the
|
|
Nyquist frequency. Its useful range is about -20 (for a large cut)
|
|
to +20 (for a large boost). Beware of clipping when using a positive gain.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set the filter’s central frequency and so can be used
|
|
to extend or reduce the frequency range to be boosted or cut.
|
|
The default value is <code>3000</code> Hz.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width_type</samp>’</dt>
|
|
<dd><p>Set method to specify band-width of filter.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Hz
|
|
</p></dd>
|
|
<dt> ‘<samp>q</samp>’</dt>
|
|
<dd><p>Q-Factor
|
|
</p></dd>
|
|
<dt> ‘<samp>o</samp>’</dt>
|
|
<dd><p>octave
|
|
</p></dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>slope
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dd><p>Determine how steep is the filter’s shelf transition.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="volume"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-volume">34.40 volume</a></h2>
|
|
|
|
<p>Adjust the input audio volume.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>volume</samp>’</dt>
|
|
<dd><p>Set audio volume expression.
|
|
</p>
|
|
<p>Output values are clipped to the maximum value.
|
|
</p>
|
|
<p>The output audio volume is given by the relation:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>output_volume</var> = <var>volume</var> * <var>input_volume</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>Default value for <var>volume</var> is "1.0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>precision</samp>’</dt>
|
|
<dd><p>Set the mathematical precision.
|
|
</p>
|
|
<p>This determines which input sample formats will be allowed, which affects the
|
|
precision of the volume scaling.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>fixed</samp>’</dt>
|
|
<dd><p>8-bit fixed-point; limits input sample format to U8, S16, and S32.
|
|
</p></dd>
|
|
<dt> ‘<samp>float</samp>’</dt>
|
|
<dd><p>32-bit floating-point; limits input sample format to FLT. (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>double</samp>’</dt>
|
|
<dd><p>64-bit floating-point; limits input sample format to DBL.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>replaygain</samp>’</dt>
|
|
<dd><p>Behaviour on encountering ReplayGain side data in input frames.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>drop</samp>’</dt>
|
|
<dd><p>Remove ReplayGain side data, ignoring its contents (the default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ignore</samp>’</dt>
|
|
<dd><p>Ignore ReplayGain side data, but leave it in the frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>track</samp>’</dt>
|
|
<dd><p>Prefer track gain, if present.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>album</samp>’</dt>
|
|
<dd><p>Prefer album gain, if present.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>replaygain_preamp</samp>’</dt>
|
|
<dd><p>Pre-amplification gain in dB to apply to the selected replaygain gain.
|
|
</p>
|
|
<p>Default value for <var>replaygain_preamp</var> is 0.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>eval</samp>’</dt>
|
|
<dd><p>Set when the volume expression is evaluated.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>once</samp>’</dt>
|
|
<dd><p>only evaluate expression once during the filter initialization, or
|
|
when the ‘<samp>volume</samp>’ command is sent
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame</samp>’</dt>
|
|
<dd><p>evaluate expression for each incoming frame
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>once</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The volume expression can contain the following parameters.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>frame number (starting at zero)
|
|
</p></dd>
|
|
<dt> ‘<samp>nb_channels</samp>’</dt>
|
|
<dd><p>number of channels
|
|
</p></dd>
|
|
<dt> ‘<samp>nb_consumed_samples</samp>’</dt>
|
|
<dd><p>number of samples consumed by the filter
|
|
</p></dd>
|
|
<dt> ‘<samp>nb_samples</samp>’</dt>
|
|
<dd><p>number of samples in the current frame
|
|
</p></dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>original frame position in the file
|
|
</p></dd>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dd><p>frame PTS
|
|
</p></dd>
|
|
<dt> ‘<samp>sample_rate</samp>’</dt>
|
|
<dd><p>sample rate
|
|
</p></dd>
|
|
<dt> ‘<samp>startpts</samp>’</dt>
|
|
<dd><p>PTS at start of stream
|
|
</p></dd>
|
|
<dt> ‘<samp>startt</samp>’</dt>
|
|
<dd><p>time at start of stream
|
|
</p></dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>frame time
|
|
</p></dd>
|
|
<dt> ‘<samp>tb</samp>’</dt>
|
|
<dd><p>timestamp timebase
|
|
</p></dd>
|
|
<dt> ‘<samp>volume</samp>’</dt>
|
|
<dd><p>last set volume value
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note that when ‘<samp>eval</samp>’ is set to ‘<samp>once</samp>’ only the
|
|
<var>sample_rate</var> and <var>tb</var> variables are available, all other
|
|
variables will evaluate to NAN.
|
|
</p>
|
|
<a name="Commands-2"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-2">34.40.1 Commands</a></h3>
|
|
|
|
<p>This filter supports the following commands:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>volume</samp>’</dt>
|
|
<dd><p>Modify the volume expression.
|
|
The command accepts the same syntax of the corresponding option.
|
|
</p>
|
|
<p>If the specified expression is not valid, it is kept at its current
|
|
value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-58"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-58">34.40.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Halve the input audio volume:
|
|
<table><tr><td> </td><td><pre class="example">volume=volume=0.5
|
|
volume=volume=1/2
|
|
volume=volume=-6.0206dB
|
|
</pre></td></tr></table>
|
|
|
|
<p>In all the above example the named key for ‘<samp>volume</samp>’ can be
|
|
omitted, for example like in:
|
|
</p><table><tr><td> </td><td><pre class="example">volume=0.5
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Increase input audio power by 6 decibels using fixed-point precision:
|
|
<table><tr><td> </td><td><pre class="example">volume=volume=6dB:precision=fixed
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Fade volume after time 10 with an annihilation period of 5 seconds:
|
|
<table><tr><td> </td><td><pre class="example">volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="volumedetect"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-volumedetect">34.41 volumedetect</a></h2>
|
|
|
|
<p>Detect the volume of the input video.
|
|
</p>
|
|
<p>The filter has no parameters. The input is not modified. Statistics about
|
|
the volume will be printed in the log when the input stream end is reached.
|
|
</p>
|
|
<p>In particular it will show the mean volume (root mean square), maximum
|
|
volume (on a per-sample basis), and the beginning of a histogram of the
|
|
registered volume values (from the maximum value to a cumulated 1/1000 of
|
|
the samples).
|
|
</p>
|
|
<p>All volumes are in decibels relative to the maximum PCM value.
|
|
</p>
|
|
<a name="Examples-6"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-6">34.41.1 Examples</a></h3>
|
|
|
|
<p>Here is an excerpt of the output:
|
|
</p><table><tr><td> </td><td><pre class="example">[Parsed_volumedetect_0 0xa23120] mean_volume: -27 dB
|
|
[Parsed_volumedetect_0 0xa23120] max_volume: -4 dB
|
|
[Parsed_volumedetect_0 0xa23120] histogram_4db: 6
|
|
[Parsed_volumedetect_0 0xa23120] histogram_5db: 62
|
|
[Parsed_volumedetect_0 0xa23120] histogram_6db: 286
|
|
[Parsed_volumedetect_0 0xa23120] histogram_7db: 1042
|
|
[Parsed_volumedetect_0 0xa23120] histogram_8db: 2551
|
|
[Parsed_volumedetect_0 0xa23120] histogram_9db: 4609
|
|
[Parsed_volumedetect_0 0xa23120] histogram_10db: 8409
|
|
</pre></td></tr></table>
|
|
|
|
<p>It means that:
|
|
</p><ul>
|
|
<li>
|
|
The mean square energy is approximately -27 dB, or 10^-2.7.
|
|
</li><li>
|
|
The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
|
|
</li><li>
|
|
There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
|
|
</li></ul>
|
|
|
|
<p>In other words, raising the volume by +4 dB does not cause any clipping,
|
|
raising it by +5 dB causes clipping for 6 samples, etc.
|
|
</p>
|
|
|
|
<a name="Audio-Sources"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Sources">35. Audio Sources</a></h1>
|
|
|
|
<p>Below is a description of the currently available audio sources.
|
|
</p>
|
|
<a name="abuffer"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-abuffer">35.1 abuffer</a></h2>
|
|
|
|
<p>Buffer audio frames, and make them available to the filter chain.
|
|
</p>
|
|
<p>This source is mainly intended for a programmatic use, in particular
|
|
through the interface defined in ‘<tt>libavfilter/asrc_abuffer.h</tt>’.
|
|
</p>
|
|
<p>It accepts the following named parameters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>time_base</samp>’</dt>
|
|
<dd><p>Timebase which will be used for timestamps of submitted frames. It must be
|
|
either a floating-point number or in <var>numerator</var>/<var>denominator</var> form.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate</samp>’</dt>
|
|
<dd><p>The sample rate of the incoming audio buffers.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_fmt</samp>’</dt>
|
|
<dd><p>The sample format of the incoming audio buffers.
|
|
Either a sample format name or its corresponging integer representation from
|
|
the enum AVSampleFormat in ‘<tt>libavutil/samplefmt.h</tt>’
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channel_layout</samp>’</dt>
|
|
<dd><p>The channel layout of the incoming audio buffers.
|
|
Either a channel layout name from channel_layout_map in
|
|
‘<tt>libavutil/channel_layout.c</tt>’ or its corresponding integer representation
|
|
from the AV_CH_LAYOUT_* macros in ‘<tt>libavutil/channel_layout.h</tt>’
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channels</samp>’</dt>
|
|
<dd><p>The number of channels of the incoming audio buffers.
|
|
If both <var>channels</var> and <var>channel_layout</var> are specified, then they
|
|
must be consistent.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-92"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-92">35.1.1 Examples</a></h3>
|
|
|
|
<table><tr><td> </td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
|
|
</pre></td></tr></table>
|
|
|
|
<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
|
|
Since the sample format with name "s16p" corresponds to the number
|
|
6 and the "stereo" channel layout corresponds to the value 0x3, this is
|
|
equivalent to:
|
|
</p><table><tr><td> </td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
|
|
</pre></td></tr></table>
|
|
|
|
<a name="aevalsrc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-aevalsrc">35.2 aevalsrc</a></h2>
|
|
|
|
<p>Generate an audio signal specified by an expression.
|
|
</p>
|
|
<p>This source accepts in input one or more expressions (one for each
|
|
channel), which are evaluated and used to generate a corresponding
|
|
audio signal.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>exprs</samp>’</dt>
|
|
<dd><p>Set the ’|’-separated expressions list for each separate channel. In case the
|
|
‘<samp>channel_layout</samp>’ option is not specified, the selected channel layout
|
|
depends on the number of provided expressions. Otherwise the last
|
|
specified expression is applied to the remaining output channels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>channel_layout, c</samp>’</dt>
|
|
<dd><p>Set the channel layout. The number of channels in the specified layout
|
|
must be equal to the number of specified expressions.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Set the minimum duration of the sourced audio. See the function
|
|
<code>av_parse_time()</code> for the accepted format.
|
|
Note that the resulting duration may be greater than the specified
|
|
duration, as the generated audio is always cut at the end of a
|
|
complete frame.
|
|
</p>
|
|
<p>If not specified, or the expressed duration is negative, the audio is
|
|
supposed to be generated forever.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_samples, n</samp>’</dt>
|
|
<dd><p>Set the number of samples per channel per each output frame,
|
|
default to 1024.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate, s</samp>’</dt>
|
|
<dd><p>Specify the sample rate, default to 44100.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Each expression in <var>exprs</var> can contain the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>number of the evaluated sample, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>time of the evaluated sample expressed in seconds, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>sample rate
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-38"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-38">35.2.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Generate silence:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc=0
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a sin signal with frequency of 440 Hz, set sample rate to
|
|
8000 Hz:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc="sin(440*2*PI*t):s=8000"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a two channels signal, specify the channel layout (Front
|
|
Center + Back Center) explicitly:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate white noise:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc="-2+random(0)"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate an amplitude modulated signal:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate 2.5 Hz binaural beats on a 360 Hz carrier:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="anullsrc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-anullsrc">35.3 anullsrc</a></h2>
|
|
|
|
<p>Null audio source, return unprocessed audio frames. It is mainly useful
|
|
as a template and to be employed in analysis / debugging tools, or as
|
|
the source for filters which ignore the input data (for example the sox
|
|
synth filter).
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>channel_layout, cl</samp>’</dt>
|
|
<dd>
|
|
<p>Specify the channel layout, and can be either an integer or a string
|
|
representing a channel layout. The default value of <var>channel_layout</var>
|
|
is "stereo".
|
|
</p>
|
|
<p>Check the channel_layout_map definition in
|
|
‘<tt>libavutil/channel_layout.c</tt>’ for the mapping between strings and
|
|
channel layout values.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate, r</samp>’</dt>
|
|
<dd><p>Specify the sample rate, and defaults to 44100.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_samples, n</samp>’</dt>
|
|
<dd><p>Set the number of samples per requested frames.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-22"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-22">35.3.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
|
|
<table><tr><td> </td><td><pre class="example">anullsrc=r=48000:cl=4
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Do the same operation with a more obvious syntax:
|
|
<table><tr><td> </td><td><pre class="example">anullsrc=r=48000:cl=mono
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>All the parameters need to be explicitly defined.
|
|
</p>
|
|
<a name="flite"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-flite">35.4 flite</a></h2>
|
|
|
|
<p>Synthesize a voice utterance using the libflite library.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to configure FFmpeg with
|
|
<code>--enable-libflite</code>.
|
|
</p>
|
|
<p>Note that the flite library is not thread-safe.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>list_voices</samp>’</dt>
|
|
<dd><p>If set to 1, list the names of the available voices and exit
|
|
immediately. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_samples, n</samp>’</dt>
|
|
<dd><p>Set the maximum number of samples per frame. Default value is 512.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>textfile</samp>’</dt>
|
|
<dd><p>Set the filename containing the text to speak.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>text</samp>’</dt>
|
|
<dd><p>Set the text to speak.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>voice, v</samp>’</dt>
|
|
<dd><p>Set the voice to use for the speech synthesis. Default value is
|
|
<code>kal</code>. See also the <var>list_voices</var> option.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-35"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-35">35.4.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Read from file ‘<tt>speech.txt</tt>’, and synthetize the text using the
|
|
standard flite voice:
|
|
<table><tr><td> </td><td><pre class="example">flite=textfile=speech.txt
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Read the specified text selecting the <code>slt</code> voice:
|
|
<table><tr><td> </td><td><pre class="example">flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Input text to ffmpeg:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Make ‘<tt>ffplay</tt>’ speak the specified text, using <code>flite</code> and
|
|
the <code>lavfi</code> device:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>For more information about libflite, check:
|
|
<a href="http://www.speech.cs.cmu.edu/flite/">http://www.speech.cs.cmu.edu/flite/</a>
|
|
</p>
|
|
<a name="sine"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sine">35.5 sine</a></h2>
|
|
|
|
<p>Generate an audio signal made of a sine wave with amplitude 1/8.
|
|
</p>
|
|
<p>The audio signal is bit-exact.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>frequency, f</samp>’</dt>
|
|
<dd><p>Set the carrier frequency. Default is 440 Hz.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>beep_factor, b</samp>’</dt>
|
|
<dd><p>Enable a periodic beep every second with frequency <var>beep_factor</var> times
|
|
the carrier frequency. Default is 0, meaning the beep is disabled.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate, r</samp>’</dt>
|
|
<dd><p>Specify the sample rate, default is 44100.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Specify the duration of the generated audio stream.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>samples_per_frame</samp>’</dt>
|
|
<dd><p>Set the number of samples per output frame, default is 1024.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-44"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-44">35.5.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Generate a simple 440 Hz sine wave:
|
|
<table><tr><td> </td><td><pre class="example">sine
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
|
|
<table><tr><td> </td><td><pre class="example">sine=220:4:d=5
|
|
sine=f=220:b=4:d=5
|
|
sine=frequency=220:beep_factor=4:duration=5
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
|
|
<a name="Audio-Sinks"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Sinks">36. Audio Sinks</a></h1>
|
|
|
|
<p>Below is a description of the currently available audio sinks.
|
|
</p>
|
|
<a name="abuffersink"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-abuffersink">36.1 abuffersink</a></h2>
|
|
|
|
<p>Buffer audio frames, and make them available to the end of filter chain.
|
|
</p>
|
|
<p>This sink is mainly intended for programmatic use, in particular
|
|
through the interface defined in ‘<tt>libavfilter/buffersink.h</tt>’
|
|
or the options system.
|
|
</p>
|
|
<p>It accepts a pointer to an AVABufferSinkContext structure, which
|
|
defines the incoming buffers’ formats, to be passed as the opaque
|
|
parameter to <code>avfilter_init_filter</code> for initialization.
|
|
</p>
|
|
<a name="anullsink"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-anullsink">36.2 anullsink</a></h2>
|
|
|
|
<p>Null audio sink, do absolutely nothing with the input audio. It is
|
|
mainly useful as a template and to be employed in analysis / debugging
|
|
tools.
|
|
</p>
|
|
|
|
<a name="Video-Filters"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Filters">37. Video Filters</a></h1>
|
|
|
|
<p>When you configure your FFmpeg build, you can disable any of the
|
|
existing filters using <code>--disable-filters</code>.
|
|
The configure output will show the video filters included in your
|
|
build.
|
|
</p>
|
|
<p>Below is a description of the currently available video filters.
|
|
</p>
|
|
<a name="alphaextract"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-alphaextract">37.1 alphaextract</a></h2>
|
|
|
|
<p>Extract the alpha component from the input as a grayscale video. This
|
|
is especially useful with the <var>alphamerge</var> filter.
|
|
</p>
|
|
<a name="alphamerge"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-alphamerge">37.2 alphamerge</a></h2>
|
|
|
|
<p>Add or replace the alpha component of the primary input with the
|
|
grayscale value of a second input. This is intended for use with
|
|
<var>alphaextract</var> to allow the transmission or storage of frame
|
|
sequences that have alpha in a format that doesn’t support an alpha
|
|
channel.
|
|
</p>
|
|
<p>For example, to reconstruct full frames from a normal YUV-encoded video
|
|
and a separate video created with <var>alphaextract</var>, you might use:
|
|
</p><table><tr><td> </td><td><pre class="example">movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
|
|
</pre></td></tr></table>
|
|
|
|
<p>Since this filter is designed for reconstruction, it operates on frame
|
|
sequences without considering timestamps, and terminates when either
|
|
input reaches end of stream. This will cause problems if your encoding
|
|
pipeline drops frames. If you’re trying to apply an image as an
|
|
overlay to a video stream, consider the <var>overlay</var> filter instead.
|
|
</p>
|
|
<a name="ass"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ass">37.3 ass</a></h2>
|
|
|
|
<p>Same as the <a href="#subtitles">subtitles</a> filter, except that it doesn’t require libavcodec
|
|
and libavformat to work. On the other hand, it is limited to ASS (Advanced
|
|
Substation Alpha) subtitles files.
|
|
</p>
|
|
<a name="bbox"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-bbox">37.4 bbox</a></h2>
|
|
|
|
<p>Compute the bounding box for the non-black pixels in the input frame
|
|
luminance plane.
|
|
</p>
|
|
<p>This filter computes the bounding box containing all the pixels with a
|
|
luminance value greater than the minimum allowed value.
|
|
The parameters describing the bounding box are printed on the filter
|
|
log.
|
|
</p>
|
|
<p>The filter accepts the following option:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>min_val</samp>’</dt>
|
|
<dd><p>Set the minimal luminance value. Default is <code>16</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="blackdetect"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-blackdetect">37.5 blackdetect</a></h2>
|
|
|
|
<p>Detect video intervals that are (almost) completely black. Can be
|
|
useful to detect chapter transitions, commercials, or invalid
|
|
recordings. Output lines contains the time for the start, end and
|
|
duration of the detected black interval expressed in seconds.
|
|
</p>
|
|
<p>In order to display the output lines, you need to set the loglevel at
|
|
least to the AV_LOG_INFO value.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>black_min_duration, d</samp>’</dt>
|
|
<dd><p>Set the minimum detected black duration expressed in seconds. It must
|
|
be a non-negative floating point number.
|
|
</p>
|
|
<p>Default value is 2.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>picture_black_ratio_th, pic_th</samp>’</dt>
|
|
<dd><p>Set the threshold for considering a picture "black".
|
|
Express the minimum value for the ratio:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>nb_black_pixels</var> / <var>nb_pixels</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>for which a picture is considered black.
|
|
Default value is 0.98.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pixel_black_th, pix_th</samp>’</dt>
|
|
<dd><p>Set the threshold for considering a pixel "black".
|
|
</p>
|
|
<p>The threshold expresses the maximum pixel luminance value for which a
|
|
pixel is considered "black". The provided value is scaled according to
|
|
the following equation:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>absolute_threshold</var> = <var>luminance_minimum_value</var> + <var>pixel_black_th</var> * <var>luminance_range_size</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>luminance_range_size</var> and <var>luminance_minimum_value</var> depend on
|
|
the input video format, the range is [0-255] for YUV full-range
|
|
formats and [16-235] for YUV non full-range formats.
|
|
</p>
|
|
<p>Default value is 0.10.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The following example sets the maximum pixel threshold to the minimum
|
|
value, and detects only black intervals of 2 or more seconds:
|
|
</p><table><tr><td> </td><td><pre class="example">blackdetect=d=2:pix_th=0.00
|
|
</pre></td></tr></table>
|
|
|
|
<a name="blackframe"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-blackframe">37.6 blackframe</a></h2>
|
|
|
|
<p>Detect frames that are (almost) completely black. Can be useful to
|
|
detect chapter transitions or commercials. Output lines consist of
|
|
the frame number of the detected frame, the percentage of blackness,
|
|
the position in the file if known or -1 and the timestamp in seconds.
|
|
</p>
|
|
<p>In order to display the output lines, you need to set the loglevel at
|
|
least to the AV_LOG_INFO value.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>amount</samp>’</dt>
|
|
<dd><p>Set the percentage of the pixels that have to be below the threshold, defaults
|
|
to <code>98</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>threshold, thresh</samp>’</dt>
|
|
<dd><p>Set the threshold below which a pixel value is considered black, defaults to
|
|
<code>32</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="blend"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-blend">37.7 blend</a></h2>
|
|
|
|
<p>Blend two video frames into each other.
|
|
</p>
|
|
<p>It takes two input streams and outputs one stream, the first input is the
|
|
"top" layer and second input is "bottom" layer.
|
|
Output terminates when shortest input terminates.
|
|
</p>
|
|
<p>A description of the accepted options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>c0_mode</samp>’</dt>
|
|
<dt> ‘<samp>c1_mode</samp>’</dt>
|
|
<dt> ‘<samp>c2_mode</samp>’</dt>
|
|
<dt> ‘<samp>c3_mode</samp>’</dt>
|
|
<dt> ‘<samp>all_mode</samp>’</dt>
|
|
<dd><p>Set blend mode for specific pixel component or all pixel components in case
|
|
of <var>all_mode</var>. Default value is <code>normal</code>.
|
|
</p>
|
|
<p>Available values for component modes are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>addition</samp>’</dt>
|
|
<dt> ‘<samp>and</samp>’</dt>
|
|
<dt> ‘<samp>average</samp>’</dt>
|
|
<dt> ‘<samp>burn</samp>’</dt>
|
|
<dt> ‘<samp>darken</samp>’</dt>
|
|
<dt> ‘<samp>difference</samp>’</dt>
|
|
<dt> ‘<samp>divide</samp>’</dt>
|
|
<dt> ‘<samp>dodge</samp>’</dt>
|
|
<dt> ‘<samp>exclusion</samp>’</dt>
|
|
<dt> ‘<samp>hardlight</samp>’</dt>
|
|
<dt> ‘<samp>lighten</samp>’</dt>
|
|
<dt> ‘<samp>multiply</samp>’</dt>
|
|
<dt> ‘<samp>negation</samp>’</dt>
|
|
<dt> ‘<samp>normal</samp>’</dt>
|
|
<dt> ‘<samp>or</samp>’</dt>
|
|
<dt> ‘<samp>overlay</samp>’</dt>
|
|
<dt> ‘<samp>phoenix</samp>’</dt>
|
|
<dt> ‘<samp>pinlight</samp>’</dt>
|
|
<dt> ‘<samp>reflect</samp>’</dt>
|
|
<dt> ‘<samp>screen</samp>’</dt>
|
|
<dt> ‘<samp>softlight</samp>’</dt>
|
|
<dt> ‘<samp>subtract</samp>’</dt>
|
|
<dt> ‘<samp>vividlight</samp>’</dt>
|
|
<dt> ‘<samp>xor</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>c0_opacity</samp>’</dt>
|
|
<dt> ‘<samp>c1_opacity</samp>’</dt>
|
|
<dt> ‘<samp>c2_opacity</samp>’</dt>
|
|
<dt> ‘<samp>c3_opacity</samp>’</dt>
|
|
<dt> ‘<samp>all_opacity</samp>’</dt>
|
|
<dd><p>Set blend opacity for specific pixel component or all pixel components in case
|
|
of <var>all_opacity</var>. Only used in combination with pixel component blend modes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>c0_expr</samp>’</dt>
|
|
<dt> ‘<samp>c1_expr</samp>’</dt>
|
|
<dt> ‘<samp>c2_expr</samp>’</dt>
|
|
<dt> ‘<samp>c3_expr</samp>’</dt>
|
|
<dt> ‘<samp>all_expr</samp>’</dt>
|
|
<dd><p>Set blend expression for specific pixel component or all pixel components in case
|
|
of <var>all_expr</var>. Note that related mode options will be ignored if those are set.
|
|
</p>
|
|
<p>The expressions can use the following variables:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>N</samp>’</dt>
|
|
<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>X</samp>’</dt>
|
|
<dt> ‘<samp>Y</samp>’</dt>
|
|
<dd><p>the coordinates of the current sample
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>W</samp>’</dt>
|
|
<dt> ‘<samp>H</samp>’</dt>
|
|
<dd><p>the width and height of currently filtered plane
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>SW</samp>’</dt>
|
|
<dt> ‘<samp>SH</samp>’</dt>
|
|
<dd><p>Width and height scale depending on the currently filtered plane. It is the
|
|
ratio between the corresponding luma plane number of pixels and the current
|
|
plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
|
|
<code>0.5,0.5</code> for chroma planes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>T</samp>’</dt>
|
|
<dd><p>Time of the current frame, expressed in seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>TOP, A</samp>’</dt>
|
|
<dd><p>Value of pixel component at current location for first video frame (top layer).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>BOTTOM, B</samp>’</dt>
|
|
<dd><p>Value of pixel component at current location for second video frame (bottom layer).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>shortest</samp>’</dt>
|
|
<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>repeatlast</samp>’</dt>
|
|
<dd><p>Continue applying the last bottom frame after the end of the stream. A value of
|
|
<code>0</code> disable the filter after the last frame of the bottom layer is reached.
|
|
Default is <code>1</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-47"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-47">37.7.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply transition from bottom layer to top layer in first 10 seconds:
|
|
<table><tr><td> </td><td><pre class="example">blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply 1x1 checkerboard effect:
|
|
<table><tr><td> </td><td><pre class="example">blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply uncover left effect:
|
|
<table><tr><td> </td><td><pre class="example">blend=all_expr='if(gte(N*SW+X,W),A,B)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply uncover down effect:
|
|
<table><tr><td> </td><td><pre class="example">blend=all_expr='if(gte(Y-N*SH,0),A,B)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply uncover up-left effect:
|
|
<table><tr><td> </td><td><pre class="example">blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="boxblur"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-boxblur">37.8 boxblur</a></h2>
|
|
|
|
<p>Apply boxblur algorithm to the input video.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_radius, lr</samp>’</dt>
|
|
<dt> ‘<samp>luma_power, lp</samp>’</dt>
|
|
<dt> ‘<samp>chroma_radius, cr</samp>’</dt>
|
|
<dt> ‘<samp>chroma_power, cp</samp>’</dt>
|
|
<dt> ‘<samp>alpha_radius, ar</samp>’</dt>
|
|
<dt> ‘<samp>alpha_power, ap</samp>’</dt>
|
|
</dl>
|
|
|
|
<p>A description of the accepted options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_radius, lr</samp>’</dt>
|
|
<dt> ‘<samp>chroma_radius, cr</samp>’</dt>
|
|
<dt> ‘<samp>alpha_radius, ar</samp>’</dt>
|
|
<dd><p>Set an expression for the box radius in pixels used for blurring the
|
|
corresponding input plane.
|
|
</p>
|
|
<p>The radius value must be a non-negative number, and must not be
|
|
greater than the value of the expression <code>min(w,h)/2</code> for the
|
|
luma and alpha planes, and of <code>min(cw,ch)/2</code> for the chroma
|
|
planes.
|
|
</p>
|
|
<p>Default value for ‘<samp>luma_radius</samp>’ is "2". If not specified,
|
|
‘<samp>chroma_radius</samp>’ and ‘<samp>alpha_radius</samp>’ default to the
|
|
corresponding value set for ‘<samp>luma_radius</samp>’.
|
|
</p>
|
|
<p>The expressions can contain the following constants:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>the input width and height in pixels
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cw</samp>’</dt>
|
|
<dt> ‘<samp>ch</samp>’</dt>
|
|
<dd><p>the input chroma image width and height in pixels
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>luma_power, lp</samp>’</dt>
|
|
<dt> ‘<samp>chroma_power, cp</samp>’</dt>
|
|
<dt> ‘<samp>alpha_power, ap</samp>’</dt>
|
|
<dd><p>Specify how many times the boxblur filter is applied to the
|
|
corresponding plane.
|
|
</p>
|
|
<p>Default value for ‘<samp>luma_power</samp>’ is 2. If not specified,
|
|
‘<samp>chroma_power</samp>’ and ‘<samp>alpha_power</samp>’ default to the
|
|
corresponding value set for ‘<samp>luma_power</samp>’.
|
|
</p>
|
|
<p>A value of 0 will disable the effect.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-97"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-97">37.8.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply a boxblur filter with luma, chroma, and alpha radius
|
|
set to 2:
|
|
<table><tr><td> </td><td><pre class="example">boxblur=luma_radius=2:luma_power=1
|
|
boxblur=2:1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set luma radius to 2, alpha and chroma radius to 0:
|
|
<table><tr><td> </td><td><pre class="example">boxblur=2:1:cr=0:ar=0
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set luma and chroma radius to a fraction of the video dimension:
|
|
<table><tr><td> </td><td><pre class="example">boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="colorbalance"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-colorbalance">37.9 colorbalance</a></h2>
|
|
<p>Modify intensity of primary colors (red, green and blue) of input frames.
|
|
</p>
|
|
<p>The filter allows an input frame to be adjusted in the shadows, midtones or highlights
|
|
regions for the red-cyan, green-magenta or blue-yellow balance.
|
|
</p>
|
|
<p>A positive adjustment value shifts the balance towards the primary color, a negative
|
|
value towards the complementary color.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>rs</samp>’</dt>
|
|
<dt> ‘<samp>gs</samp>’</dt>
|
|
<dt> ‘<samp>bs</samp>’</dt>
|
|
<dd><p>Adjust red, green and blue shadows (darkest pixels).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rm</samp>’</dt>
|
|
<dt> ‘<samp>gm</samp>’</dt>
|
|
<dt> ‘<samp>bm</samp>’</dt>
|
|
<dd><p>Adjust red, green and blue midtones (medium pixels).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rh</samp>’</dt>
|
|
<dt> ‘<samp>gh</samp>’</dt>
|
|
<dt> ‘<samp>bh</samp>’</dt>
|
|
<dd><p>Adjust red, green and blue highlights (brightest pixels).
|
|
</p>
|
|
<p>Allowed ranges for options are <code>[-1.0, 1.0]</code>. Defaults are <code>0</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-94"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-94">37.9.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Add red color cast to shadows:
|
|
<table><tr><td> </td><td><pre class="example">colorbalance=rs=.3
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="colorchannelmixer"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-colorchannelmixer">37.10 colorchannelmixer</a></h2>
|
|
|
|
<p>Adjust video input frames by re-mixing color channels.
|
|
</p>
|
|
<p>This filter modifies a color channel by adding the values associated to
|
|
the other channels of the same pixels. For example if the value to
|
|
modify is red, the output value will be:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>red</var>=<var>red</var>*<var>rr</var> + <var>blue</var>*<var>rb</var> + <var>green</var>*<var>rg</var> + <var>alpha</var>*<var>ra</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>rr</samp>’</dt>
|
|
<dt> ‘<samp>rg</samp>’</dt>
|
|
<dt> ‘<samp>rb</samp>’</dt>
|
|
<dt> ‘<samp>ra</samp>’</dt>
|
|
<dd><p>Adjust contribution of input red, green, blue and alpha channels for output red channel.
|
|
Default is <code>1</code> for <var>rr</var>, and <code>0</code> for <var>rg</var>, <var>rb</var> and <var>ra</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gr</samp>’</dt>
|
|
<dt> ‘<samp>gg</samp>’</dt>
|
|
<dt> ‘<samp>gb</samp>’</dt>
|
|
<dt> ‘<samp>ga</samp>’</dt>
|
|
<dd><p>Adjust contribution of input red, green, blue and alpha channels for output green channel.
|
|
Default is <code>1</code> for <var>gg</var>, and <code>0</code> for <var>gr</var>, <var>gb</var> and <var>ga</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>br</samp>’</dt>
|
|
<dt> ‘<samp>bg</samp>’</dt>
|
|
<dt> ‘<samp>bb</samp>’</dt>
|
|
<dt> ‘<samp>ba</samp>’</dt>
|
|
<dd><p>Adjust contribution of input red, green, blue and alpha channels for output blue channel.
|
|
Default is <code>1</code> for <var>bb</var>, and <code>0</code> for <var>br</var>, <var>bg</var> and <var>ba</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ar</samp>’</dt>
|
|
<dt> ‘<samp>ag</samp>’</dt>
|
|
<dt> ‘<samp>ab</samp>’</dt>
|
|
<dt> ‘<samp>aa</samp>’</dt>
|
|
<dd><p>Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
|
|
Default is <code>1</code> for <var>aa</var>, and <code>0</code> for <var>ar</var>, <var>ag</var> and <var>ab</var>.
|
|
</p>
|
|
<p>Allowed ranges for options are <code>[-2.0, 2.0]</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-40"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-40">37.10.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Convert source to grayscale:
|
|
<table><tr><td> </td><td><pre class="example">colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
|
|
</pre></td></tr></table>
|
|
</li><li>
|
|
Simulate sepia tones:
|
|
<table><tr><td> </td><td><pre class="example">colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="colormatrix"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-colormatrix">37.11 colormatrix</a></h2>
|
|
|
|
<p>Convert color matrix.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>src</samp>’</dt>
|
|
<dt> ‘<samp>dst</samp>’</dt>
|
|
<dd><p>Specify the source and destination color matrix. Both values must be
|
|
specified.
|
|
</p>
|
|
<p>The accepted values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>bt709</samp>’</dt>
|
|
<dd><p>BT.709
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bt601</samp>’</dt>
|
|
<dd><p>BT.601
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>smpte240m</samp>’</dt>
|
|
<dd><p>SMPTE-240M
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fcc</samp>’</dt>
|
|
<dd><p>FCC
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example to convert from BT.601 to SMPTE-240M, use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">colormatrix=bt601:smpte240m
|
|
</pre></td></tr></table>
|
|
|
|
<a name="copy"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-copy">37.12 copy</a></h2>
|
|
|
|
<p>Copy the input source unchanged to the output. Mainly useful for
|
|
testing purposes.
|
|
</p>
|
|
<a name="crop"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-crop">37.13 crop</a></h2>
|
|
|
|
<p>Crop the input video to given dimensions.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>w, out_w</samp>’</dt>
|
|
<dd><p>Width of the output video. It defaults to <code>iw</code>.
|
|
This expression is evaluated only once during the filter
|
|
configuration.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>h, out_h</samp>’</dt>
|
|
<dd><p>Height of the output video. It defaults to <code>ih</code>.
|
|
This expression is evaluated only once during the filter
|
|
configuration.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dd><p>Horizontal position, in the input video, of the left edge of the output video.
|
|
It defaults to <code>(in_w-out_w)/2</code>.
|
|
This expression is evaluated per-frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>Vertical position, in the input video, of the top edge of the output video.
|
|
It defaults to <code>(in_h-out_h)/2</code>.
|
|
This expression is evaluated per-frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>keep_aspect</samp>’</dt>
|
|
<dd><p>If set to 1 will force the output display aspect ratio
|
|
to be the same of the input, by changing the output sample aspect
|
|
ratio. It defaults to 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The <var>out_w</var>, <var>out_h</var>, <var>x</var>, <var>y</var> parameters are
|
|
expressions containing the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
|
|
each new frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>in_w</samp>’</dt>
|
|
<dt> ‘<samp>in_h</samp>’</dt>
|
|
<dd><p>the input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>iw</samp>’</dt>
|
|
<dt> ‘<samp>ih</samp>’</dt>
|
|
<dd><p>same as <var>in_w</var> and <var>in_h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_w</samp>’</dt>
|
|
<dt> ‘<samp>out_h</samp>’</dt>
|
|
<dd><p>the output (cropped) width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ow</samp>’</dt>
|
|
<dt> ‘<samp>oh</samp>’</dt>
|
|
<dd><p>same as <var>out_w</var> and <var>out_h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>same as <var>iw</var> / <var>ih</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>input sample aspect ratio
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dar</samp>’</dt>
|
|
<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>the number of input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>the position in the file of the input frame, NAN if unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
|
|
and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
|
|
cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
|
|
evaluated after <var>out_w</var> and <var>out_h</var>.
|
|
</p>
|
|
<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
|
|
position of the top-left corner of the output (non-cropped) area. They
|
|
are evaluated for each frame. If the evaluated value is not valid, it
|
|
is approximated to the nearest valid value.
|
|
</p>
|
|
<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
|
|
for <var>y</var> may depend on <var>x</var>.
|
|
</p>
|
|
<a name="Examples-34"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-34">37.13.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Crop area with size 100x100 at position (12,34).
|
|
<table><tr><td> </td><td><pre class="example">crop=100:100:12:34
|
|
</pre></td></tr></table>
|
|
|
|
<p>Using named options, the example above becomes:
|
|
</p><table><tr><td> </td><td><pre class="example">crop=w=100:h=100:x=12:y=34
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Crop the central input area with size 100x100:
|
|
<table><tr><td> </td><td><pre class="example">crop=100:100
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Crop the central input area with size 2/3 of the input video:
|
|
<table><tr><td> </td><td><pre class="example">crop=2/3*in_w:2/3*in_h
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Crop the input video central square:
|
|
<table><tr><td> </td><td><pre class="example">crop=out_w=in_h
|
|
crop=in_h
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Delimit the rectangle with the top-left corner placed at position
|
|
100:100 and the right-bottom corner corresponding to the right-bottom
|
|
corner of the input image:
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w-100:in_h-100:100:100
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Crop 10 pixels from the left and right borders, and 20 pixels from
|
|
the top and bottom borders
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w-2*10:in_h-2*20
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Keep only the bottom right quarter of the input image:
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w/2:in_h/2:in_w/2:in_h/2
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Crop height for getting Greek harmony:
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w:1/PHI*in_w
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Appply trembling effect:
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply erratic camera effect depending on timestamp:
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set x depending on the value of y:
|
|
<table><tr><td> </td><td><pre class="example">crop=in_w/2:in_h/2:y:10+10*sin(n/10)
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="cropdetect"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-cropdetect">37.14 cropdetect</a></h2>
|
|
|
|
<p>Auto-detect crop size.
|
|
</p>
|
|
<p>Calculate necessary cropping parameters and prints the recommended
|
|
parameters through the logging system. The detected dimensions
|
|
correspond to the non-black area of the input video.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>limit</samp>’</dt>
|
|
<dd><p>Set higher black value threshold, which can be optionally specified
|
|
from nothing (0) to everything (255). An intensity value greater
|
|
to the set value is considered non-black. Default value is 24.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>round</samp>’</dt>
|
|
<dd><p>Set the value for which the width/height should be divisible by. The
|
|
offset is automatically adjusted to center the video. Use 2 to get
|
|
only even dimensions (needed for 4:2:2 video). 16 is best when
|
|
encoding to most video codecs. Default value is 16.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>reset_count, reset</samp>’</dt>
|
|
<dd><p>Set the counter that determines after how many frames cropdetect will
|
|
reset the previously detected largest video area and start over to
|
|
detect the current optimal crop area. Default value is 0.
|
|
</p>
|
|
<p>This can be useful when channel logos distort the video area. 0
|
|
indicates never reset and return the largest area encountered during
|
|
playback.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="curves"></a>
|
|
</p><a name="curves-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-curves-1">37.15 curves</a></h2>
|
|
|
|
<p>Apply color adjustments using curves.
|
|
</p>
|
|
<p>This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
|
|
component (red, green and blue) has its values defined by <var>N</var> key points
|
|
tied from each other using a smooth curve. The x-axis represents the pixel
|
|
values from the input frame, and the y-axis the new pixel values to be set for
|
|
the output frame.
|
|
</p>
|
|
<p>By default, a component curve is defined by the two points <var>(0;0)</var> and
|
|
<var>(1;1)</var>. This creates a straight line where each original pixel value is
|
|
"adjusted" to its own value, which means no change to the image.
|
|
</p>
|
|
<p>The filter allows you to redefine these two points and add some more. A new
|
|
curve (using a natural cubic spline interpolation) will be define to pass
|
|
smoothly through all these new coordinates. The new defined points needs to be
|
|
strictly increasing over the x-axis, and their <var>x</var> and <var>y</var> values must
|
|
be in the <var>[0;1]</var> interval. If the computed curves happened to go outside
|
|
the vector spaces, the values will be clipped accordingly.
|
|
</p>
|
|
<p>If there is no key point defined in <code>x=0</code>, the filter will automatically
|
|
insert a <var>(0;0)</var> point. In the same way, if there is no key point defined
|
|
in <code>x=1</code>, the filter will automatically insert a <var>(1;1)</var> point.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>preset</samp>’</dt>
|
|
<dd><p>Select one of the available color presets. This option can be used in addition
|
|
to the ‘<samp>r</samp>’, ‘<samp>g</samp>’, ‘<samp>b</samp>’ parameters; in this case, the later
|
|
options takes priority on the preset values.
|
|
Available presets are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dt> ‘<samp>color_negative</samp>’</dt>
|
|
<dt> ‘<samp>cross_process</samp>’</dt>
|
|
<dt> ‘<samp>darker</samp>’</dt>
|
|
<dt> ‘<samp>increase_contrast</samp>’</dt>
|
|
<dt> ‘<samp>lighter</samp>’</dt>
|
|
<dt> ‘<samp>linear_contrast</samp>’</dt>
|
|
<dt> ‘<samp>medium_contrast</samp>’</dt>
|
|
<dt> ‘<samp>negative</samp>’</dt>
|
|
<dt> ‘<samp>strong_contrast</samp>’</dt>
|
|
<dt> ‘<samp>vintage</samp>’</dt>
|
|
</dl>
|
|
<p>Default is <code>none</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>master, m</samp>’</dt>
|
|
<dd><p>Set the master key points. These points will define a second pass mapping. It
|
|
is sometimes called a "luminance" or "value" mapping. It can be used with
|
|
‘<samp>r</samp>’, ‘<samp>g</samp>’, ‘<samp>b</samp>’ or ‘<samp>all</samp>’ since it acts like a
|
|
post-processing LUT.
|
|
</p></dd>
|
|
<dt> ‘<samp>red, r</samp>’</dt>
|
|
<dd><p>Set the key points for the red component.
|
|
</p></dd>
|
|
<dt> ‘<samp>green, g</samp>’</dt>
|
|
<dd><p>Set the key points for the green component.
|
|
</p></dd>
|
|
<dt> ‘<samp>blue, b</samp>’</dt>
|
|
<dd><p>Set the key points for the blue component.
|
|
</p></dd>
|
|
<dt> ‘<samp>all</samp>’</dt>
|
|
<dd><p>Set the key points for all components (not including master).
|
|
Can be used in addition to the other key points component
|
|
options. In this case, the unset component(s) will fallback on this
|
|
‘<samp>all</samp>’ setting.
|
|
</p></dd>
|
|
<dt> ‘<samp>psfile</samp>’</dt>
|
|
<dd><p>Specify a Photoshop curves file (<code>.asv</code>) to import the settings from.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>To avoid some filtergraph syntax conflicts, each key points list need to be
|
|
defined using the following syntax: <code>x0/y0 x1/y1 x2/y2 ...</code>.
|
|
</p>
|
|
<a name="Examples-69"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-69">37.15.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Increase slightly the middle level of blue:
|
|
<table><tr><td> </td><td><pre class="example">curves=blue='0.5/0.58'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Vintage effect:
|
|
<table><tr><td> </td><td><pre class="example">curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
|
|
</pre></td></tr></table>
|
|
<p>Here we obtain the following coordinates for each components:
|
|
</p><dl compact="compact">
|
|
<dt> <var>red</var></dt>
|
|
<dd><p><code>(0;0.11) (0.42;0.51) (1;0.95)</code>
|
|
</p></dd>
|
|
<dt> <var>green</var></dt>
|
|
<dd><p><code>(0;0) (0.50;0.48) (1;1)</code>
|
|
</p></dd>
|
|
<dt> <var>blue</var></dt>
|
|
<dd><p><code>(0;0.22) (0.49;0.44) (1;0.80)</code>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</li><li>
|
|
The previous example can also be achieved with the associated built-in preset:
|
|
<table><tr><td> </td><td><pre class="example">curves=preset=vintage
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Or simply:
|
|
<table><tr><td> </td><td><pre class="example">curves=vintage
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use a Photoshop preset and redefine the points of the green component:
|
|
<table><tr><td> </td><td><pre class="example">curves=psfile='MyCurvesPresets/purple.asv':green='0.45/0.53'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="dctdnoiz"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-dctdnoiz">37.16 dctdnoiz</a></h2>
|
|
|
|
<p>Denoise frames using 2D DCT (frequency domain filtering).
|
|
</p>
|
|
<p>This filter is not designed for real time and can be extremely slow.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>sigma, s</samp>’</dt>
|
|
<dd><p>Set the noise sigma constant.
|
|
</p>
|
|
<p>This <var>sigma</var> defines a hard threshold of <code>3 * sigma</code>; every DCT
|
|
coefficient (absolute value) below this threshold with be dropped.
|
|
</p>
|
|
<p>If you need a more advanced filtering, see ‘<samp>expr</samp>’.
|
|
</p>
|
|
<p>Default is <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>overlap</samp>’</dt>
|
|
<dd><p>Set number overlapping pixels for each block. Each block is of size
|
|
<code>16x16</code>. Since the filter can be slow, you may want to reduce this value,
|
|
at the cost of a less effective filter and the risk of various artefacts.
|
|
</p>
|
|
<p>If the overlapping value doesn’t allow to process the whole input width or
|
|
height, a warning will be displayed and according borders won’t be denoised.
|
|
</p>
|
|
<p>Default value is <code>15</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>expr, e</samp>’</dt>
|
|
<dd><p>Set the coefficient factor expression.
|
|
</p>
|
|
<p>For each coefficient of a DCT block, this expression will be evaluated as a
|
|
multiplier value for the coefficient.
|
|
</p>
|
|
<p>If this is option is set, the ‘<samp>sigma</samp>’ option will be ignored.
|
|
</p>
|
|
<p>The absolute value of the coefficient can be accessed through the <var>c</var>
|
|
variable.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-84"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-84">37.16.1 Examples</a></h3>
|
|
|
|
<p>Apply a denoise with a ‘<samp>sigma</samp>’ of <code>4.5</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">dctdnoiz=4.5
|
|
</pre></td></tr></table>
|
|
|
|
<p>The same operation can be achieved using the expression system:
|
|
</p><table><tr><td> </td><td><pre class="example">dctdnoiz=e='gte(c, 4.5*3)'
|
|
</pre></td></tr></table>
|
|
|
|
<p><a name="decimate"></a>
|
|
</p><a name="decimate-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-decimate-1">37.17 decimate</a></h2>
|
|
|
|
<p>Drop duplicated frames at regular intervals.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>cycle</samp>’</dt>
|
|
<dd><p>Set the number of frames from which one will be dropped. Setting this to
|
|
<var>N</var> means one frame in every batch of <var>N</var> frames will be dropped.
|
|
Default is <code>5</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dupthresh</samp>’</dt>
|
|
<dd><p>Set the threshold for duplicate detection. If the difference metric for a frame
|
|
is less than or equal to this value, then it is declared as duplicate. Default
|
|
is <code>1.1</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scthresh</samp>’</dt>
|
|
<dd><p>Set scene change threshold. Default is <code>15</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>blockx</samp>’</dt>
|
|
<dt> ‘<samp>blocky</samp>’</dt>
|
|
<dd><p>Set the size of the x and y-axis blocks used during metric calculations.
|
|
Larger blocks give better noise suppression, but also give worse detection of
|
|
small movements. Must be a power of two. Default is <code>32</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ppsrc</samp>’</dt>
|
|
<dd><p>Mark main input as a pre-processed input and activate clean source input
|
|
stream. This allows the input to be pre-processed with various filters to help
|
|
the metrics calculation while keeping the frame selection lossless. When set to
|
|
<code>1</code>, the first stream is for the pre-processed input, and the second
|
|
stream is the clean source from where the kept frames are chosen. Default is
|
|
<code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
<dd><p>Set whether or not chroma is considered in the metric calculations. Default is
|
|
<code>1</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="dejudder"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-dejudder">37.18 dejudder</a></h2>
|
|
|
|
<p>Remove judder produced by partially interlaced telecined content.
|
|
</p>
|
|
<p>Judder can be introduced, for instance, by <a href="#pullup">pullup</a> filter. If the original
|
|
source was partially telecined content then the output of <code>pullup,dejudder</code>
|
|
will have a variable frame rate. May change the recorded frame rate of the
|
|
container. Aside from that change, this filter will not affect constant frame
|
|
rate video.
|
|
</p>
|
|
<p>The option available in this filter is:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>cycle</samp>’</dt>
|
|
<dd><p>Specify the length of the window over which the judder repeats.
|
|
</p>
|
|
<p>Accepts any interger greater than 1. Useful values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>4</samp>’</dt>
|
|
<dd><p>If the original was telecined from 24 to 30 fps (Film to NTSC).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>5</samp>’</dt>
|
|
<dd><p>If the original was telecined from 25 to 30 fps (PAL to NTSC).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>20</samp>’</dt>
|
|
<dd><p>If a mixture of the two.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The default is ‘<samp>4</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="delogo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-delogo">37.19 delogo</a></h2>
|
|
|
|
<p>Suppress a TV station logo by a simple interpolation of the surrounding
|
|
pixels. Just set a rectangle covering the logo and watch it disappear
|
|
(and sometimes something even uglier appear - your mileage may vary).
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>Specify the top left corner coordinates of the logo. They must be
|
|
specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Specify the width and height of the logo to clear. They must be
|
|
specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>band, t</samp>’</dt>
|
|
<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
|
|
<var>w</var> and <var>h</var>). The default value is 4.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>show</samp>’</dt>
|
|
<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
|
|
finding the right <var>x</var>, <var>y</var>, <var>w</var>, and <var>h</var> parameters.
|
|
The default value is 0.
|
|
</p>
|
|
<p>The rectangle is drawn on the outermost pixels which will be (partly)
|
|
replaced with interpolated values. The values of the next pixels
|
|
immediately outside this rectangle in each direction will be used to
|
|
compute the interpolated pixel values inside the rectangle.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-82"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-82">37.19.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Set a rectangle covering the area with top left corner coordinates 0,0
|
|
and size 100x77, setting a band of size 10:
|
|
<table><tr><td> </td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="deshake"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-deshake">37.20 deshake</a></h2>
|
|
|
|
<p>Attempt to fix small changes in horizontal and/or vertical shift. This
|
|
filter helps remove camera shake from hand-holding a camera, bumping a
|
|
tripod, moving on a vehicle, etc.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Specify a rectangular area where to limit the search for motion
|
|
vectors.
|
|
If desired the search for motion vectors can be limited to a
|
|
rectangular area of the frame defined by its top left corner, width
|
|
and height. These parameters have the same meaning as the drawbox
|
|
filter which can be used to visualise the position of the bounding
|
|
box.
|
|
</p>
|
|
<p>This is useful when simultaneous movement of subjects within the frame
|
|
might be confused for camera motion by the motion vector search.
|
|
</p>
|
|
<p>If any or all of <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> are set to -1
|
|
then the full frame is used. This allows later options to be set
|
|
without specifying the bounding box for the motion vector search.
|
|
</p>
|
|
<p>Default - search the whole frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rx</samp>’</dt>
|
|
<dt> ‘<samp>ry</samp>’</dt>
|
|
<dd><p>Specify the maximum extent of movement in x and y directions in the
|
|
range 0-64 pixels. Default 16.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>edge</samp>’</dt>
|
|
<dd><p>Specify how to generate pixels to fill blanks at the edge of the
|
|
frame. Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>blank, 0</samp>’</dt>
|
|
<dd><p>Fill zeroes at blank locations
|
|
</p></dd>
|
|
<dt> ‘<samp>original, 1</samp>’</dt>
|
|
<dd><p>Original image at blank locations
|
|
</p></dd>
|
|
<dt> ‘<samp>clamp, 2</samp>’</dt>
|
|
<dd><p>Extruded edge value at blank locations
|
|
</p></dd>
|
|
<dt> ‘<samp>mirror, 3</samp>’</dt>
|
|
<dd><p>Mirrored edge at blank locations
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is ‘<samp>mirror</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>blocksize</samp>’</dt>
|
|
<dd><p>Specify the blocksize to use for motion search. Range 4-128 pixels,
|
|
default 8.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>contrast</samp>’</dt>
|
|
<dd><p>Specify the contrast threshold for blocks. Only blocks with more than
|
|
the specified contrast (difference between darkest and lightest
|
|
pixels) will be considered. Range 1-255, default 125.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>search</samp>’</dt>
|
|
<dd><p>Specify the search strategy. Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>exhaustive, 0</samp>’</dt>
|
|
<dd><p>Set exhaustive search
|
|
</p></dd>
|
|
<dt> ‘<samp>less, 1</samp>’</dt>
|
|
<dd><p>Set less exhaustive search.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is ‘<samp>exhaustive</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filename</samp>’</dt>
|
|
<dd><p>If set then a detailed log of the motion search is written to the
|
|
specified file.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>opencl</samp>’</dt>
|
|
<dd><p>If set to 1, specify using OpenCL capabilities, only available if
|
|
FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="drawbox"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-drawbox">37.21 drawbox</a></h2>
|
|
|
|
<p>Draw a colored box on the input image.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>The expressions which specify the top left corner coordinates of the box. Default to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dt> ‘<samp>height, h</samp>’</dt>
|
|
<dd><p>The expressions which specify the width and height of the box, if 0 they are interpreted as
|
|
the input width and height. Default to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color, c</samp>’</dt>
|
|
<dd><p>Specify the color of the box to write. For the general syntax of this option,
|
|
check the "Color" section in the ffmpeg-utils manual. If the special
|
|
value <code>invert</code> is used, the box edge color is the same as the
|
|
video with inverted luma.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>thickness, t</samp>’</dt>
|
|
<dd><p>The expression which sets the thickness of the box edge. Default value is <code>3</code>.
|
|
</p>
|
|
<p>See below for the list of accepted constants.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
|
|
following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dar</samp>’</dt>
|
|
<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>in_h, ih</samp>’</dt>
|
|
<dt> ‘<samp>in_w, iw</samp>’</dt>
|
|
<dd><p>The input width and height.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>The input sample aspect ratio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>The x and y offset coordinates where the box is drawn.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>The width and height of the drawn box.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>The thickness of the drawn box.
|
|
</p>
|
|
<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
|
|
each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-10"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-10">37.21.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Draw a black box around the edge of the input image:
|
|
<table><tr><td> </td><td><pre class="example">drawbox
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Draw a box with color red and an opacity of 50%:
|
|
<table><tr><td> </td><td><pre class="example">drawbox=10:20:200:60:red@0.5
|
|
</pre></td></tr></table>
|
|
|
|
<p>The previous example can be specified as:
|
|
</p><table><tr><td> </td><td><pre class="example">drawbox=x=10:y=20:w=200:h=60:color=red@0.5
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Fill the box with pink color:
|
|
<table><tr><td> </td><td><pre class="example">drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=max
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Draw a 2-pixel red 2.40:1 mask:
|
|
<table><tr><td> </td><td><pre class="example">drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="drawgrid"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-drawgrid">37.22 drawgrid</a></h2>
|
|
|
|
<p>Draw a grid on the input image.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dt> ‘<samp>height, h</samp>’</dt>
|
|
<dd><p>The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
|
|
input width and height, respectively, minus <code>thickness</code>, so image gets
|
|
framed. Default to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color, c</samp>’</dt>
|
|
<dd><p>Specify the color of the grid. For the general syntax of this option,
|
|
check the "Color" section in the ffmpeg-utils manual. If the special
|
|
value <code>invert</code> is used, the grid color is the same as the
|
|
video with inverted luma.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>thickness, t</samp>’</dt>
|
|
<dd><p>The expression which sets the thickness of the grid line. Default value is <code>1</code>.
|
|
</p>
|
|
<p>See below for the list of accepted constants.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
|
|
following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dar</samp>’</dt>
|
|
<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>in_h, ih</samp>’</dt>
|
|
<dt> ‘<samp>in_w, iw</samp>’</dt>
|
|
<dd><p>The input grid cell width and height.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>The input sample aspect ratio.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>The x and y coordinates of some point of grid intersection (meant to configure offset).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>The width and height of the drawn cell.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>The thickness of the drawn cell.
|
|
</p>
|
|
<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
|
|
each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-54"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-54">37.22.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
|
|
<table><tr><td> </td><td><pre class="example">drawgrid=width=100:height=100:thickness=2:color=red@0.5
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Draw a white 3x3 grid with an opacity of 50%:
|
|
<table><tr><td> </td><td><pre class="example">drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="drawtext"></a>
|
|
</p><a name="drawtext-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-drawtext-1">37.23 drawtext</a></h2>
|
|
|
|
<p>Draw text string or text from specified file on top of video using the
|
|
libfreetype library.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to configure FFmpeg with
|
|
<code>--enable-libfreetype</code>.
|
|
</p>
|
|
<a name="Syntax-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Syntax-1">37.23.1 Syntax</a></h3>
|
|
|
|
<p>The description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>box</samp>’</dt>
|
|
<dd><p>Used to draw a box around text using background color.
|
|
Value should be either 1 (enable) or 0 (disable).
|
|
The default value of <var>box</var> is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>boxcolor</samp>’</dt>
|
|
<dd><p>The color to be used for drawing box around text. For the syntax of this
|
|
option, check the "Color" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>The default value of <var>boxcolor</var> is "white".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>borderw</samp>’</dt>
|
|
<dd><p>Set the width of the border to be drawn around the text using <var>bordercolor</var>.
|
|
The default value of <var>borderw</var> is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bordercolor</samp>’</dt>
|
|
<dd><p>Set the color to be used for drawing border around text. For the syntax of this
|
|
option, check the "Color" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>The default value of <var>bordercolor</var> is "black".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>expansion</samp>’</dt>
|
|
<dd><p>Select how the <var>text</var> is expanded. Can be either <code>none</code>,
|
|
<code>strftime</code> (deprecated) or
|
|
<code>normal</code> (default). See the <a href="#drawtext_005fexpansion">Text expansion</a> section
|
|
below for details.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fix_bounds</samp>’</dt>
|
|
<dd><p>If true, check and fix text coords to avoid clipping.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fontcolor</samp>’</dt>
|
|
<dd><p>The color to be used for drawing fonts. For the syntax of this option, check
|
|
the "Color" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>The default value of <var>fontcolor</var> is "black".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fontfile</samp>’</dt>
|
|
<dd><p>The font file to be used for drawing text. Path must be included.
|
|
This parameter is mandatory.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fontsize</samp>’</dt>
|
|
<dd><p>The font size to be used for drawing text.
|
|
The default value of <var>fontsize</var> is 16.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ft_load_flags</samp>’</dt>
|
|
<dd><p>Flags to be used for loading the fonts.
|
|
</p>
|
|
<p>The flags map the corresponding flags supported by libfreetype, and are
|
|
a combination of the following values:
|
|
</p><dl compact="compact">
|
|
<dt> <var>default</var></dt>
|
|
<dt> <var>no_scale</var></dt>
|
|
<dt> <var>no_hinting</var></dt>
|
|
<dt> <var>render</var></dt>
|
|
<dt> <var>no_bitmap</var></dt>
|
|
<dt> <var>vertical_layout</var></dt>
|
|
<dt> <var>force_autohint</var></dt>
|
|
<dt> <var>crop_bitmap</var></dt>
|
|
<dt> <var>pedantic</var></dt>
|
|
<dt> <var>ignore_global_advance_width</var></dt>
|
|
<dt> <var>no_recurse</var></dt>
|
|
<dt> <var>ignore_transform</var></dt>
|
|
<dt> <var>monochrome</var></dt>
|
|
<dt> <var>linear_design</var></dt>
|
|
<dt> <var>no_autohint</var></dt>
|
|
</dl>
|
|
|
|
<p>Default value is "default".
|
|
</p>
|
|
<p>For more information consult the documentation for the FT_LOAD_*
|
|
libfreetype flags.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>shadowcolor</samp>’</dt>
|
|
<dd><p>The color to be used for drawing a shadow behind the drawn text. For the
|
|
syntax of this option, check the "Color" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>The default value of <var>shadowcolor</var> is "black".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>shadowx</samp>’</dt>
|
|
<dt> ‘<samp>shadowy</samp>’</dt>
|
|
<dd><p>The x and y offsets for the text shadow position with respect to the
|
|
position of the text. They can be either positive or negative
|
|
values. Default value for both is "0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_number</samp>’</dt>
|
|
<dd><p>The starting frame number for the n/frame_num variable. The default value
|
|
is "0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tabsize</samp>’</dt>
|
|
<dd><p>The size in number of spaces to use for rendering the tab.
|
|
Default value is 4.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timecode</samp>’</dt>
|
|
<dd><p>Set the initial timecode representation in "hh:mm:ss[:;.]ff"
|
|
format. It can be used with or without text parameter. <var>timecode_rate</var>
|
|
option must be specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>timecode_rate, rate, r</samp>’</dt>
|
|
<dd><p>Set the timecode frame rate (timecode only).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>text</samp>’</dt>
|
|
<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
|
|
encoded characters.
|
|
This parameter is mandatory if no file is specified with the parameter
|
|
<var>textfile</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>textfile</samp>’</dt>
|
|
<dd><p>A text file containing text to be drawn. The text must be a sequence
|
|
of UTF-8 encoded characters.
|
|
</p>
|
|
<p>This parameter is mandatory if no text string is specified with the
|
|
parameter <var>text</var>.
|
|
</p>
|
|
<p>If both <var>text</var> and <var>textfile</var> are specified, an error is thrown.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>reload</samp>’</dt>
|
|
<dd><p>If set to 1, the <var>textfile</var> will be reloaded before each frame.
|
|
Be sure to update it atomically, or it may be read partially, or even fail.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>The expressions which specify the offsets where text will be drawn
|
|
within the video frame. They are relative to the top/left border of the
|
|
output image.
|
|
</p>
|
|
<p>The default value of <var>x</var> and <var>y</var> is "0".
|
|
</p>
|
|
<p>See below for the list of accepted constants and functions.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The parameters for <var>x</var> and <var>y</var> are expressions containing the
|
|
following constants and functions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dar</samp>’</dt>
|
|
<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>line_h, lh</samp>’</dt>
|
|
<dd><p>the height of each text line
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>main_h, h, H</samp>’</dt>
|
|
<dd><p>the input height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>main_w, w, W</samp>’</dt>
|
|
<dd><p>the input width
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_glyph_a, ascent</samp>’</dt>
|
|
<dd><p>the maximum distance from the baseline to the highest/upper grid
|
|
coordinate used to place a glyph outline point, for all the rendered
|
|
glyphs.
|
|
It is a positive value, due to the grid’s orientation with the Y axis
|
|
upwards.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_glyph_d, descent</samp>’</dt>
|
|
<dd><p>the maximum distance from the baseline to the lowest grid coordinate
|
|
used to place a glyph outline point, for all the rendered glyphs.
|
|
This is a negative value, due to the grid’s orientation, with the Y axis
|
|
upwards.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_glyph_h</samp>’</dt>
|
|
<dd><p>maximum glyph height, that is the maximum height for all the glyphs
|
|
contained in the rendered text, it is equivalent to <var>ascent</var> -
|
|
<var>descent</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max_glyph_w</samp>’</dt>
|
|
<dd><p>maximum glyph width, that is the maximum width for all the glyphs
|
|
contained in the rendered text
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>the number of input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rand(min, max)</samp>’</dt>
|
|
<dd><p>return a random number included between <var>min</var> and <var>max</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>input sample aspect ratio
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>text_h, th</samp>’</dt>
|
|
<dd><p>the height of the rendered text
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>text_w, tw</samp>’</dt>
|
|
<dd><p>the width of the rendered text
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>the x and y offset coordinates where the text is drawn.
|
|
</p>
|
|
<p>These parameters allow the <var>x</var> and <var>y</var> expressions to refer
|
|
each other, so you can for example specify <code>y=x/dar</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If libavfilter was built with <code>--enable-fontconfig</code>, then
|
|
‘<samp>fontfile</samp>’ can be a fontconfig pattern or omitted.
|
|
</p>
|
|
<p><a name="drawtext_005fexpansion"></a>
|
|
</p><a name="Text-expansion"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Text-expansion">37.23.2 Text expansion</a></h3>
|
|
|
|
<p>If ‘<samp>expansion</samp>’ is set to <code>strftime</code>,
|
|
the filter recognizes strftime() sequences in the provided text and
|
|
expands them accordingly. Check the documentation of strftime(). This
|
|
feature is deprecated.
|
|
</p>
|
|
<p>If ‘<samp>expansion</samp>’ is set to <code>none</code>, the text is printed verbatim.
|
|
</p>
|
|
<p>If ‘<samp>expansion</samp>’ is set to <code>normal</code> (which is the default),
|
|
the following expansion mechanism is used.
|
|
</p>
|
|
<p>The backslash character ’\’, followed by any character, always expands to
|
|
the second character.
|
|
</p>
|
|
<p>Sequence of the form <code>%{...}</code> are expanded. The text between the
|
|
braces is a function name, possibly followed by arguments separated by ’:’.
|
|
If the arguments contain special characters or delimiters (’:’ or ’}’),
|
|
they should be escaped.
|
|
</p>
|
|
<p>Note that they probably must also be escaped as the value for the
|
|
‘<samp>text</samp>’ option in the filter argument string and as the filter
|
|
argument in the filtergraph description, and possibly also for the shell,
|
|
that makes up to four levels of escaping; using a text file avoids these
|
|
problems.
|
|
</p>
|
|
<p>The following functions are available:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> <code>expr, e</code></dt>
|
|
<dd><p>The expression evaluation result.
|
|
</p>
|
|
<p>It must take one argument specifying the expression to be evaluated,
|
|
which accepts the same constants and functions as the <var>x</var> and
|
|
<var>y</var> values. Note that not all constants should be used, for
|
|
example the text size is not known when evaluating the expression, so
|
|
the constants <var>text_w</var> and <var>text_h</var> will have an undefined
|
|
value.
|
|
</p>
|
|
</dd>
|
|
<dt> <code>gmtime</code></dt>
|
|
<dd><p>The time at which the filter is running, expressed in UTC.
|
|
It can accept an argument: a strftime() format string.
|
|
</p>
|
|
</dd>
|
|
<dt> <code>localtime</code></dt>
|
|
<dd><p>The time at which the filter is running, expressed in the local time zone.
|
|
It can accept an argument: a strftime() format string.
|
|
</p>
|
|
</dd>
|
|
<dt> <code>metadata</code></dt>
|
|
<dd><p>Frame metadata. It must take one argument specifying metadata key.
|
|
</p>
|
|
</dd>
|
|
<dt> <code>n, frame_num</code></dt>
|
|
<dd><p>The frame number, starting from 0.
|
|
</p>
|
|
</dd>
|
|
<dt> <code>pict_type</code></dt>
|
|
<dd><p>A 1 character description of the current picture type.
|
|
</p>
|
|
</dd>
|
|
<dt> <code>pts</code></dt>
|
|
<dd><p>The timestamp of the current frame, in seconds, with microsecond accuracy.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-28"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-28">37.23.3 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Draw "Test Text" with font FreeSerif, using the default values for the
|
|
optional parameters.
|
|
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Draw ’Test Text’ with font FreeSerif of size 24 at position x=100
|
|
and y=50 (counting from the top-left corner of the screen), text is
|
|
yellow with a red box around it. Both the text and the box have an
|
|
opacity of 20%.
|
|
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
|
|
x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note that the double quotes are not necessary if spaces are not used
|
|
within the parameter list.
|
|
</p>
|
|
</li><li>
|
|
Show the text at the center of the video frame:
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Show a text line sliding from right to left in the last row of the video
|
|
frame. The file ‘<tt>LONG_LINE</tt>’ is assumed to contain a single line
|
|
with no newlines.
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Show the content of file ‘<tt>CREDITS</tt>’ off the bottom of the frame and scroll up.
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Draw a single green letter "g", at the center of the input video.
|
|
The glyph baseline is placed at half screen height.
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Show text for 1 second every 3 seconds:
|
|
<table><tr><td> </td><td><pre class="example">drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use fontconfig to set the font. Note that the colons need to be escaped.
|
|
<table><tr><td> </td><td><pre class="example">drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Print the date of a real-time encoding (see strftime(3)):
|
|
<table><tr><td> </td><td><pre class="example">drawtext='fontfile=FreeSans.ttf:text=%{localtime:%a %b %d %Y}'
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<p>For more information about libfreetype, check:
|
|
<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
|
|
</p>
|
|
<p>For more information about fontconfig, check:
|
|
<a href="http://freedesktop.org/software/fontconfig/fontconfig-user.html">http://freedesktop.org/software/fontconfig/fontconfig-user.html</a>.
|
|
</p>
|
|
<a name="edgedetect"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-edgedetect">37.24 edgedetect</a></h2>
|
|
|
|
<p>Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>low</samp>’</dt>
|
|
<dt> ‘<samp>high</samp>’</dt>
|
|
<dd><p>Set low and high threshold values used by the Canny thresholding
|
|
algorithm.
|
|
</p>
|
|
<p>The high threshold selects the "strong" edge pixels, which are then
|
|
connected through 8-connectivity with the "weak" edge pixels selected
|
|
by the low threshold.
|
|
</p>
|
|
<p><var>low</var> and <var>high</var> threshold values must be chosen in the range
|
|
[0,1], and <var>low</var> should be lesser or equal to <var>high</var>.
|
|
</p>
|
|
<p>Default value for <var>low</var> is <code>20/255</code>, and default value for <var>high</var>
|
|
is <code>50/255</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Example:
|
|
</p><table><tr><td> </td><td><pre class="example">edgedetect=low=0.1:high=0.4
|
|
</pre></td></tr></table>
|
|
|
|
<a name="extractplanes"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-extractplanes">37.25 extractplanes</a></h2>
|
|
|
|
<p>Extract color channel components from input video stream into
|
|
separate grayscale video streams.
|
|
</p>
|
|
<p>The filter accepts the following option:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>planes</samp>’</dt>
|
|
<dd><p>Set plane(s) to extract.
|
|
</p>
|
|
<p>Available values for planes are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dt> ‘<samp>u</samp>’</dt>
|
|
<dt> ‘<samp>v</samp>’</dt>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dt> ‘<samp>r</samp>’</dt>
|
|
<dt> ‘<samp>g</samp>’</dt>
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
</dl>
|
|
|
|
<p>Choosing planes not available in the input will result in an error.
|
|
That means you cannot select <code>r</code>, <code>g</code>, <code>b</code> planes
|
|
with <code>y</code>, <code>u</code>, <code>v</code> planes at same time.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-78"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-78">37.25.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Extract luma, u and v color channel component from input video frame
|
|
into 3 grayscale outputs:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="elbg"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-elbg">37.26 elbg</a></h2>
|
|
|
|
<p>Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
|
|
</p>
|
|
<p>For each input image, the filter will compute the optimal mapping from
|
|
the input to the output given the codebook length, that is the number
|
|
of distinct output colors.
|
|
</p>
|
|
<p>This filter accepts the following options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>codebook_length, l</samp>’</dt>
|
|
<dd><p>Set codebook length. The value must be a positive integer, and
|
|
represents the number of distinct output colors. Default value is 256.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_steps, n</samp>’</dt>
|
|
<dd><p>Set the maximum number of iterations to apply for computing the optimal
|
|
mapping. The higher the value the better the result and the higher the
|
|
computation time. Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>seed, s</samp>’</dt>
|
|
<dd><p>Set a random seed, must be an integer included between 0 and
|
|
UINT32_MAX. If not specified, or if explicitly set to -1, the filter
|
|
will try to use a good random seed on a best effort basis.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="fade"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fade">37.27 fade</a></h2>
|
|
|
|
<p>Apply fade-in/out effect to input video.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>type, t</samp>’</dt>
|
|
<dd><p>The effect type – can be either "in" for fade-in, or "out" for a fade-out
|
|
effect.
|
|
Default is <code>in</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_frame, s</samp>’</dt>
|
|
<dd><p>Specify the number of the start frame for starting to apply the fade
|
|
effect. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_frames, n</samp>’</dt>
|
|
<dd><p>The number of frames for which the fade effect has to last. At the end of the
|
|
fade-in effect the output video will have the same intensity as the input video,
|
|
at the end of the fade-out transition the output video will be filled with the
|
|
selected ‘<samp>color</samp>’.
|
|
Default is 25.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>alpha</samp>’</dt>
|
|
<dd><p>If set to 1, fade only alpha channel, if one exists on the input.
|
|
Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_time, st</samp>’</dt>
|
|
<dd><p>Specify the timestamp (in seconds) of the frame to start to apply the fade
|
|
effect. If both start_frame and start_time are specified, the fade will start at
|
|
whichever comes last. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>The number of seconds for which the fade effect has to last. At the end of the
|
|
fade-in effect the output video will have the same intensity as the input video,
|
|
at the end of the fade-out transition the output video will be filled with the
|
|
selected ‘<samp>color</samp>’.
|
|
If both duration and nb_frames are specified, duration is used. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color, c</samp>’</dt>
|
|
<dd><p>Specify the color of the fade. Default is "black".
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-61"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-61">37.27.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Fade in first 30 frames of video:
|
|
<table><tr><td> </td><td><pre class="example">fade=in:0:30
|
|
</pre></td></tr></table>
|
|
|
|
<p>The command above is equivalent to:
|
|
</p><table><tr><td> </td><td><pre class="example">fade=t=in:s=0:n=30
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Fade out last 45 frames of a 200-frame video:
|
|
<table><tr><td> </td><td><pre class="example">fade=out:155:45
|
|
fade=type=out:start_frame=155:nb_frames=45
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
|
|
<table><tr><td> </td><td><pre class="example">fade=in:0:25, fade=out:975:25
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Make first 5 frames yellow, then fade in from frame 5-24:
|
|
<table><tr><td> </td><td><pre class="example">fade=in:5:20:color=yellow
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Fade in alpha over first 25 frames of video:
|
|
<table><tr><td> </td><td><pre class="example">fade=in:0:25:alpha=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Make first 5.5 seconds black, then fade in for 0.5 seconds:
|
|
<table><tr><td> </td><td><pre class="example">fade=t=in:st=5.5:d=0.5
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="field"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-field">37.28 field</a></h2>
|
|
|
|
<p>Extract a single field from an interlaced image using stride
|
|
arithmetic to avoid wasting CPU time. The output frames are marked as
|
|
non-interlaced.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>type</samp>’</dt>
|
|
<dd><p>Specify whether to extract the top (if the value is <code>0</code> or
|
|
<code>top</code>) or the bottom field (if the value is <code>1</code> or
|
|
<code>bottom</code>).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="fieldmatch"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fieldmatch">37.29 fieldmatch</a></h2>
|
|
|
|
<p>Field matching filter for inverse telecine. It is meant to reconstruct the
|
|
progressive frames from a telecined stream. The filter does not drop duplicated
|
|
frames, so to achieve a complete inverse telecine <code>fieldmatch</code> needs to be
|
|
followed by a decimation filter such as <a href="#decimate">decimate</a> in the filtergraph.
|
|
</p>
|
|
<p>The separation of the field matching and the decimation is notably motivated by
|
|
the possibility of inserting a de-interlacing filter fallback between the two.
|
|
If the source has mixed telecined and real interlaced content,
|
|
<code>fieldmatch</code> will not be able to match fields for the interlaced parts.
|
|
But these remaining combed frames will be marked as interlaced, and thus can be
|
|
de-interlaced by a later filter such as <a href="#yadif">yadif</a> before decimation.
|
|
</p>
|
|
<p>In addition to the various configuration options, <code>fieldmatch</code> can take an
|
|
optional second stream, activated through the ‘<samp>ppsrc</samp>’ option. If
|
|
enabled, the frames reconstruction will be based on the fields and frames from
|
|
this second stream. This allows the first input to be pre-processed in order to
|
|
help the various algorithms of the filter, while keeping the output lossless
|
|
(assuming the fields are matched properly). Typically, a field-aware denoiser,
|
|
or brightness/contrast adjustments can help.
|
|
</p>
|
|
<p>Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
|
|
and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
|
|
which <code>fieldmatch</code> is based on. While the semantic and usage are very
|
|
close, some behaviour and options names can differ.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>order</samp>’</dt>
|
|
<dd><p>Specify the assumed field order of the input stream. Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Auto detect parity (use FFmpeg’s internal parity value).
|
|
</p></dd>
|
|
<dt> ‘<samp>bff</samp>’</dt>
|
|
<dd><p>Assume bottom field first.
|
|
</p></dd>
|
|
<dt> ‘<samp>tff</samp>’</dt>
|
|
<dd><p>Assume top field first.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note that it is sometimes recommended not to trust the parity announced by the
|
|
stream.
|
|
</p>
|
|
<p>Default value is <var>auto</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set the matching mode or strategy to use. ‘<samp>pc</samp>’ mode is the safest in the
|
|
sense that it won’t risk creating jerkiness due to duplicate frames when
|
|
possible, but if there are bad edits or blended fields it will end up
|
|
outputting combed frames when a good match might actually exist. On the other
|
|
hand, ‘<samp>pcn_ub</samp>’ mode is the most risky in terms of creating jerkiness,
|
|
but will almost always find a good frame if there is one. The other values are
|
|
all somewhere in between ‘<samp>pc</samp>’ and ‘<samp>pcn_ub</samp>’ in terms of risking
|
|
jerkiness and creating duplicate frames versus finding good matches in sections
|
|
with bad edits, orphaned fields, blended fields, etc.
|
|
</p>
|
|
<p>More details about p/c/n/u/b are available in <a href="#p_002fc_002fn_002fu_002fb-meaning">p/c/n/u/b meaning</a> section.
|
|
</p>
|
|
<p>Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>pc</samp>’</dt>
|
|
<dd><p>2-way matching (p/c)
|
|
</p></dd>
|
|
<dt> ‘<samp>pc_n</samp>’</dt>
|
|
<dd><p>2-way matching, and trying 3rd match if still combed (p/c + n)
|
|
</p></dd>
|
|
<dt> ‘<samp>pc_u</samp>’</dt>
|
|
<dd><p>2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
|
|
</p></dd>
|
|
<dt> ‘<samp>pc_n_ub</samp>’</dt>
|
|
<dd><p>2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
|
|
still combed (p/c + n + u/b)
|
|
</p></dd>
|
|
<dt> ‘<samp>pcn</samp>’</dt>
|
|
<dd><p>3-way matching (p/c/n)
|
|
</p></dd>
|
|
<dt> ‘<samp>pcn_ub</samp>’</dt>
|
|
<dd><p>3-way matching, and trying 4th/5th matches if all 3 of the original matches are
|
|
detected as combed (p/c/n + u/b)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The parenthesis at the end indicate the matches that would be used for that
|
|
mode assuming ‘<samp>order</samp>’=<var>tff</var> (and ‘<samp>field</samp>’ on <var>auto</var> or
|
|
<var>top</var>).
|
|
</p>
|
|
<p>In terms of speed ‘<samp>pc</samp>’ mode is by far the fastest and ‘<samp>pcn_ub</samp>’ is
|
|
the slowest.
|
|
</p>
|
|
<p>Default value is <var>pc_n</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ppsrc</samp>’</dt>
|
|
<dd><p>Mark the main input stream as a pre-processed input, and enable the secondary
|
|
input stream as the clean source to pick the fields from. See the filter
|
|
introduction for more details. It is similar to the ‘<samp>clip2</samp>’ feature from
|
|
VFM/TFM.
|
|
</p>
|
|
<p>Default value is <code>0</code> (disabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>field</samp>’</dt>
|
|
<dd><p>Set the field to match from. It is recommended to set this to the same value as
|
|
‘<samp>order</samp>’ unless you experience matching failures with that setting. In
|
|
certain circumstances changing the field that is used to match from can have a
|
|
large impact on matching performance. Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Automatic (same value as ‘<samp>order</samp>’).
|
|
</p></dd>
|
|
<dt> ‘<samp>bottom</samp>’</dt>
|
|
<dd><p>Match from the bottom field.
|
|
</p></dd>
|
|
<dt> ‘<samp>top</samp>’</dt>
|
|
<dd><p>Match from the top field.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <var>auto</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mchroma</samp>’</dt>
|
|
<dd><p>Set whether or not chroma is included during the match comparisons. In most
|
|
cases it is recommended to leave this enabled. You should set this to <code>0</code>
|
|
only if your clip has bad chroma problems such as heavy rainbowing or other
|
|
artifacts. Setting this to <code>0</code> could also be used to speed things up at
|
|
the cost of some accuracy.
|
|
</p>
|
|
<p>Default value is <code>1</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>y0</samp>’</dt>
|
|
<dt> ‘<samp>y1</samp>’</dt>
|
|
<dd><p>These define an exclusion band which excludes the lines between ‘<samp>y0</samp>’ and
|
|
‘<samp>y1</samp>’ from being included in the field matching decision. An exclusion
|
|
band can be used to ignore subtitles, a logo, or other things that may
|
|
interfere with the matching. ‘<samp>y0</samp>’ sets the starting scan line and
|
|
‘<samp>y1</samp>’ sets the ending line; all lines in between ‘<samp>y0</samp>’ and
|
|
‘<samp>y1</samp>’ (including ‘<samp>y0</samp>’ and ‘<samp>y1</samp>’) will be ignored. Setting
|
|
‘<samp>y0</samp>’ and ‘<samp>y1</samp>’ to the same value will disable the feature.
|
|
‘<samp>y0</samp>’ and ‘<samp>y1</samp>’ defaults to <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scthresh</samp>’</dt>
|
|
<dd><p>Set the scene change detection threshold as a percentage of maximum change on
|
|
the luma plane. Good values are in the <code>[8.0, 14.0]</code> range. Scene change
|
|
detection is only relevant in case ‘<samp>combmatch</samp>’=<var>sc</var>. The range for
|
|
‘<samp>scthresh</samp>’ is <code>[0.0, 100.0]</code>.
|
|
</p>
|
|
<p>Default value is <code>12.0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>combmatch</samp>’</dt>
|
|
<dd><p>When ‘<samp>combatch</samp>’ is not <var>none</var>, <code>fieldmatch</code> will take into
|
|
account the combed scores of matches when deciding what match to use as the
|
|
final match. Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>No final matching based on combed scores.
|
|
</p></dd>
|
|
<dt> ‘<samp>sc</samp>’</dt>
|
|
<dd><p>Combed scores are only used when a scene change is detected.
|
|
</p></dd>
|
|
<dt> ‘<samp>full</samp>’</dt>
|
|
<dd><p>Use combed scores all the time.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default is <var>sc</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>combdbg</samp>’</dt>
|
|
<dd><p>Force <code>fieldmatch</code> to calculate the combed metrics for certain matches and
|
|
print them. This setting is known as ‘<samp>micout</samp>’ in TFM/VFM vocabulary.
|
|
Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>No forced calculation.
|
|
</p></dd>
|
|
<dt> ‘<samp>pcn</samp>’</dt>
|
|
<dd><p>Force p/c/n calculations.
|
|
</p></dd>
|
|
<dt> ‘<samp>pcnub</samp>’</dt>
|
|
<dd><p>Force p/c/n/u/b calculations.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <var>none</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cthresh</samp>’</dt>
|
|
<dd><p>This is the area combing threshold used for combed frame detection. This
|
|
essentially controls how "strong" or "visible" combing must be to be detected.
|
|
Larger values mean combing must be more visible and smaller values mean combing
|
|
can be less visible or strong and still be detected. Valid settings are from
|
|
<code>-1</code> (every pixel will be detected as combed) to <code>255</code> (no pixel will
|
|
be detected as combed). This is basically a pixel difference value. A good
|
|
range is <code>[8, 12]</code>.
|
|
</p>
|
|
<p>Default value is <code>9</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma</samp>’</dt>
|
|
<dd><p>Sets whether or not chroma is considered in the combed frame decision. Only
|
|
disable this if your source has chroma problems (rainbowing, etc.) that are
|
|
causing problems for the combed frame detection with chroma enabled. Actually,
|
|
using ‘<samp>chroma</samp>’=<var>0</var> is usually more reliable, except for the case
|
|
where there is chroma only combing in the source.
|
|
</p>
|
|
<p>Default value is <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>blockx</samp>’</dt>
|
|
<dt> ‘<samp>blocky</samp>’</dt>
|
|
<dd><p>Respectively set the x-axis and y-axis size of the window used during combed
|
|
frame detection. This has to do with the size of the area in which
|
|
‘<samp>combpel</samp>’ pixels are required to be detected as combed for a frame to be
|
|
declared combed. See the ‘<samp>combpel</samp>’ parameter description for more info.
|
|
Possible values are any number that is a power of 2 starting at 4 and going up
|
|
to 512.
|
|
</p>
|
|
<p>Default value is <code>16</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>combpel</samp>’</dt>
|
|
<dd><p>The number of combed pixels inside any of the ‘<samp>blocky</samp>’ by
|
|
‘<samp>blockx</samp>’ size blocks on the frame for the frame to be detected as
|
|
combed. While ‘<samp>cthresh</samp>’ controls how "visible" the combing must be, this
|
|
setting controls "how much" combing there must be in any localized area (a
|
|
window defined by the ‘<samp>blockx</samp>’ and ‘<samp>blocky</samp>’ settings) on the
|
|
frame. Minimum value is <code>0</code> and maximum is <code>blocky x blockx</code> (at
|
|
which point no frames will ever be detected as combed). This setting is known
|
|
as ‘<samp>MI</samp>’ in TFM/VFM vocabulary.
|
|
</p>
|
|
<p>Default value is <code>80</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="p_002fc_002fn_002fu_002fb-meaning"></a>
|
|
</p><a name="p_002fc_002fn_002fu_002fb-meaning-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-p_002fc_002fn_002fu_002fb-meaning-1">37.29.1 p/c/n/u/b meaning</a></h3>
|
|
|
|
<a name="p_002fc_002fn"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-p_002fc_002fn">37.29.1.1 p/c/n</a></h4>
|
|
|
|
<p>We assume the following telecined stream:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">Top fields: 1 2 2 3 4
|
|
Bottom fields: 1 2 3 4 4
|
|
</pre></td></tr></table>
|
|
|
|
<p>The numbers correspond to the progressive frame the fields relate to. Here, the
|
|
first two frames are progressive, the 3rd and 4th are combed, and so on.
|
|
</p>
|
|
<p>When <code>fieldmatch</code> is configured to run a matching from bottom
|
|
(‘<samp>field</samp>’=<var>bottom</var>) this is how this input stream get transformed:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">Input stream:
|
|
T 1 2 2 3 4
|
|
B 1 2 3 4 4 <-- matching reference
|
|
|
|
Matches: c c n n c
|
|
|
|
Output stream:
|
|
T 1 2 3 4 4
|
|
B 1 2 3 4 4
|
|
</pre></td></tr></table>
|
|
|
|
<p>As a result of the field matching, we can see that some frames get duplicated.
|
|
To perform a complete inverse telecine, you need to rely on a decimation filter
|
|
after this operation. See for instance the <a href="#decimate">decimate</a> filter.
|
|
</p>
|
|
<p>The same operation now matching from top fields (‘<samp>field</samp>’=<var>top</var>)
|
|
looks like this:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">Input stream:
|
|
T 1 2 2 3 4 <-- matching reference
|
|
B 1 2 3 4 4
|
|
|
|
Matches: c c p p c
|
|
|
|
Output stream:
|
|
T 1 2 2 3 4
|
|
B 1 2 2 3 4
|
|
</pre></td></tr></table>
|
|
|
|
<p>In these examples, we can see what <var>p</var>, <var>c</var> and <var>n</var> mean;
|
|
basically, they refer to the frame and field of the opposite parity:
|
|
</p>
|
|
<ul>
|
|
<li> <var>p</var> matches the field of the opposite parity in the previous frame
|
|
</li><li> <var>c</var> matches the field of the opposite parity in the current frame
|
|
</li><li> <var>n</var> matches the field of the opposite parity in the next frame
|
|
</li></ul>
|
|
|
|
<a name="u_002fb"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-u_002fb">37.29.1.2 u/b</a></h4>
|
|
|
|
<p>The <var>u</var> and <var>b</var> matching are a bit special in the sense that they match
|
|
from the opposite parity flag. In the following examples, we assume that we are
|
|
currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
|
|
’x’ is placed above and below each matched fields.
|
|
</p>
|
|
<p>With bottom matching (‘<samp>field</samp>’=<var>bottom</var>):
|
|
</p><table><tr><td> </td><td><pre class="example">Match: c p n b u
|
|
|
|
x x x x x
|
|
Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
|
|
Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
|
|
x x x x x
|
|
|
|
Output frames:
|
|
2 1 2 2 2
|
|
2 2 2 1 3
|
|
</pre></td></tr></table>
|
|
|
|
<p>With top matching (‘<samp>field</samp>’=<var>top</var>):
|
|
</p><table><tr><td> </td><td><pre class="example">Match: c p n b u
|
|
|
|
x x x x x
|
|
Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
|
|
Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
|
|
x x x x x
|
|
|
|
Output frames:
|
|
2 2 2 1 2
|
|
2 1 3 2 2
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Examples-62"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-62">37.29.2 Examples</a></h3>
|
|
|
|
<p>Simple IVTC of a top field first telecined stream:
|
|
</p><table><tr><td> </td><td><pre class="example">fieldmatch=order=tff:combmatch=none, decimate
|
|
</pre></td></tr></table>
|
|
|
|
<p>Advanced IVTC, with fallback on <a href="#yadif">yadif</a> for still combed frames:
|
|
</p><table><tr><td> </td><td><pre class="example">fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
|
|
</pre></td></tr></table>
|
|
|
|
<a name="fieldorder"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fieldorder">37.30 fieldorder</a></h2>
|
|
|
|
<p>Transform the field order of the input video.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>order</samp>’</dt>
|
|
<dd><p>Output field order. Valid values are <var>tff</var> for top field first or <var>bff</var>
|
|
for bottom field first.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>tff</samp>’.
|
|
</p>
|
|
<p>Transformation is achieved by shifting the picture content up or down
|
|
by one line, and filling the remaining line with appropriate picture content.
|
|
This method is consistent with most broadcast field order converters.
|
|
</p>
|
|
<p>If the input video is not flagged as being interlaced, or it is already
|
|
flagged as being of the required output field order then this filter does
|
|
not alter the incoming video.
|
|
</p>
|
|
<p>This filter is very useful when converting to or from PAL DV material,
|
|
which is bottom field first.
|
|
</p>
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
|
|
</pre></td></tr></table>
|
|
|
|
<a name="fifo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fifo">37.31 fifo</a></h2>
|
|
|
|
<p>Buffer input images and send them when they are requested.
|
|
</p>
|
|
<p>This filter is mainly useful when auto-inserted by the libavfilter
|
|
framework.
|
|
</p>
|
|
<p>The filter does not take parameters.
|
|
</p>
|
|
<p><a name="format"></a>
|
|
</p><a name="format-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-format-1">37.32 format</a></h2>
|
|
|
|
<p>Convert the input video to one of the specified pixel formats.
|
|
Libavfilter will try to pick one that is supported for the input to
|
|
the next filter.
|
|
</p>
|
|
<p>This filter accepts the following parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>pix_fmts</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of pixel format names, for example
|
|
"pix_fmts=yuv420p|monow|rgb24".
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-36"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-36">37.32.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Convert the input video to the format <var>yuv420p</var>
|
|
<table><tr><td> </td><td><pre class="example">format=pix_fmts=yuv420p
|
|
</pre></td></tr></table>
|
|
|
|
<p>Convert the input video to any of the formats in the list
|
|
</p><table><tr><td> </td><td><pre class="example">format=pix_fmts=yuv420p|yuv444p|yuv410p
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="fps"></a>
|
|
</p><a name="fps-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-fps-1">37.33 fps</a></h2>
|
|
|
|
<p>Convert the video to specified constant frame rate by duplicating or dropping
|
|
frames as necessary.
|
|
</p>
|
|
<p>This filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>fps</samp>’</dt>
|
|
<dd><p>Desired output frame rate. The default is <code>25</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>round</samp>’</dt>
|
|
<dd><p>Rounding method.
|
|
</p>
|
|
<p>Possible values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>zero</samp>’</dt>
|
|
<dd><p>zero round towards 0
|
|
</p></dd>
|
|
<dt> ‘<samp>inf</samp>’</dt>
|
|
<dd><p>round away from 0
|
|
</p></dd>
|
|
<dt> ‘<samp>down</samp>’</dt>
|
|
<dd><p>round towards -infinity
|
|
</p></dd>
|
|
<dt> ‘<samp>up</samp>’</dt>
|
|
<dd><p>round towards +infinity
|
|
</p></dd>
|
|
<dt> ‘<samp>near</samp>’</dt>
|
|
<dd><p>round to nearest
|
|
</p></dd>
|
|
</dl>
|
|
<p>The default is <code>near</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_time</samp>’</dt>
|
|
<dd><p>Assume the first PTS should be the given value, in seconds. This allows for
|
|
padding/trimming at the start of stream. By default, no assumption is made
|
|
about the first frame’s expected PTS, so no padding or trimming is done.
|
|
For example, this could be set to 0 to pad the beginning with duplicates of
|
|
the first frame if a video stream starts after the audio stream or to trim any
|
|
frames with a negative PTS.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Alternatively, the options can be specified as a flat string:
|
|
<var>fps</var>[:<var>round</var>].
|
|
</p>
|
|
<p>See also the <a href="#setpts">setpts</a> filter.
|
|
</p>
|
|
<a name="Examples-86"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-86">37.33.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
A typical usage in order to set the fps to 25:
|
|
<table><tr><td> </td><td><pre class="example">fps=fps=25
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Sets the fps to 24, using abbreviation and rounding method to round to nearest:
|
|
<table><tr><td> </td><td><pre class="example">fps=fps=film:round=near
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="framepack"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-framepack">37.34 framepack</a></h2>
|
|
|
|
<p>Pack two different video streams into a stereoscopic video, setting proper
|
|
metadata on supported codecs. The two views should have the same size and
|
|
framerate and processing will stop when the shorter video ends. Please note
|
|
that you may conveniently adjust view properties with the <a href="#scale">scale</a> and
|
|
<a href="#fps">fps</a> filters.
|
|
</p>
|
|
<p>This filter accepts the following named parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>format</samp>’</dt>
|
|
<dd><p>Desired packing format. Supported values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>sbs</samp>’</dt>
|
|
<dd><p>Views are next to each other (default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tab</samp>’</dt>
|
|
<dd><p>Views are on top of each other.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lines</samp>’</dt>
|
|
<dd><p>Views are packed by line.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>columns</samp>’</dt>
|
|
<dd><p>Views are eacked by column.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frameseq</samp>’</dt>
|
|
<dd><p>Views are temporally interleaved.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Some examples follow:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"># Convert left and right views into a frame sequential video.
|
|
ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
|
|
|
|
# Convert views into a side-by-side video with the same output resolution as the input.
|
|
ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
|
|
</pre></td></tr></table>
|
|
|
|
<a name="framestep"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-framestep">37.35 framestep</a></h2>
|
|
|
|
<p>Select one frame every N-th frame.
|
|
</p>
|
|
<p>This filter accepts the following option:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>step</samp>’</dt>
|
|
<dd><p>Select frame after every <code>step</code> frames.
|
|
Allowed values are positive integers higher than 0. Default value is <code>1</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="frei0r"></a>
|
|
</p><a name="frei0r-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-frei0r-1">37.36 frei0r</a></h2>
|
|
|
|
<p>Apply a frei0r effect to the input video.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to install the frei0r
|
|
header and configure FFmpeg with <code>--enable-frei0r</code>.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filter_name</samp>’</dt>
|
|
<dd><p>The name to the frei0r effect to load. If the environment variable
|
|
<code>FREI0R_PATH</code> is defined, the frei0r effect is searched in each one of the
|
|
directories specified by the colon separated list in <code>FREIOR_PATH</code>,
|
|
otherwise in the standard frei0r paths, which are in this order:
|
|
‘<tt>HOME/.frei0r-1/lib/</tt>’, ‘<tt>/usr/local/lib/frei0r-1/</tt>’,
|
|
‘<tt>/usr/lib/frei0r-1/</tt>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filter_params</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of parameters to pass to the frei0r effect.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>A frei0r effect parameter can be a boolean (whose values are specified
|
|
with "y" and "n"), a double, a color (specified by the syntax
|
|
<var>R</var>/<var>G</var>/<var>B</var>, (<var>R</var>, <var>G</var>, and <var>B</var> being float
|
|
numbers from 0.0 to 1.0) or by a color description specified in the "Color"
|
|
section in the ffmpeg-utils manual), a position (specified by the syntax <var>X</var>/<var>Y</var>,
|
|
<var>X</var> and <var>Y</var> being float numbers) and a string.
|
|
</p>
|
|
<p>The number and kind of parameters depend on the loaded effect. If an
|
|
effect parameter is not specified the default value is set.
|
|
</p>
|
|
<a name="Examples-87"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-87">37.36.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply the distort0r effect, set the first two double parameters:
|
|
<table><tr><td> </td><td><pre class="example">frei0r=filter_name=distort0r:filter_params=0.5|0.01
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply the colordistance effect, take a color as first parameter:
|
|
<table><tr><td> </td><td><pre class="example">frei0r=colordistance:0.2/0.3/0.4
|
|
frei0r=colordistance:violet
|
|
frei0r=colordistance:0x112233
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply the perspective effect, specify the top left and top right image
|
|
positions:
|
|
<table><tr><td> </td><td><pre class="example">frei0r=perspective:0.2/0.2|0.8/0.2
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>For more information see:
|
|
<a href="http://frei0r.dyne.org">http://frei0r.dyne.org</a>
|
|
</p>
|
|
<a name="geq"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-geq">37.37 geq</a></h2>
|
|
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>lum_expr, lum</samp>’</dt>
|
|
<dd><p>Set the luminance expression.
|
|
</p></dd>
|
|
<dt> ‘<samp>cb_expr, cb</samp>’</dt>
|
|
<dd><p>Set the chrominance blue expression.
|
|
</p></dd>
|
|
<dt> ‘<samp>cr_expr, cr</samp>’</dt>
|
|
<dd><p>Set the chrominance red expression.
|
|
</p></dd>
|
|
<dt> ‘<samp>alpha_expr, a</samp>’</dt>
|
|
<dd><p>Set the alpha expression.
|
|
</p></dd>
|
|
<dt> ‘<samp>red_expr, r</samp>’</dt>
|
|
<dd><p>Set the red expression.
|
|
</p></dd>
|
|
<dt> ‘<samp>green_expr, g</samp>’</dt>
|
|
<dd><p>Set the green expression.
|
|
</p></dd>
|
|
<dt> ‘<samp>blue_expr, b</samp>’</dt>
|
|
<dd><p>Set the blue expression.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The colorspace is selected according to the specified options. If one
|
|
of the ‘<samp>lum_expr</samp>’, ‘<samp>cb_expr</samp>’, or ‘<samp>cr_expr</samp>’
|
|
options is specified, the filter will automatically select a YCbCr
|
|
colorspace. If one of the ‘<samp>red_expr</samp>’, ‘<samp>green_expr</samp>’, or
|
|
‘<samp>blue_expr</samp>’ options is specified, it will select an RGB
|
|
colorspace.
|
|
</p>
|
|
<p>If one of the chrominance expression is not defined, it falls back on the other
|
|
one. If no alpha expression is specified it will evaluate to opaque value.
|
|
If none of chrominance expressions are specified, they will evaluate
|
|
to the luminance expression.
|
|
</p>
|
|
<p>The expressions can use the following variables and functions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>N</samp>’</dt>
|
|
<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>X</samp>’</dt>
|
|
<dt> ‘<samp>Y</samp>’</dt>
|
|
<dd><p>The coordinates of the current sample.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>W</samp>’</dt>
|
|
<dt> ‘<samp>H</samp>’</dt>
|
|
<dd><p>The width and height of the image.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>SW</samp>’</dt>
|
|
<dt> ‘<samp>SH</samp>’</dt>
|
|
<dd><p>Width and height scale depending on the currently filtered plane. It is the
|
|
ratio between the corresponding luma plane number of pixels and the current
|
|
plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
|
|
<code>0.5,0.5</code> for chroma planes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>T</samp>’</dt>
|
|
<dd><p>Time of the current frame, expressed in seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>p(x, y)</samp>’</dt>
|
|
<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the current
|
|
plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lum(x, y)</samp>’</dt>
|
|
<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the luminance
|
|
plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cb(x, y)</samp>’</dt>
|
|
<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
|
|
blue-difference chroma plane. Return 0 if there is no such plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>cr(x, y)</samp>’</dt>
|
|
<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
|
|
red-difference chroma plane. Return 0 if there is no such plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>r(x, y)</samp>’</dt>
|
|
<dt> ‘<samp>g(x, y)</samp>’</dt>
|
|
<dt> ‘<samp>b(x, y)</samp>’</dt>
|
|
<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
|
|
red/green/blue component. Return 0 if there is no such component.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>alpha(x, y)</samp>’</dt>
|
|
<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the alpha
|
|
plane. Return 0 if there is no such plane.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For functions, if <var>x</var> and <var>y</var> are outside the area, the value will be
|
|
automatically clipped to the closer edge.
|
|
</p>
|
|
<a name="Examples-2"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-2">37.37.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Flip the image horizontally:
|
|
<table><tr><td> </td><td><pre class="example">geq=p(W-X\,Y)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a bidimensional sine wave, with angle <code>PI/3</code> and a
|
|
wavelength of 100 pixels:
|
|
<table><tr><td> </td><td><pre class="example">geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a fancy enigmatic moving light:
|
|
<table><tr><td> </td><td><pre class="example">nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a quick emboss effect:
|
|
<table><tr><td> </td><td><pre class="example">format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Modify RGB components depending on pixel position:
|
|
<table><tr><td> </td><td><pre class="example">geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="gradfun"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-gradfun">37.38 gradfun</a></h2>
|
|
|
|
<p>Fix the banding artifacts that are sometimes introduced into nearly flat
|
|
regions by truncation to 8bit color depth.
|
|
Interpolate the gradients that should go where the bands are, and
|
|
dither them.
|
|
</p>
|
|
<p>This filter is designed for playback only. Do not use it prior to
|
|
lossy compression, because compression tends to lose the dither and
|
|
bring back the bands.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>strength</samp>’</dt>
|
|
<dd><p>The maximum amount by which the filter will change any one pixel. Also the
|
|
threshold for detecting nearly flat regions. Acceptable values range from .51 to
|
|
64, default value is 1.2, out-of-range values will be clipped to the valid
|
|
range.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>radius</samp>’</dt>
|
|
<dd><p>The neighborhood to fit the gradient to. A larger radius makes for smoother
|
|
gradients, but also prevents the filter from modifying the pixels near detailed
|
|
regions. Acceptable values are 8-32, default value is 16, out-of-range values
|
|
will be clipped to the valid range.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Alternatively, the options can be specified as a flat string:
|
|
<var>strength</var>[:<var>radius</var>]
|
|
</p>
|
|
<a name="Examples-52"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-52">37.38.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply the filter with a <code>3.5</code> strength and radius of <code>8</code>:
|
|
<table><tr><td> </td><td><pre class="example">gradfun=3.5:8
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Specify radius, omitting the strength (which will fall-back to the default
|
|
value):
|
|
<table><tr><td> </td><td><pre class="example">gradfun=radius=8
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<p><a name="haldclut"></a>
|
|
</p><a name="haldclut-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-haldclut-1">37.39 haldclut</a></h2>
|
|
|
|
<p>Apply a Hald CLUT to a video stream.
|
|
</p>
|
|
<p>First input is the video stream to process, and second one is the Hald CLUT.
|
|
The Hald CLUT input can be a simple picture or a complete video stream.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>shortest</samp>’</dt>
|
|
<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
|
|
</p></dd>
|
|
<dt> ‘<samp>repeatlast</samp>’</dt>
|
|
<dd><p>Continue applying the last CLUT after the end of the stream. A value of
|
|
<code>0</code> disable the filter after the last frame of the CLUT is reached.
|
|
Default is <code>1</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><code>haldclut</code> also has the same interpolation options as <a href="#lut3d">lut3d</a> (both
|
|
filters share the same internals).
|
|
</p>
|
|
<p>More information about the Hald CLUT can be found on Eskil Steenberg’s website
|
|
(Hald CLUT author) at <a href="http://www.quelsolaar.com/technology/clut.html">http://www.quelsolaar.com/technology/clut.html</a>.
|
|
</p>
|
|
<a name="Workflow-examples"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Workflow-examples">37.39.1 Workflow examples</a></h3>
|
|
|
|
<a name="Hald-CLUT-video-stream"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Hald-CLUT-video-stream">37.39.1.1 Hald CLUT video stream</a></h4>
|
|
|
|
<p>Generate an identity Hald CLUT stream altered with various effects:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note: make sure you use a lossless codec.
|
|
</p>
|
|
<p>Then use it with <code>haldclut</code> to apply it on some random stream:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
|
|
</pre></td></tr></table>
|
|
|
|
<p>The Hald CLUT will be applied to the 10 first seconds (duration of
|
|
‘<tt>clut.nut</tt>’), then the latest picture of that CLUT stream will be applied
|
|
to the remaining frames of the <code>mandelbrot</code> stream.
|
|
</p>
|
|
<a name="Hald-CLUT-with-preview"></a>
|
|
<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Hald-CLUT-with-preview">37.39.1.2 Hald CLUT with preview</a></h4>
|
|
|
|
<p>A Hald CLUT is supposed to be a squared image of <code>Level*Level*Level</code> by
|
|
<code>Level*Level*Level</code> pixels. For a given Hald CLUT, FFmpeg will select the
|
|
biggest possible square starting at the top left of the picture. The remaining
|
|
padding pixels (bottom or right) will be ignored. This area can be used to add
|
|
a preview of the Hald CLUT.
|
|
</p>
|
|
<p>Typically, the following generated Hald CLUT will be supported by the
|
|
<code>haldclut</code> filter:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf "
|
|
pad=iw+320 [padded_clut];
|
|
smptebars=s=320x256, split [a][b];
|
|
[padded_clut][a] overlay=W-320:h, curves=color_negative [main];
|
|
[main][b] overlay=W-320" -frames:v 1 clut.png
|
|
</pre></td></tr></table>
|
|
|
|
<p>It contains the original and a preview of the effect of the CLUT: SMPTE color
|
|
bars are displayed on the right-top, and below the same color bars processed by
|
|
the color changes.
|
|
</p>
|
|
<p>Then, the effect of this Hald CLUT can be visualized with:
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
|
|
</pre></td></tr></table>
|
|
|
|
<a name="hflip"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-hflip">37.40 hflip</a></h2>
|
|
|
|
<p>Flip the input video horizontally.
|
|
</p>
|
|
<p>For example to horizontally flip the input video with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -vf "hflip" out.avi
|
|
</pre></td></tr></table>
|
|
|
|
<a name="histeq"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-histeq">37.41 histeq</a></h2>
|
|
<p>This filter applies a global color histogram equalization on a
|
|
per-frame basis.
|
|
</p>
|
|
<p>It can be used to correct video that has a compressed range of pixel
|
|
intensities. The filter redistributes the pixel intensities to
|
|
equalize their distribution across the intensity range. It may be
|
|
viewed as an "automatically adjusting contrast filter". This filter is
|
|
useful only for correcting degraded or poorly captured source
|
|
video.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>strength</samp>’</dt>
|
|
<dd><p>Determine the amount of equalization to be applied. As the strength
|
|
is reduced, the distribution of pixel intensities more-and-more
|
|
approaches that of the input frame. The value must be a float number
|
|
in the range [0,1] and defaults to 0.200.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>intensity</samp>’</dt>
|
|
<dd><p>Set the maximum intensity that can generated and scale the output
|
|
values appropriately. The strength should be set as desired and then
|
|
the intensity can be limited if needed to avoid washing-out. The value
|
|
must be a float number in the range [0,1] and defaults to 0.210.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>antibanding</samp>’</dt>
|
|
<dd><p>Set the antibanding level. If enabled the filter will randomly vary
|
|
the luminance of output pixels by a small amount to avoid banding of
|
|
the histogram. Possible values are <code>none</code>, <code>weak</code> or
|
|
<code>strong</code>. It defaults to <code>none</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="histogram"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-histogram">37.42 histogram</a></h2>
|
|
|
|
<p>Compute and draw a color distribution histogram for the input video.
|
|
</p>
|
|
<p>The computed histogram is a representation of the color component
|
|
distribution in an image.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set histogram mode.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>levels</samp>’</dt>
|
|
<dd><p>Standard histogram that displays the color components distribution in an
|
|
image. Displays color graph for each color component. Shows distribution of
|
|
the Y, U, V, A or R, G, B components, depending on input format, in the
|
|
current frame. Below each graph a color component scale meter is shown.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color</samp>’</dt>
|
|
<dd><p>Displays chroma values (U/V color placement) in a two dimensional
|
|
graph (which is called a vectorscope). The brighter a pixel in the
|
|
vectorscope, the more pixels of the input frame correspond to that pixel
|
|
(i.e., more pixels have this chroma value). The V component is displayed on
|
|
the horizontal (X) axis, with the leftmost side being V = 0 and the rightmost
|
|
side being V = 255. The U component is displayed on the vertical (Y) axis,
|
|
with the top representing U = 0 and the bottom representing U = 255.
|
|
</p>
|
|
<p>The position of a white pixel in the graph corresponds to the chroma value of
|
|
a pixel of the input clip. The graph can therefore be used to read the hue
|
|
(color flavor) and the saturation (the dominance of the hue in the color). As
|
|
the hue of a color changes, it moves around the square. At the center of the
|
|
square the saturation is zero, which means that the corresponding pixel has no
|
|
color. If the amount of a specific color is increased (while leaving the other
|
|
colors unchanged) the saturation increases, and the indicator moves towards
|
|
the edge of the square.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color2</samp>’</dt>
|
|
<dd><p>Chroma values in vectorscope, similar as <code>color</code> but actual chroma values
|
|
are displayed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>waveform</samp>’</dt>
|
|
<dd><p>Per row/column color component graph. In row mode, the graph on the left side
|
|
represents color component value 0 and the right side represents value = 255.
|
|
In column mode, the top side represents color component value = 0 and bottom
|
|
side represents value = 255.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is <code>levels</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>level_height</samp>’</dt>
|
|
<dd><p>Set height of level in <code>levels</code>. Default value is <code>200</code>.
|
|
Allowed range is [50, 2048].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scale_height</samp>’</dt>
|
|
<dd><p>Set height of color scale in <code>levels</code>. Default value is <code>12</code>.
|
|
Allowed range is [0, 40].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>step</samp>’</dt>
|
|
<dd><p>Set step for <code>waveform</code> mode. Smaller values are useful to find out how
|
|
many values of the same luminance are distributed across input rows/columns.
|
|
Default value is <code>10</code>. Allowed range is [1, 255].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>waveform_mode</samp>’</dt>
|
|
<dd><p>Set mode for <code>waveform</code>. Can be either <code>row</code>, or <code>column</code>.
|
|
Default is <code>row</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>waveform_mirror</samp>’</dt>
|
|
<dd><p>Set mirroring mode for <code>waveform</code>. <code>0</code> means unmirrored, <code>1</code>
|
|
means mirrored. In mirrored mode, higher values will be represented on the left
|
|
side for <code>row</code> mode and at the top for <code>column</code> mode. Default is
|
|
<code>0</code> (unmirrored).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>display_mode</samp>’</dt>
|
|
<dd><p>Set display mode for <code>waveform</code> and <code>levels</code>.
|
|
It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>parade</samp>’</dt>
|
|
<dd><p>Display separate graph for the color components side by side in
|
|
<code>row</code> waveform mode or one below the other in <code>column</code> waveform mode
|
|
for <code>waveform</code> histogram mode. For <code>levels</code> histogram mode,
|
|
per color component graphs are placed below each other.
|
|
</p>
|
|
<p>Using this display mode in <code>waveform</code> histogram mode makes it easy to
|
|
spot color casts in the highlights and shadows of an image, by comparing the
|
|
contours of the top and the bottom graphs of each waveform. Since whites,
|
|
grays, and blacks are characterized by exactly equal amounts of red, green,
|
|
and blue, neutral areas of the picture should display three waveforms of
|
|
roughly equal width/height. If not, the correction is easy to perform by
|
|
making level adjustments the three waveforms.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>overlay</samp>’</dt>
|
|
<dd><p>Presents information identical to that in the <code>parade</code>, except
|
|
that the graphs representing color components are superimposed directly
|
|
over one another.
|
|
</p>
|
|
<p>This display mode in <code>waveform</code> histogram mode makes it easier to spot
|
|
relative differences or similarities in overlapping areas of the color
|
|
components that are supposed to be identical, such as neutral whites, grays,
|
|
or blacks.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default is <code>parade</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>levels_mode</samp>’</dt>
|
|
<dd><p>Set mode for <code>levels</code>. Can be either <code>linear</code>, or <code>logarithmic</code>.
|
|
Default is <code>linear</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-67"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-67">37.42.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Calculate and draw histogram:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -i input -vf histogram
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<p><a name="hqdn3d"></a>
|
|
</p><a name="hqdn3d-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-hqdn3d-1">37.43 hqdn3d</a></h2>
|
|
|
|
<p>High precision/quality 3d denoise filter. This filter aims to reduce
|
|
image noise producing smooth images and making still images really
|
|
still. It should enhance compressibility.
|
|
</p>
|
|
<p>It accepts the following optional parameters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_spatial</samp>’</dt>
|
|
<dd><p>a non-negative float number which specifies spatial luma strength,
|
|
defaults to 4.0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_spatial</samp>’</dt>
|
|
<dd><p>a non-negative float number which specifies spatial chroma strength,
|
|
defaults to 3.0*<var>luma_spatial</var>/4.0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_tmp</samp>’</dt>
|
|
<dd><p>a float number which specifies luma temporal strength, defaults to
|
|
6.0*<var>luma_spatial</var>/4.0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_tmp</samp>’</dt>
|
|
<dd><p>a float number which specifies chroma temporal strength, defaults to
|
|
<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="hue"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-hue">37.44 hue</a></h2>
|
|
|
|
<p>Modify the hue and/or the saturation of the input.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>Specify the hue angle as a number of degrees. It accepts an expression,
|
|
and defaults to "0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>Specify the saturation in the [-10,10] range. It accepts an expression and
|
|
defaults to "1".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>H</samp>’</dt>
|
|
<dd><p>Specify the hue angle as a number of radians. It accepts an
|
|
expression, and defaults to "0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Specify the brightness in the [-10,10] range. It accepts an expression and
|
|
defaults to "0".
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>‘<samp>h</samp>’ and ‘<samp>H</samp>’ are mutually exclusive, and can’t be
|
|
specified at the same time.
|
|
</p>
|
|
<p>The ‘<samp>b</samp>’, ‘<samp>h</samp>’, ‘<samp>H</samp>’ and ‘<samp>s</samp>’ option values are
|
|
expressions containing the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>frame count of the input frame starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dd><p>presentation timestamp of the input frame expressed in time base units
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>r</samp>’</dt>
|
|
<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tb</samp>’</dt>
|
|
<dd><p>time base of the input video
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-9"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-9">37.44.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Set the hue to 90 degrees and the saturation to 1.0:
|
|
<table><tr><td> </td><td><pre class="example">hue=h=90:s=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Same command but expressing the hue in radians:
|
|
<table><tr><td> </td><td><pre class="example">hue=H=PI/2:s=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Rotate hue and make the saturation swing between 0
|
|
and 2 over a period of 1 second:
|
|
<table><tr><td> </td><td><pre class="example">hue="H=2*PI*t: s=sin(2*PI*t)+1"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply a 3 seconds saturation fade-in effect starting at 0:
|
|
<table><tr><td> </td><td><pre class="example">hue="s=min(t/3\,1)"
|
|
</pre></td></tr></table>
|
|
|
|
<p>The general fade-in expression can be written as:
|
|
</p><table><tr><td> </td><td><pre class="example">hue="s=min(0\, max((t-START)/DURATION\, 1))"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
|
|
<table><tr><td> </td><td><pre class="example">hue="s=max(0\, min(1\, (8-t)/3))"
|
|
</pre></td></tr></table>
|
|
|
|
<p>The general fade-out expression can be written as:
|
|
</p><table><tr><td> </td><td><pre class="example">hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="Commands-4"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-4">37.44.2 Commands</a></h3>
|
|
|
|
<p>This filter supports the following commands:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dt> ‘<samp>H</samp>’</dt>
|
|
<dd><p>Modify the hue and/or the saturation and/or brightness of the input video.
|
|
The command accepts the same syntax of the corresponding option.
|
|
</p>
|
|
<p>If the specified expression is not valid, it is kept at its current
|
|
value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="idet"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-idet">37.45 idet</a></h2>
|
|
|
|
<p>Detect video interlacing type.
|
|
</p>
|
|
<p>This filter tries to detect if the input is interlaced or progressive,
|
|
top or bottom field first.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>intl_thres</samp>’</dt>
|
|
<dd><p>Set interlacing threshold.
|
|
</p></dd>
|
|
<dt> ‘<samp>prog_thres</samp>’</dt>
|
|
<dd><p>Set progressive threshold.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="il"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-il">37.46 il</a></h2>
|
|
|
|
<p>Deinterleave or interleave fields.
|
|
</p>
|
|
<p>This filter allows one to process interlaced images fields without
|
|
deinterlacing them. Deinterleaving splits the input frame into 2
|
|
fields (so called half pictures). Odd lines are moved to the top
|
|
half of the output image, even lines to the bottom half.
|
|
You can process (filter) them independently and then re-interleave them.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_mode, l</samp>’</dt>
|
|
<dt> ‘<samp>chroma_mode, c</samp>’</dt>
|
|
<dt> ‘<samp>alpha_mode, a</samp>’</dt>
|
|
<dd><p>Available values for <var>luma_mode</var>, <var>chroma_mode</var> and
|
|
<var>alpha_mode</var> are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Do nothing.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>deinterleave, d</samp>’</dt>
|
|
<dd><p>Deinterleave fields, placing one above the other.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>interleave, i</samp>’</dt>
|
|
<dd><p>Interleave fields. Reverse the effect of deinterleaving.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is <code>none</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_swap, ls</samp>’</dt>
|
|
<dt> ‘<samp>chroma_swap, cs</samp>’</dt>
|
|
<dt> ‘<samp>alpha_swap, as</samp>’</dt>
|
|
<dd><p>Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is <code>0</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="interlace"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-interlace">37.47 interlace</a></h2>
|
|
|
|
<p>Simple interlacing filter from progressive contents. This interleaves upper (or
|
|
lower) lines from odd frames with lower (or upper) lines from even frames,
|
|
halving the frame rate and preserving image height. A vertical lowpass filter
|
|
is always applied in order to avoid twitter effects and reduce moiré patterns.
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example"> Original Original New Frame
|
|
Frame 'j' Frame 'j+1' (tff)
|
|
========== =========== ==================
|
|
Line 0 --------------------> Frame 'j' Line 0
|
|
Line 1 Line 1 ----> Frame 'j+1' Line 1
|
|
Line 2 ---------------------> Frame 'j' Line 2
|
|
Line 3 Line 3 ----> Frame 'j+1' Line 3
|
|
... ... ...
|
|
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
|
|
</pre></td></tr></table>
|
|
|
|
<p>It accepts the following optional parameters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>scan</samp>’</dt>
|
|
<dd><p>determines whether the interlaced frame is taken from the even (tff - default)
|
|
or odd (bff) lines of the progressive frame.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="kerndeint"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-kerndeint">37.48 kerndeint</a></h2>
|
|
|
|
<p>Deinterlace input video by applying Donald Graft’s adaptive kernel
|
|
deinterling. Work on interlaced parts of a video to produce
|
|
progressive frames.
|
|
</p>
|
|
<p>The description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>thresh</samp>’</dt>
|
|
<dd><p>Set the threshold which affects the filter’s tolerance when
|
|
determining if a pixel line must be processed. It must be an integer
|
|
in the range [0,255] and defaults to 10. A value of 0 will result in
|
|
applying the process on every pixels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>map</samp>’</dt>
|
|
<dd><p>Paint pixels exceeding the threshold value to white if set to 1.
|
|
Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>order</samp>’</dt>
|
|
<dd><p>Set the fields order. Swap fields if set to 1, leave fields alone if
|
|
0. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sharp</samp>’</dt>
|
|
<dd><p>Enable additional sharpening if set to 1. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>twoway</samp>’</dt>
|
|
<dd><p>Enable twoway sharpening if set to 1. Default is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-88"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-88">37.48.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply default values:
|
|
<table><tr><td> </td><td><pre class="example">kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Enable additional sharpening:
|
|
<table><tr><td> </td><td><pre class="example">kerndeint=sharp=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Paint processed pixels in white:
|
|
<table><tr><td> </td><td><pre class="example">kerndeint=map=1
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="lut3d"></a>
|
|
</p><a name="lut3d-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-lut3d-1">37.49 lut3d</a></h2>
|
|
|
|
<p>Apply a 3D LUT to an input video.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>file</samp>’</dt>
|
|
<dd><p>Set the 3D LUT file name.
|
|
</p>
|
|
<p>Currently supported formats:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>3dl</samp>’</dt>
|
|
<dd><p>AfterEffects
|
|
</p></dd>
|
|
<dt> ‘<samp>cube</samp>’</dt>
|
|
<dd><p>Iridas
|
|
</p></dd>
|
|
<dt> ‘<samp>dat</samp>’</dt>
|
|
<dd><p>DaVinci
|
|
</p></dd>
|
|
<dt> ‘<samp>m3d</samp>’</dt>
|
|
<dd><p>Pandora
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
<dt> ‘<samp>interp</samp>’</dt>
|
|
<dd><p>Select interpolation mode.
|
|
</p>
|
|
<p>Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>nearest</samp>’</dt>
|
|
<dd><p>Use values from the nearest defined point.
|
|
</p></dd>
|
|
<dt> ‘<samp>trilinear</samp>’</dt>
|
|
<dd><p>Interpolate values using the 8 points defining a cube.
|
|
</p></dd>
|
|
<dt> ‘<samp>tetrahedral</samp>’</dt>
|
|
<dd><p>Interpolate values using a tetrahedron.
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="lut_002c-lutrgb_002c-lutyuv"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-lut_002c-lutrgb_002c-lutyuv">37.50 lut, lutrgb, lutyuv</a></h2>
|
|
|
|
<p>Compute a look-up table for binding each pixel component input value
|
|
to an output value, and apply it to input video.
|
|
</p>
|
|
<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
|
|
to an RGB input video.
|
|
</p>
|
|
<p>These filters accept the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>c0</samp>’</dt>
|
|
<dd><p>set first pixel component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>c1</samp>’</dt>
|
|
<dd><p>set second pixel component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>c2</samp>’</dt>
|
|
<dd><p>set third pixel component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>c3</samp>’</dt>
|
|
<dd><p>set fourth pixel component expression, corresponds to the alpha component
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>r</samp>’</dt>
|
|
<dd><p>set red component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>g</samp>’</dt>
|
|
<dd><p>set green component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>set blue component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>alpha component expression
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>set Y/luminance component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>u</samp>’</dt>
|
|
<dd><p>set U/Cb component expression
|
|
</p></dd>
|
|
<dt> ‘<samp>v</samp>’</dt>
|
|
<dd><p>set V/Cr component expression
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Each of them specifies the expression to use for computing the lookup table for
|
|
the corresponding pixel component values.
|
|
</p>
|
|
<p>The exact component associated to each of the <var>c*</var> options depends on the
|
|
format in input.
|
|
</p>
|
|
<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in input,
|
|
<var>lutrgb</var> requires RGB pixel formats in input, and <var>lutyuv</var> requires YUV.
|
|
</p>
|
|
<p>The expressions can contain the following constants and functions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>the input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>val</samp>’</dt>
|
|
<dd><p>input value for the pixel component
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>clipval</samp>’</dt>
|
|
<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>maxval</samp>’</dt>
|
|
<dd><p>maximum value for the pixel component
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>minval</samp>’</dt>
|
|
<dd><p>minimum value for the pixel component
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>negval</samp>’</dt>
|
|
<dd><p>the negated value for the pixel component value clipped in the
|
|
<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
|
|
"maxval-clipval+minval"
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>clip(val)</samp>’</dt>
|
|
<dd><p>the computed value in <var>val</var> clipped in the
|
|
<var>minval</var>-<var>maxval</var> range
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>gammaval(gamma)</samp>’</dt>
|
|
<dd><p>the computed gamma correction value of the pixel component value
|
|
clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
|
|
expression
|
|
"pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval"
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>All expressions default to "val".
|
|
</p>
|
|
<a name="Examples-51"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-51">37.50.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Negate input video:
|
|
<table><tr><td> </td><td><pre class="example">lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
|
|
lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
|
|
</pre></td></tr></table>
|
|
|
|
<p>The above is the same as:
|
|
</p><table><tr><td> </td><td><pre class="example">lutrgb="r=negval:g=negval:b=negval"
|
|
lutyuv="y=negval:u=negval:v=negval"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Negate luminance:
|
|
<table><tr><td> </td><td><pre class="example">lutyuv=y=negval
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Remove chroma components, turns the video into a graytone image:
|
|
<table><tr><td> </td><td><pre class="example">lutyuv="u=128:v=128"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply a luma burning effect:
|
|
<table><tr><td> </td><td><pre class="example">lutyuv="y=2*val"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Remove green and blue components:
|
|
<table><tr><td> </td><td><pre class="example">lutrgb="g=0:b=0"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set a constant alpha channel value on input:
|
|
<table><tr><td> </td><td><pre class="example">format=rgba,lutrgb=a="maxval-minval/2"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Correct luminance gamma by a 0.5 factor:
|
|
<table><tr><td> </td><td><pre class="example">lutyuv=y=gammaval(0.5)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Discard least significant bits of luma:
|
|
<table><tr><td> </td><td><pre class="example">lutyuv=y='bitand(val, 128+64+32)'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="mergeplanes"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mergeplanes">37.51 mergeplanes</a></h2>
|
|
|
|
<p>Merge color channel components from several video streams.
|
|
</p>
|
|
<p>The filter accepts up to 4 input streams, and merge selected input
|
|
planes to the output video.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>mapping</samp>’</dt>
|
|
<dd><p>Set input to output plane mapping. Default is <code>0</code>.
|
|
</p>
|
|
<p>The mappings is specified as a bitmap. It should be specified as a
|
|
hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. ’Aa’ describes the
|
|
mapping for the first plane of the output stream. ’A’ sets the number of
|
|
the input stream to use (from 0 to 3), and ’a’ the plane number of the
|
|
corresponding input to use (from 0 to 3). The rest of the mappings is
|
|
similar, ’Bb’ describes the mapping for the output stream second
|
|
plane, ’Cc’ describes the mapping for the output stream third plane and
|
|
’Dd’ describes the mapping for the output stream fourth plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>format</samp>’</dt>
|
|
<dd><p>Set output pixel format. Default is <code>yuva444p</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-59"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-59">37.51.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Merge three gray video streams of same width and height into single video stream:
|
|
<table><tr><td> </td><td><pre class="example">[a0][a1][a2]mergeplanes=0x001020:yuv444p
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
|
|
<table><tr><td> </td><td><pre class="example">[a0][a1]mergeplanes=0x00010210:yuva444p
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Swap Y and A plane in yuva444p stream:
|
|
<table><tr><td> </td><td><pre class="example">format=yuva444p,mergeplanes=0x03010200:yuva444p
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Swap U and V plane in yuv420p stream:
|
|
<table><tr><td> </td><td><pre class="example">format=yuv420p,mergeplanes=0x000201:yuv420p
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Cast a rgb24 clip to yuv444p:
|
|
<table><tr><td> </td><td><pre class="example">format=rgb24,mergeplanes=0x000102:yuv444p
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="mcdeint"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mcdeint">37.52 mcdeint</a></h2>
|
|
|
|
<p>Apply motion-compensation deinterlacing.
|
|
</p>
|
|
<p>It needs one field per frame as input and must thus be used together
|
|
with yadif=1/3 or equivalent.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set the deinterlacing mode.
|
|
</p>
|
|
<p>It accepts one of the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>fast</samp>’</dt>
|
|
<dt> ‘<samp>medium</samp>’</dt>
|
|
<dt> ‘<samp>slow</samp>’</dt>
|
|
<dd><p>use iterative motion estimation
|
|
</p></dd>
|
|
<dt> ‘<samp>extra_slow</samp>’</dt>
|
|
<dd><p>like ‘<samp>slow</samp>’, but use multiple reference frames.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is ‘<samp>fast</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>parity</samp>’</dt>
|
|
<dd><p>Set the picture field parity assumed for the input video. It must be
|
|
one of the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>0, tff</samp>’</dt>
|
|
<dd><p>assume top field first
|
|
</p></dd>
|
|
<dt> ‘<samp>1, bff</samp>’</dt>
|
|
<dd><p>assume bottom field first
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>bff</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qp</samp>’</dt>
|
|
<dd><p>Set per-block quantization parameter (QP) used by the internal
|
|
encoder.
|
|
</p>
|
|
<p>Higher values should result in a smoother motion vector field but less
|
|
optimal individual vectors. Default value is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="mp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mp">37.53 mp</a></h2>
|
|
|
|
<p>Apply an MPlayer filter to the input video.
|
|
</p>
|
|
<p>This filter provides a wrapper around some of the filters of
|
|
MPlayer/MEncoder.
|
|
</p>
|
|
<p>This wrapper is considered experimental. Some of the wrapped filters
|
|
may not work properly and we may drop support for them, as they will
|
|
be implemented natively into FFmpeg. Thus you should avoid
|
|
depending on them when writing portable scripts.
|
|
</p>
|
|
<p>The filter accepts the parameters:
|
|
<var>filter_name</var>[:=]<var>filter_params</var>
|
|
</p>
|
|
<p><var>filter_name</var> is the name of a supported MPlayer filter,
|
|
<var>filter_params</var> is a string containing the parameters accepted by
|
|
the named filter.
|
|
</p>
|
|
<p>The list of the currently supported filters follows:
|
|
</p><dl compact="compact">
|
|
<dt> <var>eq2</var></dt>
|
|
<dt> <var>eq</var></dt>
|
|
<dt> <var>fspp</var></dt>
|
|
<dt> <var>ilpack</var></dt>
|
|
<dt> <var>pp7</var></dt>
|
|
<dt> <var>softpulldown</var></dt>
|
|
<dt> <var>uspp</var></dt>
|
|
</dl>
|
|
|
|
<p>The parameter syntax and behavior for the listed filters are the same
|
|
of the corresponding MPlayer filters. For detailed instructions check
|
|
the "VIDEO FILTERS" section in the MPlayer manual.
|
|
</p>
|
|
<a name="Examples-21"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-21">37.53.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Adjust gamma, brightness, contrast:
|
|
<table><tr><td> </td><td><pre class="example">mp=eq2=1.0:2:0.5
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
|
|
</p>
|
|
<a name="mpdecimate"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mpdecimate">37.54 mpdecimate</a></h2>
|
|
|
|
<p>Drop frames that do not differ greatly from the previous frame in
|
|
order to reduce frame rate.
|
|
</p>
|
|
<p>The main use of this filter is for very-low-bitrate encoding
|
|
(e.g. streaming over dialup modem), but it could in theory be used for
|
|
fixing movies that were inverse-telecined incorrectly.
|
|
</p>
|
|
<p>A description of the accepted options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>max</samp>’</dt>
|
|
<dd><p>Set the maximum number of consecutive frames which can be dropped (if
|
|
positive), or the minimum interval between dropped frames (if
|
|
negative). If the value is 0, the frame is dropped unregarding the
|
|
number of previous sequentially dropped frames.
|
|
</p>
|
|
<p>Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hi</samp>’</dt>
|
|
<dt> ‘<samp>lo</samp>’</dt>
|
|
<dt> ‘<samp>frac</samp>’</dt>
|
|
<dd><p>Set the dropping threshold values.
|
|
</p>
|
|
<p>Values for ‘<samp>hi</samp>’ and ‘<samp>lo</samp>’ are for 8x8 pixel blocks and
|
|
represent actual pixel value differences, so a threshold of 64
|
|
corresponds to 1 unit of difference for each pixel, or the same spread
|
|
out differently over the block.
|
|
</p>
|
|
<p>A frame is a candidate for dropping if no 8x8 blocks differ by more
|
|
than a threshold of ‘<samp>hi</samp>’, and if no more than ‘<samp>frac</samp>’ blocks (1
|
|
meaning the whole image) differ by more than a threshold of ‘<samp>lo</samp>’.
|
|
</p>
|
|
<p>Default value for ‘<samp>hi</samp>’ is 64*12, default value for ‘<samp>lo</samp>’ is
|
|
64*5, and default value for ‘<samp>frac</samp>’ is 0.33.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<a name="negate"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-negate">37.55 negate</a></h2>
|
|
|
|
<p>Negate input video.
|
|
</p>
|
|
<p>This filter accepts an integer in input, if non-zero it negates the
|
|
alpha component (if available). The default value in input is 0.
|
|
</p>
|
|
<a name="noformat"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-noformat">37.56 noformat</a></h2>
|
|
|
|
<p>Force libavfilter not to use any of the specified pixel formats for the
|
|
input to the next filter.
|
|
</p>
|
|
<p>This filter accepts the following parameters:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>pix_fmts</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of pixel format names, for example
|
|
"pix_fmts=yuv420p|monow|rgb24".
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-100"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-100">37.56.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Force libavfilter to use a format different from <var>yuv420p</var> for the
|
|
input to the vflip filter:
|
|
<table><tr><td> </td><td><pre class="example">noformat=pix_fmts=yuv420p,vflip
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Convert the input video to any of the formats not contained in the list:
|
|
<table><tr><td> </td><td><pre class="example">noformat=yuv420p|yuv444p|yuv410p
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="noise"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-noise">37.57 noise</a></h2>
|
|
|
|
<p>Add noise on video input frame.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>all_seed</samp>’</dt>
|
|
<dt> ‘<samp>c0_seed</samp>’</dt>
|
|
<dt> ‘<samp>c1_seed</samp>’</dt>
|
|
<dt> ‘<samp>c2_seed</samp>’</dt>
|
|
<dt> ‘<samp>c3_seed</samp>’</dt>
|
|
<dd><p>Set noise seed for specific pixel component or all pixel components in case
|
|
of <var>all_seed</var>. Default value is <code>123457</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>all_strength, alls</samp>’</dt>
|
|
<dt> ‘<samp>c0_strength, c0s</samp>’</dt>
|
|
<dt> ‘<samp>c1_strength, c1s</samp>’</dt>
|
|
<dt> ‘<samp>c2_strength, c2s</samp>’</dt>
|
|
<dt> ‘<samp>c3_strength, c3s</samp>’</dt>
|
|
<dd><p>Set noise strength for specific pixel component or all pixel components in case
|
|
<var>all_strength</var>. Default value is <code>0</code>. Allowed range is [0, 100].
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>all_flags, allf</samp>’</dt>
|
|
<dt> ‘<samp>c0_flags, c0f</samp>’</dt>
|
|
<dt> ‘<samp>c1_flags, c1f</samp>’</dt>
|
|
<dt> ‘<samp>c2_flags, c2f</samp>’</dt>
|
|
<dt> ‘<samp>c3_flags, c3f</samp>’</dt>
|
|
<dd><p>Set pixel component flags or set flags for all components if <var>all_flags</var>.
|
|
Available values for component flags are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>averaged temporal noise (smoother)
|
|
</p></dd>
|
|
<dt> ‘<samp>p</samp>’</dt>
|
|
<dd><p>mix random noise with a (semi)regular pattern
|
|
</p></dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>temporal noise (noise pattern changes between frames)
|
|
</p></dd>
|
|
<dt> ‘<samp>u</samp>’</dt>
|
|
<dd><p>uniform noise (gaussian otherwise)
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-53"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-53">37.57.1 Examples</a></h3>
|
|
|
|
<p>Add temporal and uniform noise to input video:
|
|
</p><table><tr><td> </td><td><pre class="example">noise=alls=20:allf=t+u
|
|
</pre></td></tr></table>
|
|
|
|
<a name="null-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-null-1">37.58 null</a></h2>
|
|
|
|
<p>Pass the video source unchanged to the output.
|
|
</p>
|
|
<a name="ocv"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ocv">37.59 ocv</a></h2>
|
|
|
|
<p>Apply video transform using libopencv.
|
|
</p>
|
|
<p>To enable this filter install libopencv library and headers and
|
|
configure FFmpeg with <code>--enable-libopencv</code>.
|
|
</p>
|
|
<p>This filter accepts the following parameters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filter_name</samp>’</dt>
|
|
<dd><p>The name of the libopencv filter to apply.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filter_params</samp>’</dt>
|
|
<dd><p>The parameters to pass to the libopencv filter. If not specified the default
|
|
values are assumed.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Refer to the official libopencv documentation for more precise
|
|
information:
|
|
<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
|
|
</p>
|
|
<p>Follows the list of supported libopencv filters.
|
|
</p>
|
|
<p><a name="dilate"></a>
|
|
</p><a name="dilate-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-dilate-1">37.59.1 dilate</a></h3>
|
|
|
|
<p>Dilate an image by using a specific structuring element.
|
|
This filter corresponds to the libopencv function <code>cvDilate</code>.
|
|
</p>
|
|
<p>It accepts the parameters: <var>struct_el</var>|<var>nb_iterations</var>.
|
|
</p>
|
|
<p><var>struct_el</var> represents a structuring element, and has the syntax:
|
|
<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
|
|
</p>
|
|
<p><var>cols</var> and <var>rows</var> represent the number of columns and rows of
|
|
the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
|
|
point, and <var>shape</var> the shape for the structuring element, and
|
|
can be one of the values "rect", "cross", "ellipse", "custom".
|
|
</p>
|
|
<p>If the value for <var>shape</var> is "custom", it must be followed by a
|
|
string of the form "=<var>filename</var>". The file with name
|
|
<var>filename</var> is assumed to represent a binary image, with each
|
|
printable character corresponding to a bright pixel. When a custom
|
|
<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
|
|
or columns and rows of the read file are assumed instead.
|
|
</p>
|
|
<p>The default value for <var>struct_el</var> is "3x3+0x0/rect".
|
|
</p>
|
|
<p><var>nb_iterations</var> specifies the number of times the transform is
|
|
applied to the image, and defaults to 1.
|
|
</p>
|
|
<p>Follow some example:
|
|
</p><table><tr><td> </td><td><pre class="example"># use the default values
|
|
ocv=dilate
|
|
|
|
# dilate using a structuring element with a 5x5 cross, iterate two times
|
|
ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
|
|
|
|
# read the shape from the file diamond.shape, iterate two times
|
|
# the file diamond.shape may contain a pattern of characters like this:
|
|
# *
|
|
# ***
|
|
# *****
|
|
# ***
|
|
# *
|
|
# the specified cols and rows are ignored (but not the anchor point coordinates)
|
|
ocv=dilate:0x0+2x2/custom=diamond.shape|2
|
|
</pre></td></tr></table>
|
|
|
|
<a name="erode"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-erode">37.59.2 erode</a></h3>
|
|
|
|
<p>Erode an image by using a specific structuring element.
|
|
This filter corresponds to the libopencv function <code>cvErode</code>.
|
|
</p>
|
|
<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
|
|
with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
|
|
</p>
|
|
<a name="smooth"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-smooth">37.59.3 smooth</a></h3>
|
|
|
|
<p>Smooth the input video.
|
|
</p>
|
|
<p>The filter takes the following parameters:
|
|
<var>type</var>|<var>param1</var>|<var>param2</var>|<var>param3</var>|<var>param4</var>.
|
|
</p>
|
|
<p><var>type</var> is the type of smooth filter to apply, and can be one of
|
|
the following values: "blur", "blur_no_scale", "median", "gaussian",
|
|
"bilateral". The default value is "gaussian".
|
|
</p>
|
|
<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
|
|
parameters whose meanings depend on smooth type. <var>param1</var> and
|
|
<var>param2</var> accept integer positive values or 0, <var>param3</var> and
|
|
<var>param4</var> accept float values.
|
|
</p>
|
|
<p>The default value for <var>param1</var> is 3, the default value for the
|
|
other parameters is 0.
|
|
</p>
|
|
<p>These parameters correspond to the parameters assigned to the
|
|
libopencv function <code>cvSmooth</code>.
|
|
</p>
|
|
<p><a name="overlay"></a>
|
|
</p><a name="overlay-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-overlay-1">37.60 overlay</a></h2>
|
|
|
|
<p>Overlay one video on top of another.
|
|
</p>
|
|
<p>It takes two inputs and one output, the first input is the "main"
|
|
video on which the second input is overlayed.
|
|
</p>
|
|
<p>This filter accepts the following parameters:
|
|
</p>
|
|
<p>A description of the accepted options follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>Set the expression for the x and y coordinates of the overlayed video
|
|
on the main video. Default value is "0" for both expressions. In case
|
|
the expression is invalid, it is set to a huge value (meaning that the
|
|
overlay will not be displayed within the output visible area).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>eof_action</samp>’</dt>
|
|
<dd><p>The action to take when EOF is encountered on the secondary input, accepts one
|
|
of the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>repeat</samp>’</dt>
|
|
<dd><p>repeat the last frame (the default)
|
|
</p></dd>
|
|
<dt> ‘<samp>endall</samp>’</dt>
|
|
<dd><p>end both streams
|
|
</p></dd>
|
|
<dt> ‘<samp>pass</samp>’</dt>
|
|
<dd><p>pass through the main input
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>eval</samp>’</dt>
|
|
<dd><p>Set when the expressions for ‘<samp>x</samp>’, and ‘<samp>y</samp>’ are evaluated.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>init</samp>’</dt>
|
|
<dd><p>only evaluate expressions once during the filter initialization or
|
|
when a command is processed
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame</samp>’</dt>
|
|
<dd><p>evaluate expressions for each incoming frame
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>frame</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>shortest</samp>’</dt>
|
|
<dd><p>If set to 1, force the output to terminate when the shortest input
|
|
terminates. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>format</samp>’</dt>
|
|
<dd><p>Set the format for the output video.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>yuv420</samp>’</dt>
|
|
<dd><p>force YUV420 output
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>yuv422</samp>’</dt>
|
|
<dd><p>force YUV422 output
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>yuv444</samp>’</dt>
|
|
<dd><p>force YUV444 output
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rgb</samp>’</dt>
|
|
<dd><p>force RGB output
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>yuv420</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rgb <em>(deprecated)</em></samp>’</dt>
|
|
<dd><p>If set to 1, force the filter to accept inputs in the RGB
|
|
color space. Default value is 0. This option is deprecated, use
|
|
‘<samp>format</samp>’ instead.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>repeatlast</samp>’</dt>
|
|
<dd><p>If set to 1, force the filter to draw the last overlay frame over the
|
|
main input until the end of the stream. A value of 0 disables this
|
|
behavior. Default value is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The ‘<samp>x</samp>’, and ‘<samp>y</samp>’ expressions can contain the following
|
|
parameters.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>main_w, W</samp>’</dt>
|
|
<dt> ‘<samp>main_h, H</samp>’</dt>
|
|
<dd><p>main input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>overlay_w, w</samp>’</dt>
|
|
<dt> ‘<samp>overlay_h, h</samp>’</dt>
|
|
<dd><p>overlay input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
|
|
each new frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values of the output
|
|
format. For example for the pixel format "yuv422p" <var>hsub</var> is 2 and
|
|
<var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>the number of input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>the position in the file of the input frame, NAN if unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Note that the <var>n</var>, <var>pos</var>, <var>t</var> variables are available only
|
|
when evaluation is done <em>per frame</em>, and will evaluate to NAN
|
|
when ‘<samp>eval</samp>’ is set to ‘<samp>init</samp>’.
|
|
</p>
|
|
<p>Be aware that frames are taken from each input video in timestamp
|
|
order, hence, if their initial timestamps differ, it is a good idea
|
|
to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
|
|
have them begin in the same zero timestamp, as it does the example for
|
|
the <var>movie</var> filter.
|
|
</p>
|
|
<p>You can chain together more overlays but you should test the
|
|
efficiency of such approach.
|
|
</p>
|
|
<a name="Commands-5"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-5">37.60.1 Commands</a></h3>
|
|
|
|
<p>This filter supports the following commands:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>Modify the x and y of the overlay input.
|
|
The command accepts the same syntax of the corresponding option.
|
|
</p>
|
|
<p>If the specified expression is not valid, it is kept at its current
|
|
value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-85"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-85">37.60.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Draw the overlay at 10 pixels from the bottom right corner of the main
|
|
video:
|
|
<table><tr><td> </td><td><pre class="example">overlay=main_w-overlay_w-10:main_h-overlay_h-10
|
|
</pre></td></tr></table>
|
|
|
|
<p>Using named options the example above becomes:
|
|
</p><table><tr><td> </td><td><pre class="example">overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Insert a transparent PNG logo in the bottom left corner of the input,
|
|
using the <code>ffmpeg</code> tool with the <code>-filter_complex</code> option:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Insert 2 different transparent PNG logos (second logo on bottom
|
|
right corner) using the <code>ffmpeg</code> tool:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Add a transparent color layer on top of the main video, <code>WxH</code>
|
|
must specify the size of the main input to the overlay filter:
|
|
<table><tr><td> </td><td><pre class="example">color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Play an original video and a filtered version (here with the deshake
|
|
filter) side by side using the <code>ffplay</code> tool:
|
|
<table><tr><td> </td><td><pre class="example">ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
|
|
</pre></td></tr></table>
|
|
|
|
<p>The above command is the same as:
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Make a sliding overlay appearing from the left to the right top part of the
|
|
screen starting since time 2:
|
|
<table><tr><td> </td><td><pre class="example">overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Compose output by putting two input videos side to side:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i left.avi -i right.avi -filter_complex "
|
|
nullsrc=size=200x100 [background];
|
|
[0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
|
|
[1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
|
|
[background][left] overlay=shortest=1 [background+left];
|
|
[background+left][right] overlay=shortest=1:x=100 [left+right]
|
|
"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
mask 10-20 seconds of a video by applying the delogo filter to a section
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
|
|
-vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
|
|
masked.avi
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Chain several overlays in cascade:
|
|
<table><tr><td> </td><td><pre class="example">nullsrc=s=200x200 [bg];
|
|
testsrc=s=100x100, split=4 [in0][in1][in2][in3];
|
|
[in0] lutrgb=r=0, [bg] overlay=0:0 [mid0];
|
|
[in1] lutrgb=g=0, [mid0] overlay=100:0 [mid1];
|
|
[in2] lutrgb=b=0, [mid1] overlay=0:100 [mid2];
|
|
[in3] null, [mid2] overlay=100:100 [out0]
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="owdenoise"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-owdenoise">37.61 owdenoise</a></h2>
|
|
|
|
<p>Apply Overcomplete Wavelet denoiser.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>depth</samp>’</dt>
|
|
<dd><p>Set depth.
|
|
</p>
|
|
<p>Larger depth values will denoise lower frequency components more, but
|
|
slow down filtering.
|
|
</p>
|
|
<p>Must be an int in the range 8-16, default is <code>8</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_strength, ls</samp>’</dt>
|
|
<dd><p>Set luma strength.
|
|
</p>
|
|
<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_strength, cs</samp>’</dt>
|
|
<dd><p>Set chroma strength.
|
|
</p>
|
|
<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="pad"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pad">37.62 pad</a></h2>
|
|
|
|
<p>Add paddings to the input image, and place the original input at the
|
|
given coordinates <var>x</var>, <var>y</var>.
|
|
</p>
|
|
<p>This filter accepts the following parameters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dt> ‘<samp>height, h</samp>’</dt>
|
|
<dd><p>Specify an expression for the size of the output image with the
|
|
paddings added. If the value for <var>width</var> or <var>height</var> is 0, the
|
|
corresponding input size is used for the output.
|
|
</p>
|
|
<p>The <var>width</var> expression can reference the value set by the
|
|
<var>height</var> expression, and vice versa.
|
|
</p>
|
|
<p>The default value of <var>width</var> and <var>height</var> is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>Specify an expression for the offsets where to place the input image
|
|
in the padded area with respect to the top/left border of the output
|
|
image.
|
|
</p>
|
|
<p>The <var>x</var> expression can reference the value set by the <var>y</var>
|
|
expression, and vice versa.
|
|
</p>
|
|
<p>The default value of <var>x</var> and <var>y</var> is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color</samp>’</dt>
|
|
<dd><p>Specify the color of the padded area. For the syntax of this option,
|
|
check the "Color" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>The default value of <var>color</var> is "black".
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The value for the <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var>
|
|
options are expressions containing the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>in_w</samp>’</dt>
|
|
<dt> ‘<samp>in_h</samp>’</dt>
|
|
<dd><p>the input video width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>iw</samp>’</dt>
|
|
<dt> ‘<samp>ih</samp>’</dt>
|
|
<dd><p>same as <var>in_w</var> and <var>in_h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_w</samp>’</dt>
|
|
<dt> ‘<samp>out_h</samp>’</dt>
|
|
<dd><p>the output width and height, that is the size of the padded area as
|
|
specified by the <var>width</var> and <var>height</var> expressions
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ow</samp>’</dt>
|
|
<dt> ‘<samp>oh</samp>’</dt>
|
|
<dd><p>same as <var>out_w</var> and <var>out_h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x</samp>’</dt>
|
|
<dt> ‘<samp>y</samp>’</dt>
|
|
<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
|
|
expressions, or NAN if not yet specified
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>same as <var>iw</var> / <var>ih</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>input sample aspect ratio
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dar</samp>’</dt>
|
|
<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-96"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-96">37.62.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Add paddings with color "violet" to the input video. Output video
|
|
size is 640x480, the top-left corner of the input video is placed at
|
|
column 0, row 40:
|
|
<table><tr><td> </td><td><pre class="example">pad=640:480:0:40:violet
|
|
</pre></td></tr></table>
|
|
|
|
<p>The example above is equivalent to the following command:
|
|
</p><table><tr><td> </td><td><pre class="example">pad=width=640:height=480:x=0:y=40:color=violet
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Pad the input to get an output with dimensions increased by 3/2,
|
|
and put the input video at the center of the padded area:
|
|
<table><tr><td> </td><td><pre class="example">pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Pad the input to get a squared output with size equal to the maximum
|
|
value between the input width and height, and put the input video at
|
|
the center of the padded area:
|
|
<table><tr><td> </td><td><pre class="example">pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Pad the input to get a final w/h ratio of 16:9:
|
|
<table><tr><td> </td><td><pre class="example">pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
In case of anamorphic video, in order to set the output display aspect
|
|
correctly, it is necessary to use <var>sar</var> in the expression,
|
|
according to the relation:
|
|
<table><tr><td> </td><td><pre class="example">(ih * X / ih) * sar = output_dar
|
|
X = output_dar / sar
|
|
</pre></td></tr></table>
|
|
|
|
<p>Thus the previous example needs to be modified to:
|
|
</p><table><tr><td> </td><td><pre class="example">pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Double output size and put the input video in the bottom-right
|
|
corner of the output padded area:
|
|
<table><tr><td> </td><td><pre class="example">pad="2*iw:2*ih:ow-iw:oh-ih"
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="perspective"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-perspective">37.63 perspective</a></h2>
|
|
|
|
<p>Correct perspective of video not recorded perpendicular to the screen.
|
|
</p>
|
|
<p>A description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>x0</samp>’</dt>
|
|
<dt> ‘<samp>y0</samp>’</dt>
|
|
<dt> ‘<samp>x1</samp>’</dt>
|
|
<dt> ‘<samp>y1</samp>’</dt>
|
|
<dt> ‘<samp>x2</samp>’</dt>
|
|
<dt> ‘<samp>y2</samp>’</dt>
|
|
<dt> ‘<samp>x3</samp>’</dt>
|
|
<dt> ‘<samp>y3</samp>’</dt>
|
|
<dd><p>Set coordinates expression for top left, top right, bottom left and bottom right corners.
|
|
Default values are <code>0:0:W:0:0:H:W:H</code> with which perspective will remain unchanged.
|
|
</p>
|
|
<p>The expressions can use the following variables:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>W</samp>’</dt>
|
|
<dt> ‘<samp>H</samp>’</dt>
|
|
<dd><p>the width and height of video frame.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>interpolation</samp>’</dt>
|
|
<dd><p>Set interpolation for perspective correction.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>linear</samp>’</dt>
|
|
<dt> ‘<samp>cubic</samp>’</dt>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>linear</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="phase"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-phase">37.64 phase</a></h2>
|
|
|
|
<p>Delay interlaced video by one field time so that the field order changes.
|
|
</p>
|
|
<p>The intended use is to fix PAL movies that have been captured with the
|
|
opposite field order to the film-to-video transfer.
|
|
</p>
|
|
<p>A description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set phase mode.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>Capture field order top-first, transfer bottom-first.
|
|
Filter will delay the bottom field.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>b</samp>’</dt>
|
|
<dd><p>Capture field order bottom-first, transfer top-first.
|
|
Filter will delay the top field.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>p</samp>’</dt>
|
|
<dd><p>Capture and transfer with the same field order. This mode only exists
|
|
for the documentation of the other options to refer to, but if you
|
|
actually select it, the filter will faithfully do nothing.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>Capture field order determined automatically by field flags, transfer
|
|
opposite.
|
|
Filter selects among ‘<samp>t</samp>’ and ‘<samp>b</samp>’ modes on a frame by frame
|
|
basis using field flags. If no field information is available,
|
|
then this works just like ‘<samp>u</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>u</samp>’</dt>
|
|
<dd><p>Capture unknown or varying, transfer opposite.
|
|
Filter selects among ‘<samp>t</samp>’ and ‘<samp>b</samp>’ on a frame by frame basis by
|
|
analyzing the images and selecting the alternative that produces best
|
|
match between the fields.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>T</samp>’</dt>
|
|
<dd><p>Capture top-first, transfer unknown or varying.
|
|
Filter selects among ‘<samp>t</samp>’ and ‘<samp>p</samp>’ using image analysis.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>B</samp>’</dt>
|
|
<dd><p>Capture bottom-first, transfer unknown or varying.
|
|
Filter selects among ‘<samp>b</samp>’ and ‘<samp>p</samp>’ using image analysis.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>A</samp>’</dt>
|
|
<dd><p>Capture determined by field flags, transfer unknown or varying.
|
|
Filter selects among ‘<samp>t</samp>’, ‘<samp>b</samp>’ and ‘<samp>p</samp>’ using field flags and
|
|
image analysis. If no field information is available, then this works just
|
|
like ‘<samp>U</samp>’. This is the default mode.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>U</samp>’</dt>
|
|
<dd><p>Both capture and transfer unknown or varying.
|
|
Filter selects among ‘<samp>t</samp>’, ‘<samp>b</samp>’ and ‘<samp>p</samp>’ using image analysis only.
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="pixdesctest"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pixdesctest">37.65 pixdesctest</a></h2>
|
|
|
|
<p>Pixel format descriptor test filter, mainly useful for internal
|
|
testing. The output video should be equal to the input video.
|
|
</p>
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">format=monow, pixdesctest
|
|
</pre></td></tr></table>
|
|
|
|
<p>can be used to test the monowhite pixel format descriptor definition.
|
|
</p>
|
|
<a name="pp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pp">37.66 pp</a></h2>
|
|
|
|
<p>Enable the specified chain of postprocessing subfilters using libpostproc. This
|
|
library should be automatically selected with a GPL build (<code>--enable-gpl</code>).
|
|
Subfilters must be separated by ’/’ and can be disabled by prepending a ’-’.
|
|
Each subfilter and some options have a short and a long name that can be used
|
|
interchangeably, i.e. dr/dering are the same.
|
|
</p>
|
|
<p>The filters accept the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>subfilters</samp>’</dt>
|
|
<dd><p>Set postprocessing subfilters string.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>All subfilters share common options to determine their scope:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>a/autoq</samp>’</dt>
|
|
<dd><p>Honor the quality commands for this subfilter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>c/chrom</samp>’</dt>
|
|
<dd><p>Do chrominance filtering, too (default).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>y/nochrom</samp>’</dt>
|
|
<dd><p>Do luminance filtering only (no chrominance).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n/noluma</samp>’</dt>
|
|
<dd><p>Do chrominance filtering only (no luminance).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>These options can be appended after the subfilter name, separated by a ’|’.
|
|
</p>
|
|
<p>Available subfilters are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>hb/hdeblock[|difference[|flatness]]</samp>’</dt>
|
|
<dd><p>Horizontal deblocking filter
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>difference</samp>’</dt>
|
|
<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
|
|
</p></dd>
|
|
<dt> ‘<samp>flatness</samp>’</dt>
|
|
<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>vb/vdeblock[|difference[|flatness]]</samp>’</dt>
|
|
<dd><p>Vertical deblocking filter
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>difference</samp>’</dt>
|
|
<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
|
|
</p></dd>
|
|
<dt> ‘<samp>flatness</samp>’</dt>
|
|
<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>ha/hadeblock[|difference[|flatness]]</samp>’</dt>
|
|
<dd><p>Accurate horizontal deblocking filter
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>difference</samp>’</dt>
|
|
<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
|
|
</p></dd>
|
|
<dt> ‘<samp>flatness</samp>’</dt>
|
|
<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>va/vadeblock[|difference[|flatness]]</samp>’</dt>
|
|
<dd><p>Accurate vertical deblocking filter
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>difference</samp>’</dt>
|
|
<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
|
|
</p></dd>
|
|
<dt> ‘<samp>flatness</samp>’</dt>
|
|
<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The horizontal and vertical deblocking filters share the difference and
|
|
flatness values so you cannot set different horizontal and vertical
|
|
thresholds.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>h1/x1hdeblock</samp>’</dt>
|
|
<dd><p>Experimental horizontal deblocking filter
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>v1/x1vdeblock</samp>’</dt>
|
|
<dd><p>Experimental vertical deblocking filter
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dr/dering</samp>’</dt>
|
|
<dd><p>Deringing filter
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>threshold1</samp>’</dt>
|
|
<dd><p>larger -> stronger filtering
|
|
</p></dd>
|
|
<dt> ‘<samp>threshold2</samp>’</dt>
|
|
<dd><p>larger -> stronger filtering
|
|
</p></dd>
|
|
<dt> ‘<samp>threshold3</samp>’</dt>
|
|
<dd><p>larger -> stronger filtering
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>al/autolevels[:f/fullyrange], automatic brightness / contrast correction</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>f/fullyrange</samp>’</dt>
|
|
<dd><p>Stretch luminance to <code>0-255</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>lb/linblenddeint</samp>’</dt>
|
|
<dd><p>Linear blend deinterlacing filter that deinterlaces the given block by
|
|
filtering all lines with a <code>(1 2 1)</code> filter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>li/linipoldeint</samp>’</dt>
|
|
<dd><p>Linear interpolating deinterlacing filter that deinterlaces the given block by
|
|
linearly interpolating every second line.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ci/cubicipoldeint</samp>’</dt>
|
|
<dd><p>Cubic interpolating deinterlacing filter deinterlaces the given block by
|
|
cubically interpolating every second line.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>md/mediandeint</samp>’</dt>
|
|
<dd><p>Median deinterlacing filter that deinterlaces the given block by applying a
|
|
median filter to every second line.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fd/ffmpegdeint</samp>’</dt>
|
|
<dd><p>FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
|
|
second line with a <code>(-1 4 2 4 -1)</code> filter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>l5/lowpass5</samp>’</dt>
|
|
<dd><p>Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
|
|
block by filtering all lines with a <code>(-1 2 6 2 -1)</code> filter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fq/forceQuant[|quantizer]</samp>’</dt>
|
|
<dd><p>Overrides the quantizer table from the input with the constant quantizer you
|
|
specify.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>quantizer</samp>’</dt>
|
|
<dd><p>Quantizer to use
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>de/default</samp>’</dt>
|
|
<dd><p>Default pp filter combination (<code>hb|a,vb|a,dr|a</code>)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fa/fast</samp>’</dt>
|
|
<dd><p>Fast pp filter combination (<code>h1|a,v1|a,dr|a</code>)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ac</samp>’</dt>
|
|
<dd><p>High quality pp filter combination (<code>ha|a|128|7,va|a,dr|a</code>)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-102"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-102">37.66.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply horizontal and vertical deblocking, deringing and automatic
|
|
brightness/contrast:
|
|
<table><tr><td> </td><td><pre class="example">pp=hb/vb/dr/al
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply default filters without brightness/contrast correction:
|
|
<table><tr><td> </td><td><pre class="example">pp=de/-al
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply default filters and temporal denoiser:
|
|
<table><tr><td> </td><td><pre class="example">pp=default/tmpnoise|1|2|3
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply deblocking on luminance only, and switch vertical deblocking on or off
|
|
automatically depending on available CPU time:
|
|
<table><tr><td> </td><td><pre class="example">pp=hb|y/vb|a
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="psnr"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-psnr">37.67 psnr</a></h2>
|
|
|
|
<p>Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
|
|
Ratio) between two input videos.
|
|
</p>
|
|
<p>This filter takes in input two input videos, the first input is
|
|
considered the "main" source and is passed unchanged to the
|
|
output. The second input is used as a "reference" video for computing
|
|
the PSNR.
|
|
</p>
|
|
<p>Both video inputs must have the same resolution and pixel format for
|
|
this filter to work correctly. Also it assumes that both inputs
|
|
have the same number of frames, which are compared one by one.
|
|
</p>
|
|
<p>The obtained average PSNR is printed through the logging system.
|
|
</p>
|
|
<p>The filter stores the accumulated MSE (mean squared error) of each
|
|
frame, and at the end of the processing it is averaged across all frames
|
|
equally, and the following formula is applied to obtain the PSNR:
|
|
</p>
|
|
<table><tr><td> </td><td><pre class="example">PSNR = 10*log10(MAX^2/MSE)
|
|
</pre></td></tr></table>
|
|
|
|
<p>Where MAX is the average of the maximum values of each component of the
|
|
image.
|
|
</p>
|
|
<p>The description of the accepted parameters follows.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>stats_file, f</samp>’</dt>
|
|
<dd><p>If specified the filter will use the named file to save the PSNR of
|
|
each individual frame.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The file printed if <var>stats_file</var> is selected, contains a sequence of
|
|
key/value pairs of the form <var>key</var>:<var>value</var> for each compared
|
|
couple of frames.
|
|
</p>
|
|
<p>A description of each shown parameter follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>sequential number of the input frame, starting from 1
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mse_avg</samp>’</dt>
|
|
<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
|
|
frames, averaged over all the image components.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a</samp>’</dt>
|
|
<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
|
|
frames for the component specified by the suffix.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a</samp>’</dt>
|
|
<dd><p>Peak Signal to Noise ratio of the compared frames for the component
|
|
specified by the suffix.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
|
|
[main][ref] psnr="stats_file=stats.log" [out]
|
|
</pre></td></tr></table>
|
|
|
|
<p>On this example the input file being processed is compared with the
|
|
reference file ‘<tt>ref_movie.mpg</tt>’. The PSNR of each individual frame
|
|
is stored in ‘<tt>stats.log</tt>’.
|
|
</p>
|
|
<p><a name="pullup"></a>
|
|
</p><a name="pullup-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-pullup-1">37.68 pullup</a></h2>
|
|
|
|
<p>Pulldown reversal (inverse telecine) filter, capable of handling mixed
|
|
hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
|
|
content.
|
|
</p>
|
|
<p>The pullup filter is designed to take advantage of future context in making
|
|
its decisions. This filter is stateless in the sense that it does not lock
|
|
onto a pattern to follow, but it instead looks forward to the following
|
|
fields in order to identify matches and rebuild progressive frames.
|
|
</p>
|
|
<p>To produce content with an even framerate, insert the fps filter after
|
|
pullup, use <code>fps=24000/1001</code> if the input frame rate is 29.97fps,
|
|
<code>fps=24</code> for 30fps and the (rare) telecined 25fps input.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>jl</samp>’</dt>
|
|
<dt> ‘<samp>jr</samp>’</dt>
|
|
<dt> ‘<samp>jt</samp>’</dt>
|
|
<dt> ‘<samp>jb</samp>’</dt>
|
|
<dd><p>These options set the amount of "junk" to ignore at the left, right, top, and
|
|
bottom of the image, respectively. Left and right are in units of 8 pixels,
|
|
while top and bottom are in units of 2 lines.
|
|
The default is 8 pixels on each side.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sb</samp>’</dt>
|
|
<dd><p>Set the strict breaks. Setting this option to 1 will reduce the chances of
|
|
filter generating an occasional mismatched frame, but it may also cause an
|
|
excessive number of frames to be dropped during high motion sequences.
|
|
Conversely, setting it to -1 will make filter match fields more easily.
|
|
This may help processing of video where there is slight blurring between
|
|
the fields, but may also cause there to be interlaced frames in the output.
|
|
Default value is <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mp</samp>’</dt>
|
|
<dd><p>Set the metric plane to use. It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>l</samp>’</dt>
|
|
<dd><p>Use luma plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>u</samp>’</dt>
|
|
<dd><p>Use chroma blue plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>v</samp>’</dt>
|
|
<dd><p>Use chroma red plane.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>This option may be set to use chroma plane instead of the default luma plane
|
|
for doing filter’s computations. This may improve accuracy on very clean
|
|
source material, but more likely will decrease accuracy, especially if there
|
|
is chroma noise (rainbow effect) or any grayscale video.
|
|
The main purpose of setting ‘<samp>mp</samp>’ to a chroma plane is to reduce CPU
|
|
load and make pullup usable in realtime on slow machines.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For best results (without duplicated frames in the output file) it is
|
|
necessary to change the output frame rate. For example, to inverse
|
|
telecine NTSC input:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i input -vf pullup -r 24000/1001 ...
|
|
</pre></td></tr></table>
|
|
|
|
<a name="removelogo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-removelogo">37.69 removelogo</a></h2>
|
|
|
|
<p>Suppress a TV station logo, using an image file to determine which
|
|
pixels comprise the logo. It works by filling in the pixels that
|
|
comprise the logo with neighboring pixels.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filename, f</samp>’</dt>
|
|
<dd><p>Set the filter bitmap file, which can be any image format supported by
|
|
libavformat. The width and height of the image file must match those of the
|
|
video stream being processed.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Pixels in the provided bitmap image with a value of zero are not
|
|
considered part of the logo, non-zero pixels are considered part of
|
|
the logo. If you use white (255) for the logo and black (0) for the
|
|
rest, you will be safe. For making the filter bitmap, it is
|
|
recommended to take a screen capture of a black frame with the logo
|
|
visible, and then using a threshold filter followed by the erode
|
|
filter once or twice.
|
|
</p>
|
|
<p>If needed, little splotches can be fixed manually. Remember that if
|
|
logo pixels are not covered, the filter quality will be much
|
|
reduced. Marking too many pixels as part of the logo does not hurt as
|
|
much, but it will increase the amount of blurring needed to cover over
|
|
the image and will destroy more information than necessary, and extra
|
|
pixels will slow things down on a large logo.
|
|
</p>
|
|
<a name="rotate"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-rotate">37.70 rotate</a></h2>
|
|
|
|
<p>Rotate video by an arbitrary angle expressed in radians.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<p>A description of the optional parameters follows.
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>angle, a</samp>’</dt>
|
|
<dd><p>Set an expression for the angle by which to rotate the input video
|
|
clockwise, expressed as a number of radians. A negative value will
|
|
result in a counter-clockwise rotation. By default it is set to "0".
|
|
</p>
|
|
<p>This expression is evaluated for each frame.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_w, ow</samp>’</dt>
|
|
<dd><p>Set the output width expression, default value is "iw".
|
|
This expression is evaluated just once during configuration.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_h, oh</samp>’</dt>
|
|
<dd><p>Set the output height expression, default value is "ih".
|
|
This expression is evaluated just once during configuration.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bilinear</samp>’</dt>
|
|
<dd><p>Enable bilinear interpolation if set to 1, a value of 0 disables
|
|
it. Default value is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fillcolor, c</samp>’</dt>
|
|
<dd><p>Set the color used to fill the output area not covered by the rotated
|
|
image. For the generalsyntax of this option, check the "Color" section in the
|
|
ffmpeg-utils manual. If the special value "none" is selected then no
|
|
background is printed (useful for example if the background is never shown).
|
|
</p>
|
|
<p>Default value is "black".
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The expressions for the angle and the output size can contain the
|
|
following constants and functions:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>sequential number of the input frame, starting from 0. It is always NAN
|
|
before the first frame is filtered.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>time in seconds of the input frame, it is set to 0 when the filter is
|
|
configured. It is always NAN before the first frame is filtered.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub</samp>’</dt>
|
|
<dt> ‘<samp>vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>in_w, iw</samp>’</dt>
|
|
<dt> ‘<samp>in_h, ih</samp>’</dt>
|
|
<dd><p>the input video width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>out_w, ow</samp>’</dt>
|
|
<dt> ‘<samp>out_h, oh</samp>’</dt>
|
|
<dd><p>the output width and height, that is the size of the padded area as
|
|
specified by the <var>width</var> and <var>height</var> expressions
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rotw(a)</samp>’</dt>
|
|
<dt> ‘<samp>roth(a)</samp>’</dt>
|
|
<dd><p>the minimal width/height required for completely containing the input
|
|
video rotated by <var>a</var> radians.
|
|
</p>
|
|
<p>These are only available when computing the ‘<samp>out_w</samp>’ and
|
|
‘<samp>out_h</samp>’ expressions.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-33"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-33">37.70.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Rotate the input by PI/6 radians clockwise:
|
|
<table><tr><td> </td><td><pre class="example">rotate=PI/6
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Rotate the input by PI/6 radians counter-clockwise:
|
|
<table><tr><td> </td><td><pre class="example">rotate=-PI/6
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Rotate the input by 45 degrees clockwise:
|
|
<table><tr><td> </td><td><pre class="example">rotate=45*PI/180
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply a constant rotation with period T, starting from an angle of PI/3:
|
|
<table><tr><td> </td><td><pre class="example">rotate=PI/3+2*PI*t/T
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Make the input video rotation oscillating with a period of T
|
|
seconds and an amplitude of A radians:
|
|
<table><tr><td> </td><td><pre class="example">rotate=A*sin(2*PI/T*t)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Rotate the video, output size is chosen so that the whole rotating
|
|
input video is always completely contained in the output:
|
|
<table><tr><td> </td><td><pre class="example">rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Rotate the video, reduce the output size so that no background is ever
|
|
shown:
|
|
<table><tr><td> </td><td><pre class="example">rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="Commands"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands">37.70.2 Commands</a></h3>
|
|
|
|
<p>The filter supports the following commands:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>a, angle</samp>’</dt>
|
|
<dd><p>Set the angle expression.
|
|
The command accepts the same syntax of the corresponding option.
|
|
</p>
|
|
<p>If the specified expression is not valid, it is kept at its current
|
|
value.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="sab"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sab">37.71 sab</a></h2>
|
|
|
|
<p>Apply Shape Adaptive Blur.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_radius, lr</samp>’</dt>
|
|
<dd><p>Set luma blur filter strength, must be a value in range 0.1-4.0, default
|
|
value is 1.0. A greater value will result in a more blurred image, and
|
|
in slower processing.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_pre_filter_radius, lpfr</samp>’</dt>
|
|
<dd><p>Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
|
|
value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_strength, ls</samp>’</dt>
|
|
<dd><p>Set luma maximum difference between pixels to still be considered, must
|
|
be a value in the 0.1-100.0 range, default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_radius, cr</samp>’</dt>
|
|
<dd><p>Set chroma blur filter strength, must be a value in range 0.1-4.0. A
|
|
greater value will result in a more blurred image, and in slower
|
|
processing.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_pre_filter_radius, cpfr</samp>’</dt>
|
|
<dd><p>Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_strength, cs</samp>’</dt>
|
|
<dd><p>Set chroma maximum difference between pixels to still be considered,
|
|
must be a value in the 0.1-100.0 range.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Each chroma option value, if not explicitly specified, is set to the
|
|
corresponding luma option value.
|
|
</p>
|
|
<p><a name="scale"></a>
|
|
</p><a name="scale-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-scale-1">37.72 scale</a></h2>
|
|
|
|
<p>Scale (resize) the input video, using the libswscale library.
|
|
</p>
|
|
<p>The scale filter forces the output display aspect ratio to be the same
|
|
of the input, by changing the output sample aspect ratio.
|
|
</p>
|
|
<p>If the input image format is different from the format requested by
|
|
the next filter, the scale filter will convert the input to the
|
|
requested format.
|
|
</p>
|
|
<a name="Options-43"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-43">37.72.1 Options</a></h3>
|
|
<p>The filter accepts the following options, or any of the options
|
|
supported by the libswscale scaler.
|
|
</p>
|
|
<p>See <a href="ffmpeg-scaler.html#scaler_005foptions">(ffmpeg-scaler)scaler_options</a> for
|
|
the complete list of scaler options.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>width, w</samp>’</dt>
|
|
<dt> ‘<samp>height, h</samp>’</dt>
|
|
<dd><p>Set the output video dimension expression. Default value is the input
|
|
dimension.
|
|
</p>
|
|
<p>If the value is 0, the input width is used for the output.
|
|
</p>
|
|
<p>If one of the values is -1, the scale filter will use a value that
|
|
maintains the aspect ratio of the input image, calculated from the
|
|
other specified dimension. If both of them are -1, the input size is
|
|
used
|
|
</p>
|
|
<p>If one of the values is -n with n > 1, the scale filter will also use a value
|
|
that maintains the aspect ratio of the input image, calculated from the other
|
|
specified dimension. After that it will, however, make sure that the calculated
|
|
dimension is divisible by n and adjust the value if necessary.
|
|
</p>
|
|
<p>See below for the list of accepted constants for use in the dimension
|
|
expression.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>interl</samp>’</dt>
|
|
<dd><p>Set the interlacing mode. It accepts the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>Force interlaced aware scaling.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dd><p>Do not apply interlaced scaling.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>-1</samp>’</dt>
|
|
<dd><p>Select interlaced aware scaling depending on whether the source frames
|
|
are flagged as interlaced or not.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>0</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags</samp>’</dt>
|
|
<dd><p>Set libswscale scaling flags. See
|
|
<a href="ffmpeg-scaler.html#sws_005fflags">(ffmpeg-scaler)sws_flags</a> for the
|
|
complete list of values. If not explicitly specified the filter applies
|
|
the default flags.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Set the video size. For the syntax of this option, check the "Video size"
|
|
section in the ffmpeg-utils manual.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>in_color_matrix</samp>’</dt>
|
|
<dt> ‘<samp>out_color_matrix</samp>’</dt>
|
|
<dd><p>Set in/output YCbCr color space type.
|
|
</p>
|
|
<p>This allows the autodetected value to be overridden as well as allows forcing
|
|
a specific value used for the output and encoder.
|
|
</p>
|
|
<p>If not specified, the color space type depends on the pixel format.
|
|
</p>
|
|
<p>Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Choose automatically.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bt709</samp>’</dt>
|
|
<dd><p>Format conforming to International Telecommunication Union (ITU)
|
|
Recommendation BT.709.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fcc</samp>’</dt>
|
|
<dd><p>Set color space conforming to the United States Federal Communications
|
|
Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bt601</samp>’</dt>
|
|
<dd><p>Set color space conforming to:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
|
|
|
|
</li><li>
|
|
ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
|
|
|
|
</li><li>
|
|
Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
|
|
|
|
</li></ul>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>smpte240m</samp>’</dt>
|
|
<dd><p>Set color space conforming to SMPTE ST 240:1999.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>in_range</samp>’</dt>
|
|
<dt> ‘<samp>out_range</samp>’</dt>
|
|
<dd><p>Set in/output YCbCr sample range.
|
|
</p>
|
|
<p>This allows the autodetected value to be overridden as well as allows forcing
|
|
a specific value used for the output and encoder. If not specified, the
|
|
range depends on the pixel format. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Choose automatically.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>jpeg/full/pc</samp>’</dt>
|
|
<dd><p>Set full range (0-255 in case of 8-bit luma).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mpeg/tv</samp>’</dt>
|
|
<dd><p>Set "MPEG" range (16-235 in case of 8-bit luma).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>force_original_aspect_ratio</samp>’</dt>
|
|
<dd><p>Enable decreasing or increasing output video width or height if necessary to
|
|
keep the original aspect ratio. Possible values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>disable</samp>’</dt>
|
|
<dd><p>Scale the video as specified and disable this feature.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>decrease</samp>’</dt>
|
|
<dd><p>The output video dimensions will automatically be decreased if needed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>increase</samp>’</dt>
|
|
<dd><p>The output video dimensions will automatically be increased if needed.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>One useful instance of this option is that when you know a specific device’s
|
|
maximum allowed resolution, you can use this to limit the output video to
|
|
that, while retaining the aspect ratio. For example, device A allows
|
|
1280x720 playback, and your video is 1920x800. Using this option (set it to
|
|
decrease) and specifying 1280x720 to the command line makes the output
|
|
1280x533.
|
|
</p>
|
|
<p>Please note that this is a different thing than specifying -1 for ‘<samp>w</samp>’
|
|
or ‘<samp>h</samp>’, you still need to specify the output resolution for this option
|
|
to work.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The values of the ‘<samp>w</samp>’ and ‘<samp>h</samp>’ options are expressions
|
|
containing the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> <var>in_w</var></dt>
|
|
<dt> <var>in_h</var></dt>
|
|
<dd><p>the input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> <var>iw</var></dt>
|
|
<dt> <var>ih</var></dt>
|
|
<dd><p>same as <var>in_w</var> and <var>in_h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> <var>out_w</var></dt>
|
|
<dt> <var>out_h</var></dt>
|
|
<dd><p>the output (scaled) width and height
|
|
</p>
|
|
</dd>
|
|
<dt> <var>ow</var></dt>
|
|
<dt> <var>oh</var></dt>
|
|
<dd><p>same as <var>out_w</var> and <var>out_h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> <var>a</var></dt>
|
|
<dd><p>same as <var>iw</var> / <var>ih</var>
|
|
</p>
|
|
</dd>
|
|
<dt> <var>sar</var></dt>
|
|
<dd><p>input sample aspect ratio
|
|
</p>
|
|
</dd>
|
|
<dt> <var>dar</var></dt>
|
|
<dd><p>input display aspect ratio. Calculated from <code>(iw / ih) * sar</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> <var>hsub</var></dt>
|
|
<dt> <var>vsub</var></dt>
|
|
<dd><p>horizontal and vertical input chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> <var>ohsub</var></dt>
|
|
<dt> <var>ovsub</var></dt>
|
|
<dd><p>horizontal and vertical output chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-23"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-23">37.72.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Scale the input video to a size of 200x100:
|
|
<table><tr><td> </td><td><pre class="example">scale=w=200:h=100
|
|
</pre></td></tr></table>
|
|
|
|
<p>This is equivalent to:
|
|
</p><table><tr><td> </td><td><pre class="example">scale=200:100
|
|
</pre></td></tr></table>
|
|
|
|
<p>or:
|
|
</p><table><tr><td> </td><td><pre class="example">scale=200x100
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Specify a size abbreviation for the output size:
|
|
<table><tr><td> </td><td><pre class="example">scale=qcif
|
|
</pre></td></tr></table>
|
|
|
|
<p>which can also be written as:
|
|
</p><table><tr><td> </td><td><pre class="example">scale=size=qcif
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Scale the input to 2x:
|
|
<table><tr><td> </td><td><pre class="example">scale=w=2*iw:h=2*ih
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
The above is the same as:
|
|
<table><tr><td> </td><td><pre class="example">scale=2*in_w:2*in_h
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Scale the input to 2x with forced interlaced scaling:
|
|
<table><tr><td> </td><td><pre class="example">scale=2*iw:2*ih:interl=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Scale the input to half size:
|
|
<table><tr><td> </td><td><pre class="example">scale=w=iw/2:h=ih/2
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Increase the width, and set the height to the same size:
|
|
<table><tr><td> </td><td><pre class="example">scale=3/2*iw:ow
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Seek for Greek harmony:
|
|
<table><tr><td> </td><td><pre class="example">scale=iw:1/PHI*iw
|
|
scale=ih*PHI:ih
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Increase the height, and set the width to 3/2 of the height:
|
|
<table><tr><td> </td><td><pre class="example">scale=w=3/2*oh:h=3/5*ih
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Increase the size, but make the size a multiple of the chroma
|
|
subsample values:
|
|
<table><tr><td> </td><td><pre class="example">scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Increase the width to a maximum of 500 pixels, keep the same input
|
|
aspect ratio:
|
|
<table><tr><td> </td><td><pre class="example">scale=w='min(500\, iw*3/2):h=-1'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="separatefields"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-separatefields">37.73 separatefields</a></h2>
|
|
|
|
<p>The <code>separatefields</code> takes a frame-based video input and splits
|
|
each frame into its components fields, producing a new half height clip
|
|
with twice the frame rate and twice the frame count.
|
|
</p>
|
|
<p>This filter use field-dominance information in frame to decide which
|
|
of each pair of fields to place first in the output.
|
|
If it gets it wrong use <a href="#setfield">setfield</a> filter before <code>separatefields</code> filter.
|
|
</p>
|
|
<a name="setdar_002c-setsar"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-setdar_002c-setsar">37.74 setdar, setsar</a></h2>
|
|
|
|
<p>The <code>setdar</code> filter sets the Display Aspect Ratio for the filter
|
|
output video.
|
|
</p>
|
|
<p>This is done by changing the specified Sample (aka Pixel) Aspect
|
|
Ratio, according to the following equation:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>DAR</var> = <var>HORIZONTAL_RESOLUTION</var> / <var>VERTICAL_RESOLUTION</var> * <var>SAR</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p>Keep in mind that the <code>setdar</code> filter does not modify the pixel
|
|
dimensions of the video frame. Also the display aspect ratio set by
|
|
this filter may be changed by later filters in the filterchain,
|
|
e.g. in case of scaling or if another "setdar" or a "setsar" filter is
|
|
applied.
|
|
</p>
|
|
<p>The <code>setsar</code> filter sets the Sample (aka Pixel) Aspect Ratio for
|
|
the filter output video.
|
|
</p>
|
|
<p>Note that as a consequence of the application of this filter, the
|
|
output display aspect ratio will change according to the equation
|
|
above.
|
|
</p>
|
|
<p>Keep in mind that the sample aspect ratio set by the <code>setsar</code>
|
|
filter may be changed by later filters in the filterchain, e.g. if
|
|
another "setsar" or a "setdar" filter is applied.
|
|
</p>
|
|
<p>The filters accept the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>r, ratio, dar (<code>setdar</code> only), sar (<code>setsar</code> only)</samp>’</dt>
|
|
<dd><p>Set the aspect ratio used by the filter.
|
|
</p>
|
|
<p>The parameter can be a floating point number string, an expression, or
|
|
a string of the form <var>num</var>:<var>den</var>, where <var>num</var> and
|
|
<var>den</var> are the numerator and denominator of the aspect ratio. If
|
|
the parameter is not specified, it is assumed the value "0".
|
|
In case the form "<var>num</var>:<var>den</var>" is used, the <code>:</code> character
|
|
should be escaped.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>max</samp>’</dt>
|
|
<dd><p>Set the maximum integer value to use for expressing numerator and
|
|
denominator when reducing the expressed aspect ratio to a rational.
|
|
Default value is <code>100</code>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The parameter <var>sar</var> is an expression containing
|
|
the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>E, PI, PHI</samp>’</dt>
|
|
<dd><p>the corresponding mathematical approximated values for e
|
|
(euler number), pi (greek PI), phi (golden ratio)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>w, h</samp>’</dt>
|
|
<dd><p>the input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>same as <var>w</var> / <var>h</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>input sample aspect ratio
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dar</samp>’</dt>
|
|
<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>hsub, vsub</samp>’</dt>
|
|
<dd><p>horizontal and vertical chroma subsample values. For example for the
|
|
pixel format "yuv422p" <var>hsub</var> is 2 and <var>vsub</var> is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-42"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-42">37.74.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
To change the display aspect ratio to 16:9, specify one of the following:
|
|
<table><tr><td> </td><td><pre class="example">setdar=dar=1.77777
|
|
setdar=dar=16/9
|
|
setdar=dar=1.77777
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To change the sample aspect ratio to 10:11, specify:
|
|
<table><tr><td> </td><td><pre class="example">setsar=sar=10/11
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To set a display aspect ratio of 16:9, and specify a maximum integer value of
|
|
1000 in the aspect ratio reduction, use the command:
|
|
<table><tr><td> </td><td><pre class="example">setdar=ratio=16/9:max=1000
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<p><a name="setfield"></a>
|
|
</p><a name="setfield-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-setfield-1">37.75 setfield</a></h2>
|
|
|
|
<p>Force field for the output video frame.
|
|
</p>
|
|
<p>The <code>setfield</code> filter marks the interlace type field for the
|
|
output frames. It does not change the input frame, but only sets the
|
|
corresponding property, which affects how the frame is treated by
|
|
following filters (e.g. <code>fieldorder</code> or <code>yadif</code>).
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>auto</samp>’</dt>
|
|
<dd><p>Keep the same field property.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bff</samp>’</dt>
|
|
<dd><p>Mark the frame as bottom-field-first.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tff</samp>’</dt>
|
|
<dd><p>Mark the frame as top-field-first.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>prog</samp>’</dt>
|
|
<dd><p>Mark the frame as progressive.
|
|
</p></dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="showinfo"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-showinfo">37.76 showinfo</a></h2>
|
|
|
|
<p>Show a line containing various information for each input video frame.
|
|
The input video is not modified.
|
|
</p>
|
|
<p>The shown line contains a sequence of key/value pairs of the form
|
|
<var>key</var>:<var>value</var>.
|
|
</p>
|
|
<p>A description of each shown parameter follows:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>sequential number of the input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
|
|
time base units. The time base unit depends on the filter input pad.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts_time</samp>’</dt>
|
|
<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
|
|
seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>position of the frame in the input stream, -1 if this information in
|
|
unavailable and/or meaningless (for example in case of synthetic video)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>fmt</samp>’</dt>
|
|
<dd><p>pixel format name
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>sample aspect ratio of the input frame, expressed in the form
|
|
<var>num</var>/<var>den</var>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>s</samp>’</dt>
|
|
<dd><p>size of the input frame. For the syntax of this option, check the "Video size"
|
|
section in the ffmpeg-utils manual.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>i</samp>’</dt>
|
|
<dd><p>interlaced mode ("P" for "progressive", "T" for top field first, "B"
|
|
for bottom field first)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>iskey</samp>’</dt>
|
|
<dd><p>1 if the frame is a key frame, 0 otherwise
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>type</samp>’</dt>
|
|
<dd><p>picture type of the input frame ("I" for an I-frame, "P" for a
|
|
P-frame, "B" for a B-frame, "?" for unknown type).
|
|
Check also the documentation of the <code>AVPictureType</code> enum and of
|
|
the <code>av_get_picture_type_char</code> function defined in
|
|
‘<tt>libavutil/avutil.h</tt>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>checksum</samp>’</dt>
|
|
<dd><p>Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>plane_checksum</samp>’</dt>
|
|
<dd><p>Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
|
|
expressed in the form "[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]"
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="shuffleplanes"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-shuffleplanes">37.77 shuffleplanes</a></h2>
|
|
|
|
<p>Reorder and/or duplicate video planes.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>map0</samp>’</dt>
|
|
<dd><p>The index of the input plane to be used as the first output plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>map1</samp>’</dt>
|
|
<dd><p>The index of the input plane to be used as the second output plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>map2</samp>’</dt>
|
|
<dd><p>The index of the input plane to be used as the third output plane.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>map3</samp>’</dt>
|
|
<dd><p>The index of the input plane to be used as the fourth output plane.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The first plane has the index 0. The default is to keep the input unchanged.
|
|
</p>
|
|
<p>E.g.
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
|
|
</pre></td></tr></table>
|
|
<p>swaps the second and third planes of the input.
|
|
</p>
|
|
<p><a name="smartblur"></a>
|
|
</p><a name="smartblur-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-smartblur-1">37.78 smartblur</a></h2>
|
|
|
|
<p>Blur the input video without impacting the outlines.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_radius, lr</samp>’</dt>
|
|
<dd><p>Set the luma radius. The option value must be a float number in
|
|
the range [0.1,5.0] that specifies the variance of the gaussian filter
|
|
used to blur the image (slower if larger). Default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_strength, ls</samp>’</dt>
|
|
<dd><p>Set the luma strength. The option value must be a float number
|
|
in the range [-1.0,1.0] that configures the blurring. A value included
|
|
in [0.0,1.0] will blur the image whereas a value included in
|
|
[-1.0,0.0] will sharpen the image. Default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_threshold, lt</samp>’</dt>
|
|
<dd><p>Set the luma threshold used as a coefficient to determine
|
|
whether a pixel should be blurred or not. The option value must be an
|
|
integer in the range [-30,30]. A value of 0 will filter all the image,
|
|
a value included in [0,30] will filter flat areas and a value included
|
|
in [-30,0] will filter edges. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_radius, cr</samp>’</dt>
|
|
<dd><p>Set the chroma radius. The option value must be a float number in
|
|
the range [0.1,5.0] that specifies the variance of the gaussian filter
|
|
used to blur the image (slower if larger). Default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_strength, cs</samp>’</dt>
|
|
<dd><p>Set the chroma strength. The option value must be a float number
|
|
in the range [-1.0,1.0] that configures the blurring. A value included
|
|
in [0.0,1.0] will blur the image whereas a value included in
|
|
[-1.0,0.0] will sharpen the image. Default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_threshold, ct</samp>’</dt>
|
|
<dd><p>Set the chroma threshold used as a coefficient to determine
|
|
whether a pixel should be blurred or not. The option value must be an
|
|
integer in the range [-30,30]. A value of 0 will filter all the image,
|
|
a value included in [0,30] will filter flat areas and a value included
|
|
in [-30,0] will filter edges. Default value is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If a chroma option is not explicitly set, the corresponding luma value
|
|
is set.
|
|
</p>
|
|
<a name="stereo3d"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-stereo3d">37.79 stereo3d</a></h2>
|
|
|
|
<p>Convert between different stereoscopic image formats.
|
|
</p>
|
|
<p>The filters accept the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>in</samp>’</dt>
|
|
<dd><p>Set stereoscopic image format of input.
|
|
</p>
|
|
<p>Available values for input image formats are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>sbsl</samp>’</dt>
|
|
<dd><p>side by side parallel (left eye left, right eye right)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sbsr</samp>’</dt>
|
|
<dd><p>side by side crosseye (right eye left, left eye right)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sbs2l</samp>’</dt>
|
|
<dd><p>side by side parallel with half width resolution
|
|
(left eye left, right eye right)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sbs2r</samp>’</dt>
|
|
<dd><p>side by side crosseye with half width resolution
|
|
(right eye left, left eye right)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>abl</samp>’</dt>
|
|
<dd><p>above-below (left eye above, right eye below)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>abr</samp>’</dt>
|
|
<dd><p>above-below (right eye above, left eye below)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ab2l</samp>’</dt>
|
|
<dd><p>above-below with half height resolution
|
|
(left eye above, right eye below)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ab2r</samp>’</dt>
|
|
<dd><p>above-below with half height resolution
|
|
(right eye above, left eye below)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>al</samp>’</dt>
|
|
<dd><p>alternating frames (left eye first, right eye second)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ar</samp>’</dt>
|
|
<dd><p>alternating frames (right eye first, left eye second)
|
|
</p>
|
|
<p>Default value is ‘<samp>sbsl</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>out</samp>’</dt>
|
|
<dd><p>Set stereoscopic image format of output.
|
|
</p>
|
|
<p>Available values for output image formats are all the input formats as well as:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>arbg</samp>’</dt>
|
|
<dd><p>anaglyph red/blue gray
|
|
(red filter on left eye, blue filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>argg</samp>’</dt>
|
|
<dd><p>anaglyph red/green gray
|
|
(red filter on left eye, green filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>arcg</samp>’</dt>
|
|
<dd><p>anaglyph red/cyan gray
|
|
(red filter on left eye, cyan filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>arch</samp>’</dt>
|
|
<dd><p>anaglyph red/cyan half colored
|
|
(red filter on left eye, cyan filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>arcc</samp>’</dt>
|
|
<dd><p>anaglyph red/cyan color
|
|
(red filter on left eye, cyan filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>arcd</samp>’</dt>
|
|
<dd><p>anaglyph red/cyan color optimized with the least squares projection of dubois
|
|
(red filter on left eye, cyan filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>agmg</samp>’</dt>
|
|
<dd><p>anaglyph green/magenta gray
|
|
(green filter on left eye, magenta filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>agmh</samp>’</dt>
|
|
<dd><p>anaglyph green/magenta half colored
|
|
(green filter on left eye, magenta filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>agmc</samp>’</dt>
|
|
<dd><p>anaglyph green/magenta colored
|
|
(green filter on left eye, magenta filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>agmd</samp>’</dt>
|
|
<dd><p>anaglyph green/magenta color optimized with the least squares projection of dubois
|
|
(green filter on left eye, magenta filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aybg</samp>’</dt>
|
|
<dd><p>anaglyph yellow/blue gray
|
|
(yellow filter on left eye, blue filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aybh</samp>’</dt>
|
|
<dd><p>anaglyph yellow/blue half colored
|
|
(yellow filter on left eye, blue filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aybc</samp>’</dt>
|
|
<dd><p>anaglyph yellow/blue colored
|
|
(yellow filter on left eye, blue filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aybd</samp>’</dt>
|
|
<dd><p>anaglyph yellow/blue color optimized with the least squares projection of dubois
|
|
(yellow filter on left eye, blue filter on right eye)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>irl</samp>’</dt>
|
|
<dd><p>interleaved rows (left eye has top row, right eye starts on next row)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>irr</samp>’</dt>
|
|
<dd><p>interleaved rows (right eye has top row, left eye starts on next row)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>ml</samp>’</dt>
|
|
<dd><p>mono output (left eye only)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mr</samp>’</dt>
|
|
<dd><p>mono output (right eye only)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>arcd</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-3"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-3">37.79.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Convert input video from side by side parallel to anaglyph yellow/blue dubois:
|
|
<table><tr><td> </td><td><pre class="example">stereo3d=sbsl:aybd
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
|
|
<table><tr><td> </td><td><pre class="example">stereo3d=abl:sbsr
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="spp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-spp">37.80 spp</a></h2>
|
|
|
|
<p>Apply a simple postprocessing filter that compresses and decompresses the image
|
|
at several (or - in the case of ‘<samp>quality</samp>’ level <code>6</code> - all) shifts
|
|
and average the results.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>quality</samp>’</dt>
|
|
<dd><p>Set quality. This option defines the number of levels for averaging. It accepts
|
|
an integer in the range 0-6. If set to <code>0</code>, the filter will have no
|
|
effect. A value of <code>6</code> means the higher quality. For each increment of
|
|
that value the speed drops by a factor of approximately 2. Default value is
|
|
<code>3</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>qp</samp>’</dt>
|
|
<dd><p>Force a constant quantization parameter. If not set, the filter will use the QP
|
|
from the video stream (if available).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set thresholding mode. Available modes are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>hard</samp>’</dt>
|
|
<dd><p>Set hard thresholding (default).
|
|
</p></dd>
|
|
<dt> ‘<samp>soft</samp>’</dt>
|
|
<dd><p>Set soft thresholding (better de-ringing effect, but likely blurrier).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>use_bframe_qp</samp>’</dt>
|
|
<dd><p>Enable the use of the QP from the B-Frames if set to <code>1</code>. Using this
|
|
option may cause flicker since the B-Frames have often larger QP. Default is
|
|
<code>0</code> (not enabled).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="subtitles"></a>
|
|
</p><a name="subtitles-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-subtitles-1">37.81 subtitles</a></h2>
|
|
|
|
<p>Draw subtitles on top of input video using the libass library.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to configure FFmpeg with
|
|
<code>--enable-libass</code>. This filter also requires a build with libavcodec and
|
|
libavformat to convert the passed subtitles file to ASS (Advanced Substation
|
|
Alpha) subtitles format.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filename, f</samp>’</dt>
|
|
<dd><p>Set the filename of the subtitle file to read. It must be specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>original_size</samp>’</dt>
|
|
<dd><p>Specify the size of the original video, the video for which the ASS file
|
|
was composed. For the syntax of this option, check the "Video size" section in
|
|
the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
|
|
this is necessary to correctly scale the fonts if the aspect ratio has been
|
|
changed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>charenc</samp>’</dt>
|
|
<dd><p>Set subtitles input character encoding. <code>subtitles</code> filter only. Only
|
|
useful if not UTF-8.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If the first key is not specified, it is assumed that the first value
|
|
specifies the ‘<samp>filename</samp>’.
|
|
</p>
|
|
<p>For example, to render the file ‘<tt>sub.srt</tt>’ on top of the input
|
|
video, use the command:
|
|
</p><table><tr><td> </td><td><pre class="example">subtitles=sub.srt
|
|
</pre></td></tr></table>
|
|
|
|
<p>which is equivalent to:
|
|
</p><table><tr><td> </td><td><pre class="example">subtitles=filename=sub.srt
|
|
</pre></td></tr></table>
|
|
|
|
<a name="super2xsai"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-super2xsai">37.82 super2xsai</a></h2>
|
|
|
|
<p>Scale the input by 2x and smooth using the Super2xSaI (Scale and
|
|
Interpolate) pixel art scaling algorithm.
|
|
</p>
|
|
<p>Useful for enlarging pixel art images without reducing sharpness.
|
|
</p>
|
|
<a name="swapuv"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-swapuv">37.83 swapuv</a></h2>
|
|
<p>Swap U & V plane.
|
|
</p>
|
|
<a name="telecine"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-telecine">37.84 telecine</a></h2>
|
|
|
|
<p>Apply telecine process to the video.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>first_field</samp>’</dt>
|
|
<dd><dl compact="compact">
|
|
<dt> ‘<samp>top, t</samp>’</dt>
|
|
<dd><p>top field first
|
|
</p></dd>
|
|
<dt> ‘<samp>bottom, b</samp>’</dt>
|
|
<dd><p>bottom field first
|
|
The default value is <code>top</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>pattern</samp>’</dt>
|
|
<dd><p>A string of numbers representing the pulldown pattern you wish to apply.
|
|
The default value is <code>23</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<table><tr><td> </td><td><pre class="example">Some typical patterns:
|
|
|
|
NTSC output (30i):
|
|
27.5p: 32222
|
|
24p: 23 (classic)
|
|
24p: 2332 (preferred)
|
|
20p: 33
|
|
18p: 334
|
|
16p: 3444
|
|
|
|
PAL output (25i):
|
|
27.5p: 12222
|
|
24p: 222222222223 ("Euro pulldown")
|
|
16.67p: 33
|
|
16p: 33333334
|
|
</pre></td></tr></table>
|
|
|
|
<a name="thumbnail"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-thumbnail">37.85 thumbnail</a></h2>
|
|
<p>Select the most representative frame in a given sequence of consecutive frames.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>Set the frames batch size to analyze; in a set of <var>n</var> frames, the filter
|
|
will pick one of them, and then handle the next batch of <var>n</var> frames until
|
|
the end. Default is <code>100</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Since the filter keeps track of the whole frames sequence, a bigger <var>n</var>
|
|
value will result in a higher memory usage, so a high value is not recommended.
|
|
</p>
|
|
<a name="Examples-7"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-7">37.85.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Extract one picture each 50 frames:
|
|
<table><tr><td> </td><td><pre class="example">thumbnail=50
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Complete example of a thumbnail creation with <code>ffmpeg</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="tile"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-tile">37.86 tile</a></h2>
|
|
|
|
<p>Tile several successive frames together.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>layout</samp>’</dt>
|
|
<dd><p>Set the grid size (i.e. the number of lines and columns). For the syntax of
|
|
this option, check the "Video size" section in the ffmpeg-utils manual.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>nb_frames</samp>’</dt>
|
|
<dd><p>Set the maximum number of frames to render in the given area. It must be less
|
|
than or equal to <var>w</var>x<var>h</var>. The default value is <code>0</code>, meaning all
|
|
the area will be used.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>margin</samp>’</dt>
|
|
<dd><p>Set the outer border margin in pixels.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>padding</samp>’</dt>
|
|
<dd><p>Set the inner border thickness (i.e. the number of pixels between frames). For
|
|
more advanced padding options (such as having different values for the edges),
|
|
refer to the pad video filter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color</samp>’</dt>
|
|
<dd><p>Specify the color of the unused areaFor the syntax of this option, check the
|
|
"Color" section in the ffmpeg-utils manual. The default value of <var>color</var>
|
|
is "black".
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-20"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-20">37.86.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Produce 8x8 PNG tiles of all keyframes (‘<samp>-skip_frame nokey</samp>’) in a movie:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
|
|
</pre></td></tr></table>
|
|
<p>The ‘<samp>-vsync 0</samp>’ is necessary to prevent <code>ffmpeg</code> from
|
|
duplicating each output frame to accommodate the originally detected frame
|
|
rate.
|
|
</p>
|
|
</li><li>
|
|
Display <code>5</code> pictures in an area of <code>3x2</code> frames,
|
|
with <code>7</code> pixels between them, and <code>2</code> pixels of initial margin, using
|
|
mixed flat and named options:
|
|
<table><tr><td> </td><td><pre class="example">tile=3x2:nb_frames=5:padding=7:margin=2
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="tinterlace"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-tinterlace">37.87 tinterlace</a></h2>
|
|
|
|
<p>Perform various types of temporal field interlacing.
|
|
</p>
|
|
<p>Frames are counted starting from 1, so the first input frame is
|
|
considered odd.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Specify the mode of the interlacing. This option can also be specified
|
|
as a value alone. See below for a list of values for this option.
|
|
</p>
|
|
<p>Available values are:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>merge, 0</samp>’</dt>
|
|
<dd><p>Move odd frames into the upper field, even into the lower field,
|
|
generating a double height frame at half frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>drop_odd, 1</samp>’</dt>
|
|
<dd><p>Only output even frames, odd frames are dropped, generating a frame with
|
|
unchanged height at half frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>drop_even, 2</samp>’</dt>
|
|
<dd><p>Only output odd frames, even frames are dropped, generating a frame with
|
|
unchanged height at half frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pad, 3</samp>’</dt>
|
|
<dd><p>Expand each frame to full height, but pad alternate lines with black,
|
|
generating a frame with double height at the same input frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>interleave_top, 4</samp>’</dt>
|
|
<dd><p>Interleave the upper field from odd frames with the lower field from
|
|
even frames, generating a frame with unchanged height at half frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>interleave_bottom, 5</samp>’</dt>
|
|
<dd><p>Interleave the lower field from odd frames with the upper field from
|
|
even frames, generating a frame with unchanged height at half frame rate.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>interlacex2, 6</samp>’</dt>
|
|
<dd><p>Double frame rate with unchanged height. Frames are inserted each
|
|
containing the second temporal field from the previous input frame and
|
|
the first temporal field from the next input frame. This mode relies on
|
|
the top_field_first flag. Useful for interlaced video displays with no
|
|
field synchronisation.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Numeric values are deprecated but are accepted for backward
|
|
compatibility reasons.
|
|
</p>
|
|
<p>Default mode is <code>merge</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>flags</samp>’</dt>
|
|
<dd><p>Specify flags influencing the filter process.
|
|
</p>
|
|
<p>Available value for <var>flags</var> is:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>low_pass_filter, vlfp</samp>’</dt>
|
|
<dd><p>Enable vertical low-pass filtering in the filter.
|
|
Vertical low-pass filtering is required when creating an interlaced
|
|
destination from a progressive source which contains high-frequency
|
|
vertical detail. Filtering will reduce interlace ’twitter’ and Moire
|
|
patterning.
|
|
</p>
|
|
<p>Vertical low-pass filtering can only be enabled for ‘<samp>mode</samp>’
|
|
<var>interleave_top</var> and <var>interleave_bottom</var>.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="transpose"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-transpose">37.88 transpose</a></h2>
|
|
|
|
<p>Transpose rows with columns in the input video and optionally flip it.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>dir</samp>’</dt>
|
|
<dd><p>Specify the transposition direction.
|
|
</p>
|
|
<p>Can assume the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0, 4, cclock_flip</samp>’</dt>
|
|
<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
|
|
</p><table><tr><td> </td><td><pre class="example">L.R L.l
|
|
. . -> . .
|
|
l.r R.r
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>1, 5, clock</samp>’</dt>
|
|
<dd><p>Rotate by 90 degrees clockwise, that is:
|
|
</p><table><tr><td> </td><td><pre class="example">L.R l.L
|
|
. . -> . .
|
|
l.r r.R
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>2, 6, cclock</samp>’</dt>
|
|
<dd><p>Rotate by 90 degrees counterclockwise, that is:
|
|
</p><table><tr><td> </td><td><pre class="example">L.R R.r
|
|
. . -> . .
|
|
l.r L.l
|
|
</pre></td></tr></table>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>3, 7, clock_flip</samp>’</dt>
|
|
<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
|
|
</p><table><tr><td> </td><td><pre class="example">L.R r.R
|
|
. . -> . .
|
|
l.r l.L
|
|
</pre></td></tr></table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For values between 4-7, the transposition is only done if the input
|
|
video geometry is portrait and not landscape. These values are
|
|
deprecated, the <code>passthrough</code> option should be used instead.
|
|
</p>
|
|
<p>Numerical values are deprecated, and should be dropped in favor of
|
|
symbolic constants.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>passthrough</samp>’</dt>
|
|
<dd><p>Do not apply the transposition if the input geometry matches the one
|
|
specified by the specified value. It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Always apply transposition.
|
|
</p></dd>
|
|
<dt> ‘<samp>portrait</samp>’</dt>
|
|
<dd><p>Preserve portrait geometry (when <var>height</var> >= <var>width</var>).
|
|
</p></dd>
|
|
<dt> ‘<samp>landscape</samp>’</dt>
|
|
<dd><p>Preserve landscape geometry (when <var>width</var> >= <var>height</var>).
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>none</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example to rotate by 90 degrees clockwise and preserve portrait
|
|
layout:
|
|
</p><table><tr><td> </td><td><pre class="example">transpose=dir=1:passthrough=portrait
|
|
</pre></td></tr></table>
|
|
|
|
<p>The command above can also be specified as:
|
|
</p><table><tr><td> </td><td><pre class="example">transpose=1:portrait
|
|
</pre></td></tr></table>
|
|
|
|
<a name="trim"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-trim">37.89 trim</a></h2>
|
|
<p>Trim the input so that the output contains one continuous subpart of the input.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>start</samp>’</dt>
|
|
<dd><p>Specify time of the start of the kept section, i.e. the frame with the
|
|
timestamp <var>start</var> will be the first frame in the output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end</samp>’</dt>
|
|
<dd><p>Specify time of the first frame that will be dropped, i.e. the frame
|
|
immediately preceding the one with the timestamp <var>end</var> will be the last
|
|
frame in the output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_pts</samp>’</dt>
|
|
<dd><p>Same as <var>start</var>, except this option sets the start timestamp in timebase
|
|
units instead of seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end_pts</samp>’</dt>
|
|
<dd><p>Same as <var>end</var>, except this option sets the end timestamp in timebase units
|
|
instead of seconds.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration</samp>’</dt>
|
|
<dd><p>Specify maximum duration of the output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_frame</samp>’</dt>
|
|
<dd><p>Number of the first frame that should be passed to output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end_frame</samp>’</dt>
|
|
<dd><p>Number of the first frame that should be dropped.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>‘<samp>start</samp>’, ‘<samp>end</samp>’, ‘<samp>duration</samp>’ are expressed as time
|
|
duration specifications, check the "Time duration" section in the
|
|
ffmpeg-utils manual.
|
|
</p>
|
|
<p>Note that the first two sets of the start/end options and the ‘<samp>duration</samp>’
|
|
option look at the frame timestamp, while the _frame variants simply count the
|
|
frames that pass through the filter. Also note that this filter does not modify
|
|
the timestamps. If you wish that the output timestamps start at zero, insert a
|
|
setpts filter after the trim filter.
|
|
</p>
|
|
<p>If multiple start or end options are set, this filter tries to be greedy and
|
|
keep all the frames that match at least one of the specified constraints. To keep
|
|
only the part that matches all the constraints at once, chain multiple trim
|
|
filters.
|
|
</p>
|
|
<p>The defaults are such that all the input is kept. So it is possible to set e.g.
|
|
just the end values to keep everything before the specified time.
|
|
</p>
|
|
<p>Examples:
|
|
</p><ul>
|
|
<li>
|
|
drop everything except the second minute of input
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -vf trim=60:120
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
keep only the first second
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -vf trim=duration=1
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
|
|
<a name="unsharp"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-unsharp">37.90 unsharp</a></h2>
|
|
|
|
<p>Sharpen or blur the input video.
|
|
</p>
|
|
<p>It accepts the following parameters:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>luma_msize_x, lx</samp>’</dt>
|
|
<dd><p>Set the luma matrix horizontal size. It must be an odd integer between
|
|
3 and 63, default value is 5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_msize_y, ly</samp>’</dt>
|
|
<dd><p>Set the luma matrix vertical size. It must be an odd integer between 3
|
|
and 63, default value is 5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>luma_amount, la</samp>’</dt>
|
|
<dd><p>Set the luma effect strength. It can be a float number, reasonable
|
|
values lay between -1.5 and 1.5.
|
|
</p>
|
|
<p>Negative values will blur the input video, while positive values will
|
|
sharpen it, a value of zero will disable the effect.
|
|
</p>
|
|
<p>Default value is 1.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_msize_x, cx</samp>’</dt>
|
|
<dd><p>Set the chroma matrix horizontal size. It must be an odd integer
|
|
between 3 and 63, default value is 5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_msize_y, cy</samp>’</dt>
|
|
<dd><p>Set the chroma matrix vertical size. It must be an odd integer
|
|
between 3 and 63, default value is 5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>chroma_amount, ca</samp>’</dt>
|
|
<dd><p>Set the chroma effect strength. It can be a float number, reasonable
|
|
values lay between -1.5 and 1.5.
|
|
</p>
|
|
<p>Negative values will blur the input video, while positive values will
|
|
sharpen it, a value of zero will disable the effect.
|
|
</p>
|
|
<p>Default value is 0.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>opencl</samp>’</dt>
|
|
<dd><p>If set to 1, specify using OpenCL capabilities, only available if
|
|
FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>All parameters are optional and default to the equivalent of the
|
|
string ’5:5:1.0:5:5:0.0’.
|
|
</p>
|
|
<a name="Examples-79"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-79">37.90.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply strong luma sharpen effect:
|
|
<table><tr><td> </td><td><pre class="example">unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply strong blur of both luma and chroma parameters:
|
|
<table><tr><td> </td><td><pre class="example">unsharp=7:7:-2:7:7:-2
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="vidstabdetect"></a>
|
|
</p><a name="vidstabdetect-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-vidstabdetect-1">37.91 vidstabdetect</a></h2>
|
|
|
|
<p>Analyze video stabilization/deshaking. Perform pass 1 of 2, see
|
|
<a href="#vidstabtransform">vidstabtransform</a> for pass 2.
|
|
</p>
|
|
<p>This filter generates a file with relative translation and rotation
|
|
transform information about subsequent frames, which is then used by
|
|
the <a href="#vidstabtransform">vidstabtransform</a> filter.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to configure FFmpeg with
|
|
<code>--enable-libvidstab</code>.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>result</samp>’</dt>
|
|
<dd><p>Set the path to the file used to write the transforms information.
|
|
Default value is ‘<tt>transforms.trf</tt>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>shakiness</samp>’</dt>
|
|
<dd><p>Set how shaky the video is and how quick the camera is. It accepts an
|
|
integer in the range 1-10, a value of 1 means little shakiness, a
|
|
value of 10 means strong shakiness. Default value is 5.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>accuracy</samp>’</dt>
|
|
<dd><p>Set the accuracy of the detection process. It must be a value in the
|
|
range 1-15. A value of 1 means low accuracy, a value of 15 means high
|
|
accuracy. Default value is 15.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stepsize</samp>’</dt>
|
|
<dd><p>Set stepsize of the search process. The region around minimum is
|
|
scanned with 1 pixel resolution. Default value is 6.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mincontrast</samp>’</dt>
|
|
<dd><p>Set minimum contrast. Below this value a local measurement field is
|
|
discarded. Must be a floating point value in the range 0-1. Default
|
|
value is 0.3.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tripod</samp>’</dt>
|
|
<dd><p>Set reference frame number for tripod mode.
|
|
</p>
|
|
<p>If enabled, the motion of the frames is compared to a reference frame
|
|
in the filtered stream, identified by the specified number. The idea
|
|
is to compensate all movements in a more-or-less static scene and keep
|
|
the camera view absolutely still.
|
|
</p>
|
|
<p>If set to 0, it is disabled. The frames are counted starting from 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>show</samp>’</dt>
|
|
<dd><p>Show fields and transforms in the resulting frames. It accepts an
|
|
integer in the range 0-2. Default value is 0, which disables any
|
|
visualization.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-81"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-81">37.91.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Use default values:
|
|
<table><tr><td> </td><td><pre class="example">vidstabdetect
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Analyze strongly shaky movie and put the results in file
|
|
‘<tt>mytransforms.trf</tt>’:
|
|
<table><tr><td> </td><td><pre class="example">vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Visualize the result of internal transformations in the resulting
|
|
video:
|
|
<table><tr><td> </td><td><pre class="example">vidstabdetect=show=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Analyze a video with medium shakiness using <code>ffmpeg</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="vidstabtransform"></a>
|
|
</p><a name="vidstabtransform-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-vidstabtransform-1">37.92 vidstabtransform</a></h2>
|
|
|
|
<p>Video stabilization/deshaking: pass 2 of 2,
|
|
see <a href="#vidstabdetect">vidstabdetect</a> for pass 1.
|
|
</p>
|
|
<p>Read a file with transform information for each frame and
|
|
apply/compensate them. Together with the <a href="#vidstabdetect">vidstabdetect</a>
|
|
filter this can be used to deshake videos. See also
|
|
<a href="http://public.hronopik.de/vid.stab">http://public.hronopik.de/vid.stab</a>. It is important to also use
|
|
the unsharp filter, see below.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to configure FFmpeg with
|
|
<code>--enable-libvidstab</code>.
|
|
</p>
|
|
<a name="Options-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-1">37.92.1 Options</a></h3>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>input</samp>’</dt>
|
|
<dd><p>Set path to the file used to read the transforms. Default value is
|
|
‘<tt>transforms.trf</tt>’).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>smoothing</samp>’</dt>
|
|
<dd><p>Set the number of frames (value*2 + 1) used for lowpass filtering the
|
|
camera movements. Default value is 10.
|
|
</p>
|
|
<p>For example a number of 10 means that 21 frames are used (10 in the
|
|
past and 10 in the future) to smoothen the motion in the video. A
|
|
larger values leads to a smoother video, but limits the acceleration
|
|
of the camera (pan/tilt movements). 0 is a special case where a
|
|
static camera is simulated.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>optalgo</samp>’</dt>
|
|
<dd><p>Set the camera path optimization algorithm.
|
|
</p>
|
|
<p>Accepted values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>gauss</samp>’</dt>
|
|
<dd><p>gaussian kernel low-pass filter on camera motion (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>avg</samp>’</dt>
|
|
<dd><p>averaging on transformations
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>maxshift</samp>’</dt>
|
|
<dd><p>Set maximal number of pixels to translate frames. Default value is -1,
|
|
meaning no limit.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>maxangle</samp>’</dt>
|
|
<dd><p>Set maximal angle in radians (degree*PI/180) to rotate frames. Default
|
|
value is -1, meaning no limit.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>crop</samp>’</dt>
|
|
<dd><p>Specify how to deal with borders that may be visible due to movement
|
|
compensation.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>keep</samp>’</dt>
|
|
<dd><p>keep image information from previous frame (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>black</samp>’</dt>
|
|
<dd><p>fill the border black
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>invert</samp>’</dt>
|
|
<dd><p>Invert transforms if set to 1. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>relative</samp>’</dt>
|
|
<dd><p>Consider transforms as relative to previsou frame if set to 1,
|
|
absolute if set to 0. Default value is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>zoom</samp>’</dt>
|
|
<dd><p>Set percentage to zoom. A positive value will result in a zoom-in
|
|
effect, a negative value in a zoom-out effect. Default value is 0 (no
|
|
zoom).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>optzoom</samp>’</dt>
|
|
<dd><p>Set optimal zooming to avoid borders.
|
|
</p>
|
|
<p>Accepted values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>0</samp>’</dt>
|
|
<dd><p>disabled
|
|
</p></dd>
|
|
<dt> ‘<samp>1</samp>’</dt>
|
|
<dd><p>optimal static zoom value is determined (only very strong movements
|
|
will lead to visible borders) (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>2</samp>’</dt>
|
|
<dd><p>optimal adaptive zoom value is determined (no borders will be
|
|
visible), see ‘<samp>zoomspeed</samp>’
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note that the value given at zoom is added to the one calculated here.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>zoomspeed</samp>’</dt>
|
|
<dd><p>Set percent to zoom maximally each frame (enabled when
|
|
‘<samp>optzoom</samp>’ is set to 2). Range is from 0 to 5, default value is
|
|
0.25.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>interpol</samp>’</dt>
|
|
<dd><p>Specify type of interpolation.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>no</samp>’</dt>
|
|
<dd><p>no interpolation
|
|
</p></dd>
|
|
<dt> ‘<samp>linear</samp>’</dt>
|
|
<dd><p>linear only horizontal
|
|
</p></dd>
|
|
<dt> ‘<samp>bilinear</samp>’</dt>
|
|
<dd><p>linear in both directions (default)
|
|
</p></dd>
|
|
<dt> ‘<samp>bicubic</samp>’</dt>
|
|
<dd><p>cubic in both directions (slow)
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>tripod</samp>’</dt>
|
|
<dd><p>Enable virtual tripod mode if set to 1, which is equivalent to
|
|
<code>relative=0:smoothing=0</code>. Default value is 0.
|
|
</p>
|
|
<p>Use also <code>tripod</code> option of <a href="#vidstabdetect">vidstabdetect</a>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>debug</samp>’</dt>
|
|
<dd><p>Increase log verbosity if set to 1. Also the detected global motions
|
|
are written to the temporary file ‘<tt>global_motions.trf</tt>’. Default
|
|
value is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-72"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-72">37.92.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Use <code>ffmpeg</code> for a typical stabilization with default values:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
|
|
</pre></td></tr></table>
|
|
|
|
<p>Note the use of the unsharp filter which is always recommended.
|
|
</p>
|
|
</li><li>
|
|
Zoom in a bit more and load transform data from a given file:
|
|
<table><tr><td> </td><td><pre class="example">vidstabtransform=zoom=5:input="mytransforms.trf"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Smoothen the video even more:
|
|
<table><tr><td> </td><td><pre class="example">vidstabtransform=smoothing=30
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="vflip"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-vflip">37.93 vflip</a></h2>
|
|
|
|
<p>Flip the input video vertically.
|
|
</p>
|
|
<p>For example, to vertically flip a video with <code>ffmpeg</code>:
|
|
</p><table><tr><td> </td><td><pre class="example">ffmpeg -i in.avi -vf "vflip" out.avi
|
|
</pre></td></tr></table>
|
|
|
|
<a name="vignette"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-vignette">37.94 vignette</a></h2>
|
|
|
|
<p>Make or reverse a natural vignetting effect.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>angle, a</samp>’</dt>
|
|
<dd><p>Set lens angle expression as a number of radians.
|
|
</p>
|
|
<p>The value is clipped in the <code>[0,PI/2]</code> range.
|
|
</p>
|
|
<p>Default value: <code>"PI/5"</code>
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>x0</samp>’</dt>
|
|
<dt> ‘<samp>y0</samp>’</dt>
|
|
<dd><p>Set center coordinates expressions. Respectively <code>"w/2"</code> and <code>"h/2"</code>
|
|
by default.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set forward/backward mode.
|
|
</p>
|
|
<p>Available modes are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>forward</samp>’</dt>
|
|
<dd><p>The larger the distance from the central point, the darker the image becomes.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>backward</samp>’</dt>
|
|
<dd><p>The larger the distance from the central point, the brighter the image becomes.
|
|
This can be used to reverse a vignette effect, though there is no automatic
|
|
detection to extract the lens ‘<samp>angle</samp>’ and other settings (yet). It can
|
|
also be used to create a burning effect.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>forward</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>eval</samp>’</dt>
|
|
<dd><p>Set evaluation mode for the expressions (‘<samp>angle</samp>’, ‘<samp>x0</samp>’, ‘<samp>y0</samp>’).
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>init</samp>’</dt>
|
|
<dd><p>Evaluate expressions only once during the filter initialization.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame</samp>’</dt>
|
|
<dd><p>Evaluate expressions for each incoming frame. This is way slower than the
|
|
‘<samp>init</samp>’ mode since it requires all the scalers to be re-computed, but it
|
|
allows advanced dynamic expressions.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>init</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>dither</samp>’</dt>
|
|
<dd><p>Set dithering to reduce the circular banding effects. Default is <code>1</code>
|
|
(enabled).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>aspect</samp>’</dt>
|
|
<dd><p>Set vignette aspect. This setting allows one to adjust the shape of the vignette.
|
|
Setting this value to the SAR of the input will make a rectangular vignetting
|
|
following the dimensions of the video.
|
|
</p>
|
|
<p>Default is <code>1/1</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Expressions"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Expressions">37.94.1 Expressions</a></h3>
|
|
|
|
<p>The ‘<samp>alpha</samp>’, ‘<samp>x0</samp>’ and ‘<samp>y0</samp>’ expressions can contain the
|
|
following parameters.
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>w</samp>’</dt>
|
|
<dt> ‘<samp>h</samp>’</dt>
|
|
<dd><p>input width and height
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>the number of input frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dd><p>the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
|
|
<var>TB</var> units, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>r</samp>’</dt>
|
|
<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
|
|
expressed in seconds, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>tb</samp>’</dt>
|
|
<dd><p>time base of the input video
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<a name="Examples-93"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-93">37.94.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Apply simple strong vignetting effect:
|
|
<table><tr><td> </td><td><pre class="example">vignette=PI/4
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Make a flickering vignetting:
|
|
<table><tr><td> </td><td><pre class="example">vignette='PI/4+random(1)*PI/50':eval=frame
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="w3fdif"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-w3fdif">37.95 w3fdif</a></h2>
|
|
|
|
<p>Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
|
|
Deinterlacing Filter").
|
|
</p>
|
|
<p>Based on the process described by Martin Weston for BBC R&D, and
|
|
implemented based on the de-interlace algorithm written by Jim
|
|
Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
|
|
uses filter coefficients calculated by BBC R&D.
|
|
</p>
|
|
<p>There are two sets of filter coefficients, so called "simple":
|
|
and "complex". Which set of filter coefficients is used can
|
|
be set by passing an optional parameter:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filter</samp>’</dt>
|
|
<dd><p>Set the interlacing filter coefficients. Accepts one of the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>simple</samp>’</dt>
|
|
<dd><p>Simple filter coefficient set.
|
|
</p></dd>
|
|
<dt> ‘<samp>complex</samp>’</dt>
|
|
<dd><p>More-complex filter coefficient set.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is ‘<samp>complex</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>deint</samp>’</dt>
|
|
<dd><p>Specify which frames to deinterlace. Accept one of the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>all</samp>’</dt>
|
|
<dd><p>Deinterlace all frames,
|
|
</p></dd>
|
|
<dt> ‘<samp>interlaced</samp>’</dt>
|
|
<dd><p>Only deinterlace frames marked as interlaced.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>all</samp>’.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p><a name="yadif"></a>
|
|
</p><a name="yadif-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-yadif-1">37.96 yadif</a></h2>
|
|
|
|
<p>Deinterlace the input video ("yadif" means "yet another deinterlacing
|
|
filter").
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>The interlacing mode to adopt, accepts one of the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>0, send_frame</samp>’</dt>
|
|
<dd><p>output 1 frame for each frame
|
|
</p></dd>
|
|
<dt> ‘<samp>1, send_field</samp>’</dt>
|
|
<dd><p>output 1 frame for each field
|
|
</p></dd>
|
|
<dt> ‘<samp>2, send_frame_nospatial</samp>’</dt>
|
|
<dd><p>like <code>send_frame</code> but skip spatial interlacing check
|
|
</p></dd>
|
|
<dt> ‘<samp>3, send_field_nospatial</samp>’</dt>
|
|
<dd><p>like <code>send_field</code> but skip spatial interlacing check
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>send_frame</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>parity</samp>’</dt>
|
|
<dd><p>The picture field parity assumed for the input interlaced video, accepts one of
|
|
the following values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>0, tff</samp>’</dt>
|
|
<dd><p>assume top field first
|
|
</p></dd>
|
|
<dt> ‘<samp>1, bff</samp>’</dt>
|
|
<dd><p>assume bottom field first
|
|
</p></dd>
|
|
<dt> ‘<samp>-1, auto</samp>’</dt>
|
|
<dd><p>enable automatic detection
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>auto</code>.
|
|
If interlacing is unknown or decoder does not export this information,
|
|
top field first will be assumed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>deint</samp>’</dt>
|
|
<dd><p>Specify which frames to deinterlace. Accept one of the following
|
|
values:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>0, all</samp>’</dt>
|
|
<dd><p>deinterlace all frames
|
|
</p></dd>
|
|
<dt> ‘<samp>1, interlaced</samp>’</dt>
|
|
<dd><p>only deinterlace frames marked as interlaced
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>all</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<a name="Video-Sources"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Sources">38. Video Sources</a></h1>
|
|
|
|
<p>Below is a description of the currently available video sources.
|
|
</p>
|
|
<a name="buffer"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-buffer">38.1 buffer</a></h2>
|
|
|
|
<p>Buffer video frames, and make them available to the filter chain.
|
|
</p>
|
|
<p>This source is mainly intended for a programmatic use, in particular
|
|
through the interface defined in ‘<tt>libavfilter/vsrc_buffer.h</tt>’.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>video_size</samp>’</dt>
|
|
<dd><p>Specify the size (width and height) of the buffered video frames. For the
|
|
syntax of this option, check the "Video size" section in the ffmpeg-utils
|
|
manual.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>width</samp>’</dt>
|
|
<dd><p>Input video width.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>height</samp>’</dt>
|
|
<dd><p>Input video height.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pix_fmt</samp>’</dt>
|
|
<dd><p>A string representing the pixel format of the buffered video frames.
|
|
It may be a number corresponding to a pixel format, or a pixel format
|
|
name.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>time_base</samp>’</dt>
|
|
<dd><p>Specify the timebase assumed by the timestamps of the buffered frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>frame_rate</samp>’</dt>
|
|
<dd><p>Specify the frame rate expected for the video stream.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pixel_aspect, sar</samp>’</dt>
|
|
<dd><p>Specify the sample aspect ratio assumed by the video frames.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sws_param</samp>’</dt>
|
|
<dd><p>Specify the optional parameters to be used for the scale filter which
|
|
is automatically inserted when an input change is detected in the
|
|
input size or format.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example:
|
|
</p><table><tr><td> </td><td><pre class="example">buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
|
|
</pre></td></tr></table>
|
|
|
|
<p>will instruct the source to accept video frames with size 320x240 and
|
|
with format "yuv410p", assuming 1/24 as the timestamps timebase and
|
|
square pixels (1:1 sample aspect ratio).
|
|
Since the pixel format with name "yuv410p" corresponds to the number 6
|
|
(check the enum AVPixelFormat definition in ‘<tt>libavutil/pixfmt.h</tt>’),
|
|
this example corresponds to:
|
|
</p><table><tr><td> </td><td><pre class="example">buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
|
|
</pre></td></tr></table>
|
|
|
|
<p>Alternatively, the options can be specified as a flat string, but this
|
|
syntax is deprecated:
|
|
</p>
|
|
<p><var>width</var>:<var>height</var>:<var>pix_fmt</var>:<var>time_base.num</var>:<var>time_base.den</var>:<var>pixel_aspect.num</var>:<var>pixel_aspect.den</var>[:<var>sws_param</var>]
|
|
</p>
|
|
<a name="cellauto"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-cellauto">38.2 cellauto</a></h2>
|
|
|
|
<p>Create a pattern generated by an elementary cellular automaton.
|
|
</p>
|
|
<p>The initial state of the cellular automaton can be defined through the
|
|
‘<samp>filename</samp>’, and ‘<samp>pattern</samp>’ options. If such options are
|
|
not specified an initial state is created randomly.
|
|
</p>
|
|
<p>At each new frame a new row in the video is filled with the result of
|
|
the cellular automaton next generation. The behavior when the whole
|
|
frame is filled is defined by the ‘<samp>scroll</samp>’ option.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filename, f</samp>’</dt>
|
|
<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
|
|
the specified file.
|
|
In the file, each non-whitespace character is considered an alive
|
|
cell, a newline will terminate the row, and further characters in the
|
|
file will be ignored.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pattern, p</samp>’</dt>
|
|
<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
|
|
the specified string.
|
|
</p>
|
|
<p>Each non-whitespace character in the string is considered an alive
|
|
cell, a newline will terminate the row, and further characters in the
|
|
string will be ignored.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Set the video rate, that is the number of frames generated per second.
|
|
Default is 25.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>random_fill_ratio, ratio</samp>’</dt>
|
|
<dd><p>Set the random fill ratio for the initial cellular automaton row. It
|
|
is a floating point number value ranging from 0 to 1, defaults to
|
|
1/PHI.
|
|
</p>
|
|
<p>This option is ignored when a file or a pattern is specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>random_seed, seed</samp>’</dt>
|
|
<dd><p>Set the seed for filling randomly the initial row, must be an integer
|
|
included between 0 and UINT32_MAX. If not specified, or if explicitly
|
|
set to -1, the filter will try to use a good random seed on a best
|
|
effort basis.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rule</samp>’</dt>
|
|
<dd><p>Set the cellular automaton rule, it is a number ranging from 0 to 255.
|
|
Default value is 110.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Set the size of the output video. For the syntax of this option, check
|
|
the "Video size" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>If ‘<samp>filename</samp>’ or ‘<samp>pattern</samp>’ is specified, the size is set
|
|
by default to the width of the specified initial state row, and the
|
|
height is set to <var>width</var> * PHI.
|
|
</p>
|
|
<p>If ‘<samp>size</samp>’ is set, it must contain the width of the specified
|
|
pattern string, and the specified pattern will be centered in the
|
|
larger row.
|
|
</p>
|
|
<p>If a filename or a pattern string is not specified, the size value
|
|
defaults to "320x518" (used for a randomly generated initial state).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scroll</samp>’</dt>
|
|
<dd><p>If set to 1, scroll the output upward when all the rows in the output
|
|
have been already filled. If set to 0, the new generated row will be
|
|
written over the top row just after the bottom row is filled.
|
|
Defaults to 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_full, full</samp>’</dt>
|
|
<dd><p>If set to 1, completely fill the output with generated rows before
|
|
outputting the first frame.
|
|
This is the default behavior, for disabling set the value to 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stitch</samp>’</dt>
|
|
<dd><p>If set to 1, stitch the left and right row edges together.
|
|
This is the default behavior, for disabling set the value to 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-8"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-8">38.2.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Read the initial state from ‘<tt>pattern</tt>’, and specify an output of
|
|
size 200x400.
|
|
<table><tr><td> </td><td><pre class="example">cellauto=f=pattern:s=200x400
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a random initial row with a width of 200 cells, with a fill
|
|
ratio of 2/3:
|
|
<table><tr><td> </td><td><pre class="example">cellauto=ratio=2/3:s=200x200
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Create a pattern generated by rule 18 starting by a single alive cell
|
|
centered on an initial row with width 100:
|
|
<table><tr><td> </td><td><pre class="example">cellauto=p=@:s=100x400:full=0:rule=18
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Specify a more elaborated initial pattern:
|
|
<table><tr><td> </td><td><pre class="example">cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="mandelbrot"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mandelbrot">38.3 mandelbrot</a></h2>
|
|
|
|
<p>Generate a Mandelbrot set fractal, and progressively zoom towards the
|
|
point specified with <var>start_x</var> and <var>start_y</var>.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>end_pts</samp>’</dt>
|
|
<dd><p>Set the terminal pts value. Default value is 400.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>end_scale</samp>’</dt>
|
|
<dd><p>Set the terminal scale value.
|
|
Must be a floating point value. Default value is 0.3.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>inner</samp>’</dt>
|
|
<dd><p>Set the inner coloring mode, that is the algorithm used to draw the
|
|
Mandelbrot fractal internal region.
|
|
</p>
|
|
<p>It shall assume one of the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>black</samp>’</dt>
|
|
<dd><p>Set black mode.
|
|
</p></dd>
|
|
<dt> ‘<samp>convergence</samp>’</dt>
|
|
<dd><p>Show time until convergence.
|
|
</p></dd>
|
|
<dt> ‘<samp>mincol</samp>’</dt>
|
|
<dd><p>Set color based on point closest to the origin of the iterations.
|
|
</p></dd>
|
|
<dt> ‘<samp>period</samp>’</dt>
|
|
<dd><p>Set period mode.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <var>mincol</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>bailout</samp>’</dt>
|
|
<dd><p>Set the bailout value. Default value is 10.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>maxiter</samp>’</dt>
|
|
<dd><p>Set the maximum of iterations performed by the rendering
|
|
algorithm. Default value is 7189.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>outer</samp>’</dt>
|
|
<dd><p>Set outer coloring mode.
|
|
It shall assume one of following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>iteration_count</samp>’</dt>
|
|
<dd><p>Set iteration cound mode.
|
|
</p></dd>
|
|
<dt> ‘<samp>normalized_iteration_count</samp>’</dt>
|
|
<dd><p>set normalized iteration count mode.
|
|
</p></dd>
|
|
</dl>
|
|
<p>Default value is <var>normalized_iteration_count</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Set frame rate, expressed as number of frames per second. Default
|
|
value is "25".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Set frame size. For the syntax of this option, check the "Video
|
|
size" section in the ffmpeg-utils manual. Default value is "640x480".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_scale</samp>’</dt>
|
|
<dd><p>Set the initial scale value. Default value is 3.0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_x</samp>’</dt>
|
|
<dd><p>Set the initial x position. Must be a floating point value between
|
|
-100 and 100. Default value is -0.743643887037158704752191506114774.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_y</samp>’</dt>
|
|
<dd><p>Set the initial y position. Must be a floating point value between
|
|
-100 and 100. Default value is -0.131825904205311970493132056385139.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="mptestsrc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-mptestsrc">38.4 mptestsrc</a></h2>
|
|
|
|
<p>Generate various test patterns, as generated by the MPlayer test filter.
|
|
</p>
|
|
<p>The size of the generated video is fixed, and is 256x256.
|
|
This source is useful in particular for testing encoding features.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Specify the frame rate of the sourced video, as the number of frames
|
|
generated per second. It has to be a string in the format
|
|
<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
|
|
number or a valid video frame rate abbreviation. The default value is
|
|
"25".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Set the video duration of the sourced video. The accepted syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">[-]HH:MM:SS[.m...]
|
|
[-]S+[.m...]
|
|
</pre></td></tr></table>
|
|
<p>See also the function <code>av_parse_time()</code>.
|
|
</p>
|
|
<p>If not specified, or the expressed duration is negative, the video is
|
|
supposed to be generated forever.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>test, t</samp>’</dt>
|
|
<dd>
|
|
<p>Set the number or the name of the test to perform. Supported tests are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>dc_luma</samp>’</dt>
|
|
<dt> ‘<samp>dc_chroma</samp>’</dt>
|
|
<dt> ‘<samp>freq_luma</samp>’</dt>
|
|
<dt> ‘<samp>freq_chroma</samp>’</dt>
|
|
<dt> ‘<samp>amp_luma</samp>’</dt>
|
|
<dt> ‘<samp>amp_chroma</samp>’</dt>
|
|
<dt> ‘<samp>cbp</samp>’</dt>
|
|
<dt> ‘<samp>mv</samp>’</dt>
|
|
<dt> ‘<samp>ring1</samp>’</dt>
|
|
<dt> ‘<samp>ring2</samp>’</dt>
|
|
<dt> ‘<samp>all</samp>’</dt>
|
|
</dl>
|
|
|
|
<p>Default value is "all", which will cycle through the list of all tests.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example the following:
|
|
</p><table><tr><td> </td><td><pre class="example">testsrc=t=dc_luma
|
|
</pre></td></tr></table>
|
|
|
|
<p>will generate a "dc_luma" test pattern.
|
|
</p>
|
|
<a name="frei0r_005fsrc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-frei0r_005fsrc">38.5 frei0r_src</a></h2>
|
|
|
|
<p>Provide a frei0r source.
|
|
</p>
|
|
<p>To enable compilation of this filter you need to install the frei0r
|
|
header and configure FFmpeg with <code>--enable-frei0r</code>.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>size</samp>’</dt>
|
|
<dd><p>The size of the video to generate. For the syntax of this option, check the
|
|
"Video size" section in the ffmpeg-utils manual.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>framerate</samp>’</dt>
|
|
<dd><p>Framerate of the generated video, may be a string of the form
|
|
<var>num</var>/<var>den</var> or a frame rate abbreviation.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filter_name</samp>’</dt>
|
|
<dd><p>The name to the frei0r source to load. For more information regarding frei0r and
|
|
how to set the parameters read the section <a href="#frei0r">frei0r</a> in the description of
|
|
the video filters.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>filter_params</samp>’</dt>
|
|
<dd><p>A ’|’-separated list of parameters to pass to the frei0r source.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>For example, to generate a frei0r partik0l source with size 200x200
|
|
and frame rate 10 which is overlayed on the overlay filter main input:
|
|
</p><table><tr><td> </td><td><pre class="example">frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
|
|
</pre></td></tr></table>
|
|
|
|
<a name="life"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-life">38.6 life</a></h2>
|
|
|
|
<p>Generate a life pattern.
|
|
</p>
|
|
<p>This source is based on a generalization of John Conway’s life game.
|
|
</p>
|
|
<p>The sourced input represents a life grid, each pixel represents a cell
|
|
which can be in one of two possible states, alive or dead. Every cell
|
|
interacts with its eight neighbours, which are the cells that are
|
|
horizontally, vertically, or diagonally adjacent.
|
|
</p>
|
|
<p>At each interaction the grid evolves according to the adopted rule,
|
|
which specifies the number of neighbor alive cells which will make a
|
|
cell stay alive or born. The ‘<samp>rule</samp>’ option allows one to specify
|
|
the rule to adopt.
|
|
</p>
|
|
<p>This source accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filename, f</samp>’</dt>
|
|
<dd><p>Set the file from which to read the initial grid state. In the file,
|
|
each non-whitespace character is considered an alive cell, and newline
|
|
is used to delimit the end of each row.
|
|
</p>
|
|
<p>If this option is not specified, the initial grid is generated
|
|
randomly.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Set the video rate, that is the number of frames generated per second.
|
|
Default is 25.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>random_fill_ratio, ratio</samp>’</dt>
|
|
<dd><p>Set the random fill ratio for the initial random grid. It is a
|
|
floating point number value ranging from 0 to 1, defaults to 1/PHI.
|
|
It is ignored when a file is specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>random_seed, seed</samp>’</dt>
|
|
<dd><p>Set the seed for filling the initial random grid, must be an integer
|
|
included between 0 and UINT32_MAX. If not specified, or if explicitly
|
|
set to -1, the filter will try to use a good random seed on a best
|
|
effort basis.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rule</samp>’</dt>
|
|
<dd><p>Set the life rule.
|
|
</p>
|
|
<p>A rule can be specified with a code of the kind "S<var>NS</var>/B<var>NB</var>",
|
|
where <var>NS</var> and <var>NB</var> are sequences of numbers in the range 0-8,
|
|
<var>NS</var> specifies the number of alive neighbor cells which make a
|
|
live cell stay alive, and <var>NB</var> the number of alive neighbor cells
|
|
which make a dead cell to become alive (i.e. to "born").
|
|
"s" and "b" can be used in place of "S" and "B", respectively.
|
|
</p>
|
|
<p>Alternatively a rule can be specified by an 18-bits integer. The 9
|
|
high order bits are used to encode the next cell state if it is alive
|
|
for each number of neighbor alive cells, the low order bits specify
|
|
the rule for "borning" new cells. Higher order bits encode for an
|
|
higher number of neighbor cells.
|
|
For example the number 6153 = <code>(12<<9)+9</code> specifies a stay alive
|
|
rule of 12 and a born rule of 9, which corresponds to "S23/B03".
|
|
</p>
|
|
<p>Default value is "S23/B3", which is the original Conway’s game of life
|
|
rule, and will keep a cell alive if it has 2 or 3 neighbor alive
|
|
cells, and will born a new cell if there are three alive cells around
|
|
a dead cell.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Set the size of the output video. For the syntax of this option, check the
|
|
"Video size" section in the ffmpeg-utils manual.
|
|
</p>
|
|
<p>If ‘<samp>filename</samp>’ is specified, the size is set by default to the
|
|
same size of the input file. If ‘<samp>size</samp>’ is set, it must contain
|
|
the size specified in the input file, and the initial grid defined in
|
|
that file is centered in the larger resulting area.
|
|
</p>
|
|
<p>If a filename is not specified, the size value defaults to "320x240"
|
|
(used for a randomly generated initial grid).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stitch</samp>’</dt>
|
|
<dd><p>If set to 1, stitch the left and right grid edges together, and the
|
|
top and bottom edges also. Defaults to 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mold</samp>’</dt>
|
|
<dd><p>Set cell mold speed. If set, a dead cell will go from ‘<samp>death_color</samp>’ to
|
|
‘<samp>mold_color</samp>’ with a step of ‘<samp>mold</samp>’. ‘<samp>mold</samp>’ can have a
|
|
value from 0 to 255.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>life_color</samp>’</dt>
|
|
<dd><p>Set the color of living (or new born) cells.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>death_color</samp>’</dt>
|
|
<dd><p>Set the color of dead cells. If ‘<samp>mold</samp>’ is set, this is the first color
|
|
used to represent a dead cell.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mold_color</samp>’</dt>
|
|
<dd><p>Set mold color, for definitely dead and moldy cells.
|
|
</p>
|
|
<p>For the syntax of these 3 color options, check the "Color" section in the
|
|
ffmpeg-utils manual.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-95"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-95">38.6.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Read a grid from ‘<tt>pattern</tt>’, and center it on a grid of size
|
|
300x300 pixels:
|
|
<table><tr><td> </td><td><pre class="example">life=f=pattern:s=300x300
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate a random grid of size 200x200, with a fill ratio of 2/3:
|
|
<table><tr><td> </td><td><pre class="example">life=ratio=2/3:s=200x200
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Specify a custom rule for evolving a randomly generated grid:
|
|
<table><tr><td> </td><td><pre class="example">life=rule=S14/B34
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Full example with slow death effect (mold) using <code>ffplay</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="color"></a>
|
|
<a name="haldclutsrc"></a>
|
|
<a name="nullsrc"></a>
|
|
<a name="rgbtestsrc"></a>
|
|
<a name="smptebars"></a>
|
|
<a name="smptehdbars"></a>
|
|
<a name="testsrc"></a>
|
|
</p><a name="color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">38.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a></h2>
|
|
|
|
<p>The <code>color</code> source provides an uniformly colored input.
|
|
</p>
|
|
<p>The <code>haldclutsrc</code> source provides an identity Hald CLUT. See also
|
|
<a href="#haldclut">haldclut</a> filter.
|
|
</p>
|
|
<p>The <code>nullsrc</code> source returns unprocessed video frames. It is
|
|
mainly useful to be employed in analysis / debugging tools, or as the
|
|
source for filters which ignore the input data.
|
|
</p>
|
|
<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
|
|
detecting RGB vs BGR issues. You should see a red, green and blue
|
|
stripe from top to bottom.
|
|
</p>
|
|
<p>The <code>smptebars</code> source generates a color bars pattern, based on
|
|
the SMPTE Engineering Guideline EG 1-1990.
|
|
</p>
|
|
<p>The <code>smptehdbars</code> source generates a color bars pattern, based on
|
|
the SMPTE RP 219-2002.
|
|
</p>
|
|
<p>The <code>testsrc</code> source generates a test video pattern, showing a
|
|
color pattern, a scrolling gradient and a timestamp. This is mainly
|
|
intended for testing purposes.
|
|
</p>
|
|
<p>The sources accept the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>color, c</samp>’</dt>
|
|
<dd><p>Specify the color of the source, only available in the <code>color</code>
|
|
source. For the syntax of this option, check the "Color" section in the
|
|
ffmpeg-utils manual.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>level</samp>’</dt>
|
|
<dd><p>Specify the level of the Hald CLUT, only available in the <code>haldclutsrc</code>
|
|
source. A level of <code>N</code> generates a picture of <code>N*N*N</code> by <code>N*N*N</code>
|
|
pixels to be used as identity matrix for 3D lookup tables. Each component is
|
|
coded on a <code>1/(N*N)</code> scale.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Specify the size of the sourced video. For the syntax of this option, check the
|
|
"Video size" section in the ffmpeg-utils manual. The default value is
|
|
"320x240".
|
|
</p>
|
|
<p>This option is not available with the <code>haldclutsrc</code> filter.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Specify the frame rate of the sourced video, as the number of frames
|
|
generated per second. It has to be a string in the format
|
|
<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
|
|
number or a valid video frame rate abbreviation. The default value is
|
|
"25".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sar</samp>’</dt>
|
|
<dd><p>Set the sample aspect ratio of the sourced video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>duration, d</samp>’</dt>
|
|
<dd><p>Set the video duration of the sourced video. The accepted syntax is:
|
|
</p><table><tr><td> </td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
|
|
[-]S+[.m...]
|
|
</pre></td></tr></table>
|
|
<p>See also the function <code>av_parse_time()</code>.
|
|
</p>
|
|
<p>If not specified, or the expressed duration is negative, the video is
|
|
supposed to be generated forever.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>decimals, n</samp>’</dt>
|
|
<dd><p>Set the number of decimals to show in the timestamp, only available in the
|
|
<code>testsrc</code> source.
|
|
</p>
|
|
<p>The displayed timestamp value will correspond to the original
|
|
timestamp value multiplied by the power of 10 of the specified
|
|
value. Default value is 0.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>For example the following:
|
|
</p><table><tr><td> </td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
|
|
</pre></td></tr></table>
|
|
|
|
<p>will generate a video with a duration of 5.3 seconds, with size
|
|
176x144 and a frame rate of 10 frames per second.
|
|
</p>
|
|
<p>The following graph description will generate a red source
|
|
with an opacity of 0.2, with size "qcif" and a frame rate of 10
|
|
frames per second.
|
|
</p><table><tr><td> </td><td><pre class="example">color=c=red@0.2:s=qcif:r=10
|
|
</pre></td></tr></table>
|
|
|
|
<p>If the input content is to be ignored, <code>nullsrc</code> can be used. The
|
|
following command generates noise in the luminance plane by employing
|
|
the <code>geq</code> filter:
|
|
</p><table><tr><td> </td><td><pre class="example">nullsrc=s=256x256, geq=random(1)*255:128:128
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Commands-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-1">38.7.1 Commands</a></h3>
|
|
|
|
<p>The <code>color</code> source supports the following commands:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>c, color</samp>’</dt>
|
|
<dd><p>Set the color of the created image. Accepts the same syntax of the
|
|
corresponding ‘<samp>color</samp>’ option.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
|
|
<a name="Video-Sinks"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Sinks">39. Video Sinks</a></h1>
|
|
|
|
<p>Below is a description of the currently available video sinks.
|
|
</p>
|
|
<a name="buffersink"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-buffersink">39.1 buffersink</a></h2>
|
|
|
|
<p>Buffer video frames, and make them available to the end of the filter
|
|
graph.
|
|
</p>
|
|
<p>This sink is mainly intended for a programmatic use, in particular
|
|
through the interface defined in ‘<tt>libavfilter/buffersink.h</tt>’
|
|
or the options system.
|
|
</p>
|
|
<p>It accepts a pointer to an AVBufferSinkContext structure, which
|
|
defines the incoming buffers’ formats, to be passed as the opaque
|
|
parameter to <code>avfilter_init_filter</code> for initialization.
|
|
</p>
|
|
<a name="nullsink"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-nullsink">39.2 nullsink</a></h2>
|
|
|
|
<p>Null video sink, do absolutely nothing with the input video. It is
|
|
mainly useful as a template and to be employed in analysis / debugging
|
|
tools.
|
|
</p>
|
|
|
|
<a name="Multimedia-Filters"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Multimedia-Filters">40. Multimedia Filters</a></h1>
|
|
|
|
<p>Below is a description of the currently available multimedia filters.
|
|
</p>
|
|
<a name="avectorscope"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-avectorscope">40.1 avectorscope</a></h2>
|
|
|
|
<p>Convert input audio to a video output, representing the audio vector
|
|
scope.
|
|
</p>
|
|
<p>The filter is used to measure the difference between channels of stereo
|
|
audio stream. A monoaural signal, consisting of identical left and right
|
|
signal, results in straight vertical line. Any stereo separation is visible
|
|
as a deviation from this line, creating a Lissajous figure.
|
|
If the straight (or deviation from it) but horizontal line appears this
|
|
indicates that the left and right channels are out of phase.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode, m</samp>’</dt>
|
|
<dd><p>Set the vectorscope mode.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>lissajous</samp>’</dt>
|
|
<dd><p>Lissajous rotated by 45 degrees.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>lissajous_xy</samp>’</dt>
|
|
<dd><p>Same as above but not rotated.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>lissajous</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Set the video size for the output. For the syntax of this option, check the "Video size"
|
|
section in the ffmpeg-utils manual. Default value is <code>400x400</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Set the output frame rate. Default value is <code>25</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rc</samp>’</dt>
|
|
<dt> ‘<samp>gc</samp>’</dt>
|
|
<dt> ‘<samp>bc</samp>’</dt>
|
|
<dd><p>Specify the red, green and blue contrast. Default values are <code>40</code>, <code>160</code> and <code>80</code>.
|
|
Allowed range is <code>[0, 255]</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rf</samp>’</dt>
|
|
<dt> ‘<samp>gf</samp>’</dt>
|
|
<dt> ‘<samp>bf</samp>’</dt>
|
|
<dd><p>Specify the red, green and blue fade. Default values are <code>15</code>, <code>10</code> and <code>5</code>.
|
|
Allowed range is <code>[0, 255]</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>zoom</samp>’</dt>
|
|
<dd><p>Set the zoom factor. Default value is <code>1</code>. Allowed range is <code>[1, 10]</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-63"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-63">40.1.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Complete example using <code>ffplay</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
|
|
[a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="concat-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-concat-1">40.2 concat</a></h2>
|
|
|
|
<p>Concatenate audio and video streams, joining them together one after the
|
|
other.
|
|
</p>
|
|
<p>The filter works on segments of synchronized video and audio streams. All
|
|
segments must have the same number of streams of each type, and that will
|
|
also be the number of streams at output.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>Set the number of segments. Default is 2.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>v</samp>’</dt>
|
|
<dd><p>Set the number of output video streams, that is also the number of video
|
|
streams in each segment. Default is 1.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>a</samp>’</dt>
|
|
<dd><p>Set the number of output audio streams, that is also the number of video
|
|
streams in each segment. Default is 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>unsafe</samp>’</dt>
|
|
<dd><p>Activate unsafe mode: do not fail if segments have a different format.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The filter has <var>v</var>+<var>a</var> outputs: first <var>v</var> video outputs, then
|
|
<var>a</var> audio outputs.
|
|
</p>
|
|
<p>There are <var>n</var>x(<var>v</var>+<var>a</var>) inputs: first the inputs for the first
|
|
segment, in the same order as the outputs, then the inputs for the second
|
|
segment, etc.
|
|
</p>
|
|
<p>Related streams do not always have exactly the same duration, for various
|
|
reasons including codec frame size or sloppy authoring. For that reason,
|
|
related synchronized streams (e.g. a video and its audio track) should be
|
|
concatenated at once. The concat filter will use the duration of the longest
|
|
stream in each segment (except the last one), and if necessary pad shorter
|
|
audio streams with silence.
|
|
</p>
|
|
<p>For this filter to work correctly, all segments must start at timestamp 0.
|
|
</p>
|
|
<p>All corresponding streams must have the same parameters in all segments; the
|
|
filtering system will automatically select a common pixel format for video
|
|
streams, and a common sample format, sample rate and channel layout for
|
|
audio streams, but other settings, such as resolution, must be converted
|
|
explicitly by the user.
|
|
</p>
|
|
<p>Different frame rates are acceptable but will result in variable frame rate
|
|
at output; be sure to configure the output file to handle it.
|
|
</p>
|
|
<a name="Examples-37"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-37">40.2.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Concatenate an opening, an episode and an ending, all in bilingual version
|
|
(video in stream 0, audio in streams 1 and 2):
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
|
|
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
|
|
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
|
|
-map '[v]' -map '[a1]' -map '[a2]' output.mkv
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Concatenate two parts, handling audio and video separately, using the
|
|
(a)movie sources, and adjusting the resolution:
|
|
<table><tr><td> </td><td><pre class="example">movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
|
|
movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
|
|
[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
|
|
</pre></td></tr></table>
|
|
<p>Note that a desync will happen at the stitch if the audio and video streams
|
|
do not have exactly the same duration in the first file.
|
|
</p>
|
|
</li></ul>
|
|
|
|
<a name="ebur128"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-ebur128">40.3 ebur128</a></h2>
|
|
|
|
<p>EBU R128 scanner filter. This filter takes an audio stream as input and outputs
|
|
it unchanged. By default, it logs a message at a frequency of 10Hz with the
|
|
Momentary loudness (identified by <code>M</code>), Short-term loudness (<code>S</code>),
|
|
Integrated loudness (<code>I</code>) and Loudness Range (<code>LRA</code>).
|
|
</p>
|
|
<p>The filter also has a video output (see the <var>video</var> option) with a real
|
|
time graph to observe the loudness evolution. The graphic contains the logged
|
|
message mentioned above, so it is not printed anymore when this option is set,
|
|
unless the verbose logging is set. The main graphing area contains the
|
|
short-term loudness (3 seconds of analysis), and the gauge on the right is for
|
|
the momentary loudness (400 milliseconds).
|
|
</p>
|
|
<p>More information about the Loudness Recommendation EBU R128 on
|
|
<a href="http://tech.ebu.ch/loudness">http://tech.ebu.ch/loudness</a>.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>video</samp>’</dt>
|
|
<dd><p>Activate the video output. The audio stream is passed unchanged whether this
|
|
option is set or no. The video stream will be the first output stream if
|
|
activated. Default is <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>size</samp>’</dt>
|
|
<dd><p>Set the video size. This option is for video only. For the syntax of this
|
|
option, check the "Video size" section in the ffmpeg-utils manual. Default
|
|
and minimum resolution is <code>640x480</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>meter</samp>’</dt>
|
|
<dd><p>Set the EBU scale meter. Default is <code>9</code>. Common values are <code>9</code> and
|
|
<code>18</code>, respectively for EBU scale meter +9 and EBU scale meter +18. Any
|
|
other integer value between this range is allowed.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>metadata</samp>’</dt>
|
|
<dd><p>Set metadata injection. If set to <code>1</code>, the audio input will be segmented
|
|
into 100ms output frames, each of them containing various loudness information
|
|
in metadata. All the metadata keys are prefixed with <code>lavfi.r128.</code>.
|
|
</p>
|
|
<p>Default is <code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>framelog</samp>’</dt>
|
|
<dd><p>Force the frame logging level.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>info</samp>’</dt>
|
|
<dd><p>information logging level
|
|
</p></dd>
|
|
<dt> ‘<samp>verbose</samp>’</dt>
|
|
<dd><p>verbose logging level
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>By default, the logging level is set to <var>info</var>. If the ‘<samp>video</samp>’ or
|
|
the ‘<samp>metadata</samp>’ options are set, it switches to <var>verbose</var>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>peak</samp>’</dt>
|
|
<dd><p>Set peak mode(s).
|
|
</p>
|
|
<p>Available modes can be cumulated (the option is a <code>flag</code> type). Possible
|
|
values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Disable any peak mode (default).
|
|
</p></dd>
|
|
<dt> ‘<samp>sample</samp>’</dt>
|
|
<dd><p>Enable sample-peak mode.
|
|
</p>
|
|
<p>Simple peak mode looking for the higher sample value. It logs a message
|
|
for sample-peak (identified by <code>SPK</code>).
|
|
</p></dd>
|
|
<dt> ‘<samp>true</samp>’</dt>
|
|
<dd><p>Enable true-peak mode.
|
|
</p>
|
|
<p>If enabled, the peak lookup is done on an over-sampled version of the input
|
|
stream for better peak accuracy. It logs a message for true-peak.
|
|
(identified by <code>TPK</code>) and true-peak per frame (identified by <code>FTPK</code>).
|
|
This mode requires a build with <code>libswresample</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-24"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-24">40.3.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Real-time graph using <code>ffplay</code>, with a EBU scale meter +18:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Run an analysis with <code>ffmpeg</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="interleave_002c-ainterleave"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-interleave_002c-ainterleave">40.4 interleave, ainterleave</a></h2>
|
|
|
|
<p>Temporally interleave frames from several inputs.
|
|
</p>
|
|
<p><code>interleave</code> works with video inputs, <code>ainterleave</code> with audio.
|
|
</p>
|
|
<p>These filters read frames from several inputs and send the oldest
|
|
queued frame to the output.
|
|
</p>
|
|
<p>Input streams must have a well defined, monotonically increasing frame
|
|
timestamp values.
|
|
</p>
|
|
<p>In order to submit one frame to output, these filters need to enqueue
|
|
at least one frame for each input, so they cannot work in case one
|
|
input is not yet terminated and will not receive incoming frames.
|
|
</p>
|
|
<p>For example consider the case when one input is a <code>select</code> filter
|
|
which always drop input frames. The <code>interleave</code> filter will keep
|
|
reading from that input, but it will never be able to send new frames
|
|
to output until the input will send an end-of-stream signal.
|
|
</p>
|
|
<p>Also, depending on inputs synchronization, the filters will drop
|
|
frames in case one input receives more frames than the other ones, and
|
|
the queue is already filled.
|
|
</p>
|
|
<p>These filters accept the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>nb_inputs, n</samp>’</dt>
|
|
<dd><p>Set the number of different inputs, it is 2 by default.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Examples-83"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-83">40.4.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Interleave frames belonging to different streams using <code>ffmpeg</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Add flickering blur effect:
|
|
<table><tr><td> </td><td><pre class="example">select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="perms_002c-aperms"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-perms_002c-aperms">40.5 perms, aperms</a></h2>
|
|
|
|
<p>Set read/write permissions for the output frames.
|
|
</p>
|
|
<p>These filters are mainly aimed at developers to test direct path in the
|
|
following filter in the filtergraph.
|
|
</p>
|
|
<p>The filters accept the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Select the permissions mode.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>Do nothing. This is the default.
|
|
</p></dd>
|
|
<dt> ‘<samp>ro</samp>’</dt>
|
|
<dd><p>Set all the output frames read-only.
|
|
</p></dd>
|
|
<dt> ‘<samp>rw</samp>’</dt>
|
|
<dd><p>Set all the output frames directly writable.
|
|
</p></dd>
|
|
<dt> ‘<samp>toggle</samp>’</dt>
|
|
<dd><p>Make the frame read-only if writable, and writable if read-only.
|
|
</p></dd>
|
|
<dt> ‘<samp>random</samp>’</dt>
|
|
<dd><p>Set each output frame read-only or writable randomly.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>seed</samp>’</dt>
|
|
<dd><p>Set the seed for the <var>random</var> mode, must be an integer included between
|
|
<code>0</code> and <code>UINT32_MAX</code>. If not specified, or if explicitly set to
|
|
<code>-1</code>, the filter will try to use a good random seed on a best effort
|
|
basis.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Note: in case of auto-inserted filter between the permission filter and the
|
|
following one, the permission might not be received as expected in that
|
|
following filter. Inserting a <a href="#format">format</a> or <a href="#aformat">aformat</a> filter before the
|
|
perms/aperms filter can avoid this problem.
|
|
</p>
|
|
<a name="select_002c-aselect"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-select_002c-aselect">40.6 select, aselect</a></h2>
|
|
|
|
<p>Select frames to pass in output.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>expr, e</samp>’</dt>
|
|
<dd><p>Set expression, which is evaluated for each input frame.
|
|
</p>
|
|
<p>If the expression is evaluated to zero, the frame is discarded.
|
|
</p>
|
|
<p>If the evaluation result is negative or NaN, the frame is sent to the
|
|
first output; otherwise it is sent to the output with index
|
|
<code>ceil(val)-1</code>, assuming that the input index starts from 0.
|
|
</p>
|
|
<p>For example a value of <code>1.2</code> corresponds to the output with index
|
|
<code>ceil(1.2)-1 = 2-1 = 1</code>, that is the second output.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>outputs, n</samp>’</dt>
|
|
<dd><p>Set the number of outputs. The output to which to send the selected
|
|
frame is based on the result of the evaluation. Default value is 1.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The expression can contain the following constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>the sequential number of the filtered frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>selected_n</samp>’</dt>
|
|
<dd><p>the sequential number of the selected frame, starting from 0
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>prev_selected_n</samp>’</dt>
|
|
<dd><p>the sequential number of the last selected frame, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>TB</samp>’</dt>
|
|
<dd><p>timebase of the input timestamps
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pts</samp>’</dt>
|
|
<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
|
|
expressed in <var>TB</var> units, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>t</samp>’</dt>
|
|
<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
|
|
expressed in seconds, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>prev_pts</samp>’</dt>
|
|
<dd><p>the PTS of the previously filtered video frame, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>prev_selected_pts</samp>’</dt>
|
|
<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>prev_selected_t</samp>’</dt>
|
|
<dd><p>the PTS of the last previously selected video frame, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_pts</samp>’</dt>
|
|
<dd><p>the PTS of the first video frame in the video, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>start_t</samp>’</dt>
|
|
<dd><p>the time of the first video frame in the video, NAN if undefined
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pict_type <em>(video only)</em></samp>’</dt>
|
|
<dd><p>the type of the filtered frame, can assume one of the following
|
|
values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>I</samp>’</dt>
|
|
<dt> ‘<samp>P</samp>’</dt>
|
|
<dt> ‘<samp>B</samp>’</dt>
|
|
<dt> ‘<samp>S</samp>’</dt>
|
|
<dt> ‘<samp>SI</samp>’</dt>
|
|
<dt> ‘<samp>SP</samp>’</dt>
|
|
<dt> ‘<samp>BI</samp>’</dt>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>interlace_type <em>(video only)</em></samp>’</dt>
|
|
<dd><p>the frame interlace type, can assume one of the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>PROGRESSIVE</samp>’</dt>
|
|
<dd><p>the frame is progressive (not interlaced)
|
|
</p></dd>
|
|
<dt> ‘<samp>TOPFIRST</samp>’</dt>
|
|
<dd><p>the frame is top-field-first
|
|
</p></dd>
|
|
<dt> ‘<samp>BOTTOMFIRST</samp>’</dt>
|
|
<dd><p>the frame is bottom-field-first
|
|
</p></dd>
|
|
</dl>
|
|
|
|
</dd>
|
|
<dt> ‘<samp>consumed_sample_n <em>(audio only)</em></samp>’</dt>
|
|
<dd><p>the number of selected samples before the current frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>samples_n <em>(audio only)</em></samp>’</dt>
|
|
<dd><p>the number of samples in the current frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>sample_rate <em>(audio only)</em></samp>’</dt>
|
|
<dd><p>the input sample rate
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>key</samp>’</dt>
|
|
<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>pos</samp>’</dt>
|
|
<dd><p>the position in the file of the filtered frame, -1 if the information
|
|
is not available (e.g. for synthetic video)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scene <em>(video only)</em></samp>’</dt>
|
|
<dd><p>value between 0 and 1 to indicate a new scene; a low value reflects a low
|
|
probability for the current frame to introduce a new scene, while a higher
|
|
value means the current frame is more likely to be one (see the example below)
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The default value of the select expression is "1".
|
|
</p>
|
|
<a name="Examples-68"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-68">40.6.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Select all frames in input:
|
|
<table><tr><td> </td><td><pre class="example">select
|
|
</pre></td></tr></table>
|
|
|
|
<p>The example above is the same as:
|
|
</p><table><tr><td> </td><td><pre class="example">select=1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Skip all frames:
|
|
<table><tr><td> </td><td><pre class="example">select=0
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Select only I-frames:
|
|
<table><tr><td> </td><td><pre class="example">select='eq(pict_type\,I)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Select one frame every 100:
|
|
<table><tr><td> </td><td><pre class="example">select='not(mod(n\,100))'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Select only frames contained in the 10-20 time interval:
|
|
<table><tr><td> </td><td><pre class="example">select=between(t\,10\,20)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Select only I frames contained in the 10-20 time interval:
|
|
<table><tr><td> </td><td><pre class="example">select=between(t\,10\,20)*eq(pict_type\,I)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Select frames with a minimum distance of 10 seconds:
|
|
<table><tr><td> </td><td><pre class="example">select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Use aselect to select only audio frames with samples number > 100:
|
|
<table><tr><td> </td><td><pre class="example">aselect='gt(samples_n\,100)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Create a mosaic of the first scenes:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
|
|
</pre></td></tr></table>
|
|
|
|
<p>Comparing <var>scene</var> against a value between 0.3 and 0.5 is generally a sane
|
|
choice.
|
|
</p>
|
|
</li><li>
|
|
Send even and odd frames to separate outputs, and compose them:
|
|
<table><tr><td> </td><td><pre class="example">select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="sendcmd_002c-asendcmd"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-sendcmd_002c-asendcmd">40.7 sendcmd, asendcmd</a></h2>
|
|
|
|
<p>Send commands to filters in the filtergraph.
|
|
</p>
|
|
<p>These filters read commands to be sent to other filters in the
|
|
filtergraph.
|
|
</p>
|
|
<p><code>sendcmd</code> must be inserted between two video filters,
|
|
<code>asendcmd</code> must be inserted between two audio filters, but apart
|
|
from that they act the same way.
|
|
</p>
|
|
<p>The specification of commands can be provided in the filter arguments
|
|
with the <var>commands</var> option, or in a file specified by the
|
|
<var>filename</var> option.
|
|
</p>
|
|
<p>These filters accept the following options:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>commands, c</samp>’</dt>
|
|
<dd><p>Set the commands to be read and sent to the other filters.
|
|
</p></dd>
|
|
<dt> ‘<samp>filename, f</samp>’</dt>
|
|
<dd><p>Set the filename of the commands to be read and sent to the other
|
|
filters.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<a name="Commands-syntax"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-syntax">40.7.1 Commands syntax</a></h3>
|
|
|
|
<p>A commands description consists of a sequence of interval
|
|
specifications, comprising a list of commands to be executed when a
|
|
particular event related to that interval occurs. The occurring event
|
|
is typically the current frame time entering or leaving a given time
|
|
interval.
|
|
</p>
|
|
<p>An interval is specified by the following syntax:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>START</var>[-<var>END</var>] <var>COMMANDS</var>;
|
|
</pre></td></tr></table>
|
|
|
|
<p>The time interval is specified by the <var>START</var> and <var>END</var> times.
|
|
<var>END</var> is optional and defaults to the maximum time.
|
|
</p>
|
|
<p>The current frame time is considered within the specified interval if
|
|
it is included in the interval [<var>START</var>, <var>END</var>), that is when
|
|
the time is greater or equal to <var>START</var> and is lesser than
|
|
<var>END</var>.
|
|
</p>
|
|
<p><var>COMMANDS</var> consists of a sequence of one or more command
|
|
specifications, separated by ",", relating to that interval. The
|
|
syntax of a command specification is given by:
|
|
</p><table><tr><td> </td><td><pre class="example">[<var>FLAGS</var>] <var>TARGET</var> <var>COMMAND</var> <var>ARG</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>FLAGS</var> is optional and specifies the type of events relating to
|
|
the time interval which enable sending the specified command, and must
|
|
be a non-null sequence of identifier flags separated by "+" or "|" and
|
|
enclosed between "[" and "]".
|
|
</p>
|
|
<p>The following flags are recognized:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>enter</samp>’</dt>
|
|
<dd><p>The command is sent when the current frame timestamp enters the
|
|
specified interval. In other words, the command is sent when the
|
|
previous frame timestamp was not in the given interval, and the
|
|
current is.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>leave</samp>’</dt>
|
|
<dd><p>The command is sent when the current frame timestamp leaves the
|
|
specified interval. In other words, the command is sent when the
|
|
previous frame timestamp was in the given interval, and the
|
|
current is not.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>If <var>FLAGS</var> is not specified, a default value of <code>[enter]</code> is
|
|
assumed.
|
|
</p>
|
|
<p><var>TARGET</var> specifies the target of the command, usually the name of
|
|
the filter class or a specific filter instance name.
|
|
</p>
|
|
<p><var>COMMAND</var> specifies the name of the command for the target filter.
|
|
</p>
|
|
<p><var>ARG</var> is optional and specifies the optional list of argument for
|
|
the given <var>COMMAND</var>.
|
|
</p>
|
|
<p>Between one interval specification and another, whitespaces, or
|
|
sequences of characters starting with <code>#</code> until the end of line,
|
|
are ignored and can be used to annotate comments.
|
|
</p>
|
|
<p>A simplified BNF description of the commands specification syntax
|
|
follows:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>COMMAND_FLAG</var> ::= "enter" | "leave"
|
|
<var>COMMAND_FLAGS</var> ::= <var>COMMAND_FLAG</var> [(+|"|")<var>COMMAND_FLAG</var>]
|
|
<var>COMMAND</var> ::= ["[" <var>COMMAND_FLAGS</var> "]"] <var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
|
|
<var>COMMANDS</var> ::= <var>COMMAND</var> [,<var>COMMANDS</var>]
|
|
<var>INTERVAL</var> ::= <var>START</var>[-<var>END</var>] <var>COMMANDS</var>
|
|
<var>INTERVALS</var> ::= <var>INTERVAL</var>[;<var>INTERVALS</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Examples-66"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-66">40.7.2 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Specify audio tempo change at second 4:
|
|
<table><tr><td> </td><td><pre class="example">asendcmd=c='4.0 atempo tempo 1.5',atempo
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Specify a list of drawtext and hue commands in a file.
|
|
<table><tr><td> </td><td><pre class="example"># show text in the interval 5-10
|
|
5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
|
|
[leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
|
|
|
|
# desaturate the image in the interval 15-20
|
|
15.0-20.0 [enter] hue s 0,
|
|
[enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
|
|
[leave] hue s 1,
|
|
[leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
|
|
|
|
# apply an exponential saturation fade-out effect, starting from time 25
|
|
25 [enter] hue s exp(25-t)
|
|
</pre></td></tr></table>
|
|
|
|
<p>A filtergraph allowing to read and process the above command list
|
|
stored in a file ‘<tt>test.cmd</tt>’, can be specified with:
|
|
</p><table><tr><td> </td><td><pre class="example">sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<p><a name="setpts"></a>
|
|
</p><a name="setpts_002c-asetpts"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-setpts_002c-asetpts">40.8 setpts, asetpts</a></h2>
|
|
|
|
<p>Change the PTS (presentation timestamp) of the input frames.
|
|
</p>
|
|
<p><code>setpts</code> works on video frames, <code>asetpts</code> on audio frames.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>expr</samp>’</dt>
|
|
<dd><p>The expression which is evaluated for each frame to construct its timestamp.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The expression is evaluated through the eval API and can contain the following
|
|
constants:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>FRAME_RATE</samp>’</dt>
|
|
<dd><p>frame rate, only defined for constant frame-rate video
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>PTS</samp>’</dt>
|
|
<dd><p>the presentation timestamp in input
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>N</samp>’</dt>
|
|
<dd><p>the count of the input frame for video or the number of consumed samples,
|
|
not including the current frame for audio, starting from 0.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>NB_CONSUMED_SAMPLES</samp>’</dt>
|
|
<dd><p>the number of consumed samples, not including the current frame (only
|
|
audio)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>NB_SAMPLES, S</samp>’</dt>
|
|
<dd><p>the number of samples in the current frame (only audio)
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>SAMPLE_RATE, SR</samp>’</dt>
|
|
<dd><p>audio sample rate
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>STARTPTS</samp>’</dt>
|
|
<dd><p>the PTS of the first frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>STARTT</samp>’</dt>
|
|
<dd><p>the time in seconds of the first frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>INTERLACED</samp>’</dt>
|
|
<dd><p>tell if the current frame is interlaced
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>T</samp>’</dt>
|
|
<dd><p>the time in seconds of the current frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>POS</samp>’</dt>
|
|
<dd><p>original position in the file of the frame, or undefined if undefined
|
|
for the current frame
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>PREV_INPTS</samp>’</dt>
|
|
<dd><p>previous input PTS
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>PREV_INT</samp>’</dt>
|
|
<dd><p>previous input time in seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>PREV_OUTPTS</samp>’</dt>
|
|
<dd><p>previous output PTS
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>PREV_OUTT</samp>’</dt>
|
|
<dd><p>previous output time in seconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>RTCTIME</samp>’</dt>
|
|
<dd><p>wallclock (RTC) time in microseconds. This is deprecated, use time(0)
|
|
instead.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>RTCSTART</samp>’</dt>
|
|
<dd><p>wallclock (RTC) time at the start of the movie in microseconds
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>TB</samp>’</dt>
|
|
<dd><p>timebase of the input timestamps
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-39"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-39">40.8.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Start counting PTS from zero
|
|
<table><tr><td> </td><td><pre class="example">setpts=PTS-STARTPTS
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply fast motion effect:
|
|
<table><tr><td> </td><td><pre class="example">setpts=0.5*PTS
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply slow motion effect:
|
|
<table><tr><td> </td><td><pre class="example">setpts=2.0*PTS
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set fixed rate of 25 frames per second:
|
|
<table><tr><td> </td><td><pre class="example">setpts=N/(25*TB)
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set fixed rate 25 fps with some jitter:
|
|
<table><tr><td> </td><td><pre class="example">setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Apply an offset of 10 seconds to the input PTS:
|
|
<table><tr><td> </td><td><pre class="example">setpts=PTS+10/TB
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate timestamps from a "live source" and rebase onto the current timebase:
|
|
<table><tr><td> </td><td><pre class="example">setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Generate timestamps by counting samples:
|
|
<table><tr><td> </td><td><pre class="example">asetpts=N/SR/TB
|
|
</pre></td></tr></table>
|
|
|
|
</li></ul>
|
|
|
|
<a name="settb_002c-asettb"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-settb_002c-asettb">40.9 settb, asettb</a></h2>
|
|
|
|
<p>Set the timebase to use for the output frames timestamps.
|
|
It is mainly useful for testing timebase configuration.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>expr, tb</samp>’</dt>
|
|
<dd><p>The expression which is evaluated into the output timebase.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>The value for ‘<samp>tb</samp>’ is an arithmetic expression representing a
|
|
rational. The expression can contain the constants "AVTB" (the default
|
|
timebase), "intb" (the input timebase) and "sr" (the sample rate,
|
|
audio only). Default value is "intb".
|
|
</p>
|
|
<a name="Examples-13"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-13">40.9.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Set the timebase to 1/25:
|
|
<table><tr><td> </td><td><pre class="example">settb=expr=1/25
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set the timebase to 1/10:
|
|
<table><tr><td> </td><td><pre class="example">settb=expr=0.1
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set the timebase to 1001/1000:
|
|
<table><tr><td> </td><td><pre class="example">settb=1+0.001
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set the timebase to 2*intb:
|
|
<table><tr><td> </td><td><pre class="example">settb=2*intb
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Set the default timebase value:
|
|
<table><tr><td> </td><td><pre class="example">settb=AVTB
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="showspectrum"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-showspectrum">40.10 showspectrum</a></h2>
|
|
|
|
<p>Convert input audio to a video output, representing the audio frequency
|
|
spectrum.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Specify the video size for the output. For the syntax of this option, check
|
|
the "Video size" section in the ffmpeg-utils manual. Default value is
|
|
<code>640x512</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>slide</samp>’</dt>
|
|
<dd><p>Specify if the spectrum should slide along the window. Default value is
|
|
<code>0</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Specify display mode.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>combined</samp>’</dt>
|
|
<dd><p>all channels are displayed in the same row
|
|
</p></dd>
|
|
<dt> ‘<samp>separate</samp>’</dt>
|
|
<dd><p>all channels are displayed in separate rows
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>combined</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>color</samp>’</dt>
|
|
<dd><p>Specify display color mode.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>channel</samp>’</dt>
|
|
<dd><p>each channel is displayed in a separate color
|
|
</p></dd>
|
|
<dt> ‘<samp>intensity</samp>’</dt>
|
|
<dd><p>each channel is is displayed using the same color scheme
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>channel</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>scale</samp>’</dt>
|
|
<dd><p>Specify scale used for calculating intensity color values.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>lin</samp>’</dt>
|
|
<dd><p>linear
|
|
</p></dd>
|
|
<dt> ‘<samp>sqrt</samp>’</dt>
|
|
<dd><p>square root, default
|
|
</p></dd>
|
|
<dt> ‘<samp>cbrt</samp>’</dt>
|
|
<dd><p>cubic root
|
|
</p></dd>
|
|
<dt> ‘<samp>log</samp>’</dt>
|
|
<dd><p>logarithmic
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is ‘<samp>sqrt</samp>’.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>saturation</samp>’</dt>
|
|
<dd><p>Set saturation modifier for displayed colors. Negative values provide
|
|
alternative color scheme. <code>0</code> is no saturation at all.
|
|
Saturation must be in [-10.0, 10.0] range.
|
|
Default value is <code>1</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>win_func</samp>’</dt>
|
|
<dd><p>Set window function.
|
|
</p>
|
|
<p>It accepts the following values:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>none</samp>’</dt>
|
|
<dd><p>No samples pre-processing (do not expect this to be faster)
|
|
</p></dd>
|
|
<dt> ‘<samp>hann</samp>’</dt>
|
|
<dd><p>Hann window
|
|
</p></dd>
|
|
<dt> ‘<samp>hamming</samp>’</dt>
|
|
<dd><p>Hamming window
|
|
</p></dd>
|
|
<dt> ‘<samp>blackman</samp>’</dt>
|
|
<dd><p>Blackman window
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>hann</code>.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>The usage is very similar to the showwaves filter; see the examples in that
|
|
section.
|
|
</p>
|
|
<a name="Examples-1"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-1">40.10.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Large window with logarithmic color scaling:
|
|
<table><tr><td> </td><td><pre class="example">showspectrum=s=1280x480:scale=log
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Complete example for a colored and sliding spectrum per channel using <code>ffplay</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
|
|
[a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="showwaves"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-showwaves">40.11 showwaves</a></h2>
|
|
|
|
<p>Convert input audio to a video output, representing the samples waves.
|
|
</p>
|
|
<p>The filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>size, s</samp>’</dt>
|
|
<dd><p>Specify the video size for the output. For the syntax of this option, check
|
|
the "Video size" section in the ffmpeg-utils manual. Default value
|
|
is "600x240".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>mode</samp>’</dt>
|
|
<dd><p>Set display mode.
|
|
</p>
|
|
<p>Available values are:
|
|
</p><dl compact="compact">
|
|
<dt> ‘<samp>point</samp>’</dt>
|
|
<dd><p>Draw a point for each sample.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>line</samp>’</dt>
|
|
<dd><p>Draw a vertical line for each sample.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>Default value is <code>point</code>.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>n</samp>’</dt>
|
|
<dd><p>Set the number of samples which are printed on the same column. A
|
|
larger value will decrease the frame rate. Must be a positive
|
|
integer. This option can be set only if the value for <var>rate</var>
|
|
is not explicitly specified.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>rate, r</samp>’</dt>
|
|
<dd><p>Set the (approximate) output frame rate. This is done by setting the
|
|
option <var>n</var>. Default value is "25".
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<a name="Examples-71"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-71">40.11.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Output the input file audio and the corresponding video representation
|
|
at the same time:
|
|
<table><tr><td> </td><td><pre class="example">amovie=a.mp3,asplit[out0],showwaves[out1]
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Create a synthetic signal and show it with showwaves, forcing a
|
|
frame rate of 30 frames per second:
|
|
<table><tr><td> </td><td><pre class="example">aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="split_002c-asplit"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-split_002c-asplit">40.12 split, asplit</a></h2>
|
|
|
|
<p>Split input into several identical outputs.
|
|
</p>
|
|
<p><code>asplit</code> works with audio input, <code>split</code> with video.
|
|
</p>
|
|
<p>The filter accepts a single parameter which specifies the number of outputs. If
|
|
unspecified, it defaults to 2.
|
|
</p>
|
|
<a name="Examples-19"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-19">40.12.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Create two separate outputs from the same input:
|
|
<table><tr><td> </td><td><pre class="example">[in] split [out0][out1]
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
To create 3 or more outputs, you need to specify the number of
|
|
outputs, like in:
|
|
<table><tr><td> </td><td><pre class="example">[in] asplit=3 [out0][out1][out2]
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Create two separate outputs from the same input, one cropped and
|
|
one padded:
|
|
<table><tr><td> </td><td><pre class="example">[in] split [splitout1][splitout2];
|
|
[splitout1] crop=100:100:0:0 [cropout];
|
|
[splitout2] pad=200:200:100:100 [padout];
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Create 5 copies of the input audio with <code>ffmpeg</code>:
|
|
<table><tr><td> </td><td><pre class="example">ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
<a name="zmq_002c-azmq"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-zmq_002c-azmq">40.13 zmq, azmq</a></h2>
|
|
|
|
<p>Receive commands sent through a libzmq client, and forward them to
|
|
filters in the filtergraph.
|
|
</p>
|
|
<p><code>zmq</code> and <code>azmq</code> work as a pass-through filters. <code>zmq</code>
|
|
must be inserted between two video filters, <code>azmq</code> between two
|
|
audio filters.
|
|
</p>
|
|
<p>To enable these filters you need to install the libzmq library and
|
|
headers and configure FFmpeg with <code>--enable-libzmq</code>.
|
|
</p>
|
|
<p>For more information about libzmq see:
|
|
<a href="http://www.zeromq.org/">http://www.zeromq.org/</a>
|
|
</p>
|
|
<p>The <code>zmq</code> and <code>azmq</code> filters work as a libzmq server, which
|
|
receives messages sent through a network interface defined by the
|
|
‘<samp>bind_address</samp>’ option.
|
|
</p>
|
|
<p>The received message must be in the form:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>TARGET</var> specifies the target of the command, usually the name of
|
|
the filter class or a specific filter instance name.
|
|
</p>
|
|
<p><var>COMMAND</var> specifies the name of the command for the target filter.
|
|
</p>
|
|
<p><var>ARG</var> is optional and specifies the optional argument list for the
|
|
given <var>COMMAND</var>.
|
|
</p>
|
|
<p>Upon reception, the message is processed and the corresponding command
|
|
is injected into the filtergraph. Depending on the result, the filter
|
|
will send a reply to the client, adopting the format:
|
|
</p><table><tr><td> </td><td><pre class="example"><var>ERROR_CODE</var> <var>ERROR_REASON</var>
|
|
<var>MESSAGE</var>
|
|
</pre></td></tr></table>
|
|
|
|
<p><var>MESSAGE</var> is optional.
|
|
</p>
|
|
<a name="Examples-91"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-91">40.13.1 Examples</a></h3>
|
|
|
|
<p>Look at ‘<tt>tools/zmqsend</tt>’ for an example of a zmq client which can
|
|
be used to send commands processed by these filters.
|
|
</p>
|
|
<p>Consider the following filtergraph generated by <code>ffplay</code>
|
|
</p><table><tr><td> </td><td><pre class="example">ffplay -dumpgraph 1 -f lavfi "
|
|
color=s=100x100:c=red [l];
|
|
color=s=100x100:c=blue [r];
|
|
nullsrc=s=200x100, zmq [bg];
|
|
[bg][l] overlay [bg+l];
|
|
[bg+l][r] overlay=x=100 "
|
|
</pre></td></tr></table>
|
|
|
|
<p>To change the color of the left side of the video, the following
|
|
command can be used:
|
|
</p><table><tr><td> </td><td><pre class="example">echo Parsed_color_0 c yellow | tools/zmqsend
|
|
</pre></td></tr></table>
|
|
|
|
<p>To change the right side:
|
|
</p><table><tr><td> </td><td><pre class="example">echo Parsed_color_1 c pink | tools/zmqsend
|
|
</pre></td></tr></table>
|
|
|
|
|
|
<a name="Multimedia-Sources"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Multimedia-Sources">41. Multimedia Sources</a></h1>
|
|
|
|
<p>Below is a description of the currently available multimedia sources.
|
|
</p>
|
|
<a name="amovie"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-amovie">41.1 amovie</a></h2>
|
|
|
|
<p>This is the same as <a href="#movie">movie</a> source, except it selects an audio
|
|
stream by default.
|
|
</p>
|
|
<p><a name="movie"></a>
|
|
</p><a name="movie-1"></a>
|
|
<h2 class="section"><a href="ffmpeg-all.html#toc-movie-1">41.2 movie</a></h2>
|
|
|
|
<p>Read audio and/or video stream(s) from a movie container.
|
|
</p>
|
|
<p>This filter accepts the following options:
|
|
</p>
|
|
<dl compact="compact">
|
|
<dt> ‘<samp>filename</samp>’</dt>
|
|
<dd><p>The name of the resource to read (not necessarily a file but also a device or a
|
|
stream accessed through some protocol).
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>format_name, f</samp>’</dt>
|
|
<dd><p>Specifies the format assumed for the movie to read, and can be either
|
|
the name of a container or an input device. If not specified the
|
|
format is guessed from <var>movie_name</var> or by probing.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>seek_point, sp</samp>’</dt>
|
|
<dd><p>Specifies the seek point in seconds, the frames will be output
|
|
starting from this seek point, the parameter is evaluated with
|
|
<code>av_strtod</code> so the numerical value may be suffixed by an IS
|
|
postfix. Default value is "0".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>streams, s</samp>’</dt>
|
|
<dd><p>Specifies the streams to read. Several streams can be specified,
|
|
separated by "+". The source will then have as many outputs, in the
|
|
same order. The syntax is explained in the “Stream specifiers”
|
|
section in the ffmpeg manual. Two special names, "dv" and "da" specify
|
|
respectively the default (best suited) video and audio stream. Default
|
|
is "dv", or "da" if the filter is called as "amovie".
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>stream_index, si</samp>’</dt>
|
|
<dd><p>Specifies the index of the video stream to read. If the value is -1,
|
|
the best suited video stream will be automatically selected. Default
|
|
value is "-1". Deprecated. If the filter is called "amovie", it will select
|
|
audio instead of video.
|
|
</p>
|
|
</dd>
|
|
<dt> ‘<samp>loop</samp>’</dt>
|
|
<dd><p>Specifies how many times to read the stream in sequence.
|
|
If the value is less than 1, the stream will be read again and again.
|
|
Default value is "1".
|
|
</p>
|
|
<p>Note that when the movie is looped the source timestamps are not
|
|
changed, so it will generate non monotonically increasing timestamps.
|
|
</p></dd>
|
|
</dl>
|
|
|
|
<p>This filter allows one to overlay a second video on top of main input of
|
|
a filtergraph as shown in this graph:
|
|
</p><table><tr><td> </td><td><pre class="example">input -----------> deltapts0 --> overlay --> output
|
|
^
|
|
|
|
|
movie --> scale--> deltapts1 -------+
|
|
</pre></td></tr></table>
|
|
|
|
<a name="Examples-25"></a>
|
|
<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-25">41.2.1 Examples</a></h3>
|
|
|
|
<ul>
|
|
<li>
|
|
Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
|
|
on top of the input labelled as "in":
|
|
<table><tr><td> </td><td><pre class="example">movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
|
|
[in] setpts=PTS-STARTPTS [main];
|
|
[main][over] overlay=16:16 [out]
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Read from a video4linux2 device, and overlay it on top of the input
|
|
labelled as "in":
|
|
<table><tr><td> </td><td><pre class="example">movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
|
|
[in] setpts=PTS-STARTPTS [main];
|
|
[main][over] overlay=16:16 [out]
|
|
</pre></td></tr></table>
|
|
|
|
</li><li>
|
|
Read the first video stream and the audio stream with id 0x81 from
|
|
dvd.vob; the video is connected to the pad named "video" and the audio is
|
|
connected to the pad named "audio":
|
|
<table><tr><td> </td><td><pre class="example">movie=dvd.vob:s=v:0+#0x81 [video] [audio]
|
|
</pre></td></tr></table>
|
|
</li></ul>
|
|
|
|
|
|
<a name="See-Also"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-See-Also">42. See Also</a></h1>
|
|
|
|
<p><a href="ffmpeg.html">ffmpeg</a>
|
|
<a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
|
|
<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
|
|
<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
|
<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
|
<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
|
|
<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
|
|
<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
|
|
<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
|
|
<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
|
<a href="ffmpeg-filters.html">ffmpeg-filters</a>
|
|
</p>
|
|
|
|
<a name="Authors"></a>
|
|
<h1 class="chapter"><a href="ffmpeg-all.html#toc-Authors">43. Authors</a></h1>
|
|
|
|
<p>The FFmpeg developers.
|
|
</p>
|
|
<p>For details about the authorship, see the Git history of the project
|
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
|
</p>
|
|
<p>Maintainers for the specific components are listed in the file
|
|
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
|
</p>
|
|
|
|
<footer class="footer pagination-right">
|
|
<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>April 4, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
|