删除ffmpeg文档
parent
801e218657
commit
8871362446
File diff suppressed because one or more lines are too long
|
@ -1,165 +0,0 @@
|
|||
a.summary-letter {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #2D6198;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #884488;
|
||||
}
|
||||
|
||||
#banner {
|
||||
background-color: white;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#banner img {
|
||||
margin-bottom: 1px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
#body {
|
||||
margin-left: 1em;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #313131;
|
||||
margin: 0;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#container {
|
||||
background-color: white;
|
||||
color: #202020;
|
||||
margin-left: 1em;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
#footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 a, h2 a, h3 a, h4 a {
|
||||
text-decoration: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
padding-left: 0.4em;
|
||||
border-radius: 4px;
|
||||
padding-bottom: 0.25em;
|
||||
padding-top: 0.25em;
|
||||
border: 1px solid #6A996A;
|
||||
}
|
||||
|
||||
h1 {
|
||||
background-color: #7BB37B;
|
||||
color: #151515;
|
||||
font-size: 1.2em;
|
||||
padding-bottom: 0.3em;
|
||||
padding-top: 0.3em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #313131;
|
||||
font-size: 1.0em;
|
||||
background-color: #ABE3AB;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: #313131;
|
||||
font-size: 0.9em;
|
||||
margin-bottom: -6px;
|
||||
background-color: #BBF3BB;
|
||||
}
|
||||
|
||||
h4 {
|
||||
color: #313131;
|
||||
font-size: 0.8em;
|
||||
margin-bottom: -8px;
|
||||
background-color: #D1FDD1;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#navbar {
|
||||
background-color: #738073;
|
||||
border-bottom: 1px solid #5C665C;
|
||||
border-top: 1px solid #5C665C;
|
||||
margin-top: 12px;
|
||||
padding: 0.3em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#navbar a, #navbar_secondary a {
|
||||
color: white;
|
||||
padding: 0.3em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#navbar a:hover, #navbar_secondary a:hover {
|
||||
background-color: #313131;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#navbar_secondary {
|
||||
background-color: #738073;
|
||||
border-bottom: 1px solid #5C665C;
|
||||
border-left: 1px solid #5C665C;
|
||||
border-right: 1px solid #5C665C;
|
||||
padding: 0.3em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-left: 1em;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-left: 3em;
|
||||
margin-right: 3em;
|
||||
padding: 0.3em;
|
||||
border: 1px solid #bbb;
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
|
||||
dl dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#proj_desc {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
#repos {
|
||||
margin-left: 1em;
|
||||
margin-right: 1em;
|
||||
border-collapse: collapse;
|
||||
border: solid 1px #6A996A;
|
||||
}
|
||||
|
||||
#repos th {
|
||||
background-color: #7BB37B;
|
||||
border: solid 1px #6A996A;
|
||||
}
|
||||
|
||||
#repos td {
|
||||
padding: 0.2em;
|
||||
border: solid 1px #6A996A;
|
||||
}
|
|
@ -1,975 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Developer Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Developer ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Developer Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Notes-for-external-developers" href="#Notes-for-external-developers">1 Notes for external developers</a></li>
|
||||
<li><a name="toc-Contributing" href="#Contributing">2 Contributing</a></li>
|
||||
<li><a name="toc-Coding-Rules-1" href="#Coding-Rules-1">3 Coding Rules</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Code-formatting-conventions" href="#Code-formatting-conventions">3.1 Code formatting conventions</a></li>
|
||||
<li><a name="toc-Comments" href="#Comments">3.2 Comments</a></li>
|
||||
<li><a name="toc-C-language-features" href="#C-language-features">3.3 C language features</a></li>
|
||||
<li><a name="toc-Naming-conventions" href="#Naming-conventions">3.4 Naming conventions</a></li>
|
||||
<li><a name="toc-Miscellaneous-conventions" href="#Miscellaneous-conventions">3.5 Miscellaneous conventions</a></li>
|
||||
<li><a name="toc-Editor-configuration" href="#Editor-configuration">3.6 Editor configuration</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Development-Policy" href="#Development-Policy">4 Development Policy</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Patches_002fCommitting" href="#Patches_002fCommitting">4.1 Patches/Committing</a></li>
|
||||
<li><a name="toc-Code" href="#Code">4.2 Code</a></li>
|
||||
<li><a name="toc-Documentation_002fOther" href="#Documentation_002fOther">4.3 Documentation/Other</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Code-of-conduct" href="#Code-of-conduct">5 Code of conduct</a></li>
|
||||
<li><a name="toc-Submitting-patches-1" href="#Submitting-patches-1">6 Submitting patches</a></li>
|
||||
<li><a name="toc-New-codecs-or-formats-checklist" href="#New-codecs-or-formats-checklist">7 New codecs or formats checklist</a></li>
|
||||
<li><a name="toc-Patch-submission-checklist" href="#Patch-submission-checklist">8 Patch submission checklist</a></li>
|
||||
<li><a name="toc-Patch-review-process" href="#Patch-review-process">9 Patch review process</a></li>
|
||||
<li><a name="toc-Regression-tests-1" href="#Regression-tests-1">10 Regression tests</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Adding-files-to-the-fate_002dsuite-dataset" href="#Adding-files-to-the-fate_002dsuite-dataset">10.1 Adding files to the fate-suite dataset</a></li>
|
||||
<li><a name="toc-Visualizing-Test-Coverage" href="#Visualizing-Test-Coverage">10.2 Visualizing Test Coverage</a></li>
|
||||
<li><a name="toc-Using-Valgrind" href="#Using-Valgrind">10.3 Using Valgrind</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Release-process-1" href="#Release-process-1">11 Release process</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Criteria-for-Point-Releases-1" href="#Criteria-for-Point-Releases-1">11.1 Criteria for Point Releases</a></li>
|
||||
<li><a name="toc-Release-Checklist" href="#Release-Checklist">11.2 Release Checklist</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Notes-for-external-developers"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Notes-for-external-developers">1 Notes for external developers</a></h1>
|
||||
|
||||
<p>This document is mostly useful for internal FFmpeg developers.
|
||||
External developers who need to use the API in their application should
|
||||
refer to the API doxygen documentation in the public headers, and
|
||||
check the examples in ‘<tt>doc/examples</tt>’ and in the source code to
|
||||
see how the public API is employed.
|
||||
</p>
|
||||
<p>You can use the FFmpeg libraries in your commercial program, but you
|
||||
are encouraged to <em>publish any patch you make</em>. In this case the
|
||||
best way to proceed is to send your patches to the ffmpeg-devel
|
||||
mailing list following the guidelines illustrated in the remainder of
|
||||
this document.
|
||||
</p>
|
||||
<p>For more detailed legal information about the use of FFmpeg in
|
||||
external programs read the ‘<tt>LICENSE</tt>’ file in the source tree and
|
||||
consult <a href="https://ffmpeg.org/legal.html">https://ffmpeg.org/legal.html</a>.
|
||||
</p>
|
||||
<a name="Contributing"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Contributing">2 Contributing</a></h1>
|
||||
|
||||
<p>There are 3 ways by which code gets into FFmpeg.
|
||||
</p><ul>
|
||||
<li> Submitting patches to the main developer mailing list.
|
||||
See <a href="#Submitting-patches">Submitting patches</a> for details.
|
||||
</li><li> Directly committing changes to the main tree.
|
||||
</li><li> Committing changes to a git clone, for example on github.com or
|
||||
gitorious.org. And asking us to merge these changes.
|
||||
</li></ul>
|
||||
|
||||
<p>Whichever way, changes should be reviewed by the maintainer of the code
|
||||
before they are committed. And they should follow the <a href="#Coding-Rules">Coding Rules</a>.
|
||||
The developer making the commit and the author are responsible for their changes
|
||||
and should try to fix issues their commit causes.
|
||||
</p>
|
||||
<p><a name="Coding-Rules"></a>
|
||||
</p><a name="Coding-Rules-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Coding-Rules-1">3 Coding Rules</a></h1>
|
||||
|
||||
<a name="Code-formatting-conventions"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Code-formatting-conventions">3.1 Code formatting conventions</a></h2>
|
||||
|
||||
<p>There are the following guidelines regarding the indentation in files:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Indent size is 4.
|
||||
|
||||
</li><li>
|
||||
The TAB character is forbidden outside of Makefiles as is any
|
||||
form of trailing whitespace. Commits containing either will be
|
||||
rejected by the git repository.
|
||||
|
||||
</li><li>
|
||||
You should try to limit your code lines to 80 characters; however, do so if
|
||||
and only if this improves readability.
|
||||
|
||||
</li><li>
|
||||
K&R coding style is used.
|
||||
</li></ul>
|
||||
<p>The presentation is one inspired by ’indent -i4 -kr -nut’.
|
||||
</p>
|
||||
<p>The main priority in FFmpeg is simplicity and small code size in order to
|
||||
minimize the bug count.
|
||||
</p>
|
||||
<a name="Comments"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Comments">3.2 Comments</a></h2>
|
||||
<p>Use the JavaDoc/Doxygen format (see examples below) so that code documentation
|
||||
can be generated automatically. All nontrivial functions should have a comment
|
||||
above them explaining what the function does, even if it is just one sentence.
|
||||
All structures and their member variables should be documented, too.
|
||||
</p>
|
||||
<p>Avoid Qt-style and similar Doxygen syntax with <code>!</code> in it, i.e. replace
|
||||
<code>//!</code> with <code>///</code> and similar. Also @ syntax should be employed
|
||||
for markup commands, i.e. use <code>@param</code> and not <code>\param</code>.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">/**
|
||||
* @file
|
||||
* MPEG codec.
|
||||
* @author ...
|
||||
*/
|
||||
|
||||
/**
|
||||
* Summary sentence.
|
||||
* more text ...
|
||||
* ...
|
||||
*/
|
||||
typedef struct Foobar {
|
||||
int var1; /**< var1 description */
|
||||
int var2; ///< var2 description
|
||||
/** var3 description */
|
||||
int var3;
|
||||
} Foobar;
|
||||
|
||||
/**
|
||||
* Summary sentence.
|
||||
* more text ...
|
||||
* ...
|
||||
* @param my_parameter description of my_parameter
|
||||
* @return return value description
|
||||
*/
|
||||
int myfunc(int my_parameter)
|
||||
...
|
||||
</pre></div>
|
||||
|
||||
<a name="C-language-features"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-C-language-features">3.3 C language features</a></h2>
|
||||
|
||||
<p>FFmpeg is programmed in the ISO C90 language with a few additional
|
||||
features from ISO C99, namely:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
the ‘<samp>inline</samp>’ keyword;
|
||||
|
||||
</li><li>
|
||||
‘<samp>//</samp>’ comments;
|
||||
|
||||
</li><li>
|
||||
designated struct initializers (‘<samp>struct s x = { .i = 17 };</samp>’);
|
||||
|
||||
</li><li>
|
||||
compound literals (‘<samp>x = (struct s) { 17, 23 };</samp>’).
|
||||
|
||||
</li><li>
|
||||
Implementation defined behavior for signed integers is assumed to match the
|
||||
expected behavior for two’s complement. Non representable values in integer
|
||||
casts are binary truncated. Shift right of signed values uses sign extension.
|
||||
</li></ul>
|
||||
|
||||
<p>These features are supported by all compilers we care about, so we will not
|
||||
accept patches to remove their use unless they absolutely do not impair
|
||||
clarity and performance.
|
||||
</p>
|
||||
<p>All code must compile with recent versions of GCC and a number of other
|
||||
currently supported compilers. To ensure compatibility, please do not use
|
||||
additional C99 features or GCC extensions. Especially watch out for:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
mixing statements and declarations;
|
||||
|
||||
</li><li>
|
||||
‘<samp>long long</samp>’ (use ‘<samp>int64_t</samp>’ instead);
|
||||
|
||||
</li><li>
|
||||
‘<samp>__attribute__</samp>’ not protected by ‘<samp>#ifdef __GNUC__</samp>’ or similar;
|
||||
|
||||
</li><li>
|
||||
GCC statement expressions (‘<samp>(x = ({ int y = 4; y; })</samp>’).
|
||||
</li></ul>
|
||||
|
||||
<a name="Naming-conventions"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Naming-conventions">3.4 Naming conventions</a></h2>
|
||||
<p>All names should be composed with underscores (_), not CamelCase. For example,
|
||||
‘<samp>avfilter_get_video_buffer</samp>’ is an acceptable function name and
|
||||
‘<samp>AVFilterGetVideo</samp>’ is not. The exception from this are type names, like
|
||||
for example structs and enums; they should always be in CamelCase.
|
||||
</p>
|
||||
<p>There are the following conventions for naming variables and functions:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
For local variables no prefix is required.
|
||||
|
||||
</li><li>
|
||||
For file-scope variables and functions declared as <code>static</code>, no prefix
|
||||
is required.
|
||||
|
||||
</li><li>
|
||||
For variables and functions visible outside of file scope, but only used
|
||||
internally by a library, an <code>ff_</code> prefix should be used,
|
||||
e.g. ‘<samp>ff_w64_demuxer</samp>’.
|
||||
|
||||
</li><li>
|
||||
For variables and functions visible outside of file scope, used internally
|
||||
across multiple libraries, use <code>avpriv_</code> as prefix, for example,
|
||||
‘<samp>avpriv_report_missing_feature</samp>’.
|
||||
|
||||
</li><li>
|
||||
Each library has its own prefix for public symbols, in addition to the
|
||||
commonly used <code>av_</code> (<code>avformat_</code> for libavformat,
|
||||
<code>avcodec_</code> for libavcodec, <code>swr_</code> for libswresample, etc).
|
||||
Check the existing code and choose names accordingly.
|
||||
Note that some symbols without these prefixes are also exported for
|
||||
retro-compatibility reasons. These exceptions are declared in the
|
||||
<code>lib<name>/lib<name>.v</code> files.
|
||||
</li></ul>
|
||||
|
||||
<p>Furthermore, name space reserved for the system should not be invaded.
|
||||
Identifiers ending in <code>_t</code> are reserved by
|
||||
<a href="http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html#tag_02_02_02">POSIX</a>.
|
||||
Also avoid names starting with <code>__</code> or <code>_</code> followed by an uppercase
|
||||
letter as they are reserved by the C standard. Names starting with <code>_</code>
|
||||
are reserved at the file level and may not be used for externally visible
|
||||
symbols. If in doubt, just avoid names starting with <code>_</code> altogether.
|
||||
</p>
|
||||
<a name="Miscellaneous-conventions"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Miscellaneous-conventions">3.5 Miscellaneous conventions</a></h2>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
fprintf and printf are forbidden in libavformat and libavcodec,
|
||||
please use av_log() instead.
|
||||
|
||||
</li><li>
|
||||
Casts should be used only when necessary. Unneeded parentheses
|
||||
should also be avoided if they don’t make the code easier to understand.
|
||||
</li></ul>
|
||||
|
||||
<a name="Editor-configuration"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Editor-configuration">3.6 Editor configuration</a></h2>
|
||||
<p>In order to configure Vim to follow FFmpeg formatting conventions, paste
|
||||
the following snippet into your ‘<tt>.vimrc</tt>’:
|
||||
</p><div class="example">
|
||||
<pre class="example">" indentation rules for FFmpeg: 4 spaces, no tabs
|
||||
set expandtab
|
||||
set shiftwidth=4
|
||||
set softtabstop=4
|
||||
set cindent
|
||||
set cinoptions=(0
|
||||
" Allow tabs in Makefiles.
|
||||
autocmd FileType make,automake set noexpandtab shiftwidth=8 softtabstop=8
|
||||
" Trailing whitespace and tabs are forbidden, so highlight them.
|
||||
highlight ForbiddenWhitespace ctermbg=red guibg=red
|
||||
match ForbiddenWhitespace /\s\+$\|\t/
|
||||
" Do not highlight spaces at the end of line while typing on that line.
|
||||
autocmd InsertEnter * match ForbiddenWhitespace /\t\|\s\+\%#\@<!$/
|
||||
</pre></div>
|
||||
|
||||
<p>For Emacs, add these roughly equivalent lines to your ‘<tt>.emacs.d/init.el</tt>’:
|
||||
</p><div class="lisp">
|
||||
<pre class="lisp">(c-add-style "ffmpeg"
|
||||
'("k&r"
|
||||
(c-basic-offset . 4)
|
||||
(indent-tabs-mode . nil)
|
||||
(show-trailing-whitespace . t)
|
||||
(c-offsets-alist
|
||||
(statement-cont . (c-lineup-assignments +)))
|
||||
)
|
||||
)
|
||||
(setq c-default-style "ffmpeg")
|
||||
</pre></div>
|
||||
|
||||
<a name="Development-Policy"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Development-Policy">4 Development Policy</a></h1>
|
||||
|
||||
<a name="Patches_002fCommitting"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Patches_002fCommitting">4.1 Patches/Committing</a></h2>
|
||||
<a name="Licenses-for-patches-must-be-compatible-with-FFmpeg_002e"></a>
|
||||
<h3 class="subheading">Licenses for patches must be compatible with FFmpeg.</h3>
|
||||
<p>Contributions should be licensed under the
|
||||
<a href="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL 2.1</a>,
|
||||
including an "or any later version" clause, or, if you prefer
|
||||
a gift-style license, the
|
||||
<a href="http://opensource.org/licenses/isc-license.txt">ISC</a> or
|
||||
<a href="http://mit-license.org/">MIT</a> license.
|
||||
<a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL 2</a> including
|
||||
an "or any later version" clause is also acceptable, but LGPL is
|
||||
preferred.
|
||||
If you add a new file, give it a proper license header. Do not copy and
|
||||
paste it from a random place, use an existing file as template.
|
||||
</p>
|
||||
<a name="You-must-not-commit-code-which-breaks-FFmpeg_0021"></a>
|
||||
<h3 class="subheading">You must not commit code which breaks FFmpeg!</h3>
|
||||
<p>This means unfinished code which is enabled and breaks compilation,
|
||||
or compiles but does not work/breaks the regression tests. Code which
|
||||
is unfinished but disabled may be permitted under-circumstances, like
|
||||
missing samples or an implementation with a small subset of features.
|
||||
Always check the mailing list for any reviewers with issues and test
|
||||
FATE before you push.
|
||||
</p>
|
||||
<a name="Keep-the-main-commit-message-short-with-an-extended-description-below_002e"></a>
|
||||
<h3 class="subheading">Keep the main commit message short with an extended description below.</h3>
|
||||
<p>The commit message should have a short first line in the form of
|
||||
a ‘<samp>topic: short description</samp>’ as a header, separated by a newline
|
||||
from the body consisting of an explanation of why the change is necessary.
|
||||
If the commit fixes a known bug on the bug tracker, the commit message
|
||||
should include its bug ID. Referring to the issue on the bug tracker does
|
||||
not exempt you from writing an excerpt of the bug in the commit message.
|
||||
</p>
|
||||
<a name="Testing-must-be-adequate-but-not-excessive_002e"></a>
|
||||
<h3 class="subheading">Testing must be adequate but not excessive.</h3>
|
||||
<p>If it works for you, others, and passes FATE then it should be OK to commit
|
||||
it, provided it fits the other committing criteria. You should not worry about
|
||||
over-testing things. If your code has problems (portability, triggers
|
||||
compiler bugs, unusual environment etc) they will be reported and eventually
|
||||
fixed.
|
||||
</p>
|
||||
<a name="Do-not-commit-unrelated-changes-together_002e"></a>
|
||||
<h3 class="subheading">Do not commit unrelated changes together.</h3>
|
||||
<p>They should be split them into self-contained pieces. Also do not forget
|
||||
that if part B depends on part A, but A does not depend on B, then A can
|
||||
and should be committed first and separate from B. Keeping changes well
|
||||
split into self-contained parts makes reviewing and understanding them on
|
||||
the commit log mailing list easier. This also helps in case of debugging
|
||||
later on.
|
||||
Also if you have doubts about splitting or not splitting, do not hesitate to
|
||||
ask/discuss it on the developer mailing list.
|
||||
</p>
|
||||
<a name="Ask-before-you-change-the-build-system-_0028configure_002c-etc_0029_002e"></a>
|
||||
<h3 class="subheading">Ask before you change the build system (configure, etc).</h3>
|
||||
<p>Do not commit changes to the build system (Makefiles, configure script)
|
||||
which change behavior, defaults etc, without asking first. The same
|
||||
applies to compiler warning fixes, trivial looking fixes and to code
|
||||
maintained by other developers. We usually have a reason for doing things
|
||||
the way we do. Send your changes as patches to the ffmpeg-devel mailing
|
||||
list, and if the code maintainers say OK, you may commit. This does not
|
||||
apply to files you wrote and/or maintain.
|
||||
</p>
|
||||
<a name="Cosmetic-changes-should-be-kept-in-separate-patches_002e"></a>
|
||||
<h3 class="subheading">Cosmetic changes should be kept in separate patches.</h3>
|
||||
<p>We refuse source indentation and other cosmetic changes if they are mixed
|
||||
with functional changes, such commits will be rejected and removed. Every
|
||||
developer has his own indentation style, you should not change it. Of course
|
||||
if you (re)write something, you can use your own style, even though we would
|
||||
prefer if the indentation throughout FFmpeg was consistent (Many projects
|
||||
force a given indentation style - we do not.). If you really need to make
|
||||
indentation changes (try to avoid this), separate them strictly from real
|
||||
changes.
|
||||
</p>
|
||||
<p>NOTE: If you had to put if(){ .. } over a large (> 5 lines) chunk of code,
|
||||
then either do NOT change the indentation of the inner part within (do not
|
||||
move it to the right)! or do so in a separate commit
|
||||
</p>
|
||||
<a name="Commit-messages-should-always-be-filled-out-properly_002e"></a>
|
||||
<h3 class="subheading">Commit messages should always be filled out properly.</h3>
|
||||
<p>Always fill out the commit log message. Describe in a few lines what you
|
||||
changed and why. You can refer to mailing list postings if you fix a
|
||||
particular bug. Comments such as "fixed!" or "Changed it." are unacceptable.
|
||||
Recommended format:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">area changed: Short 1 line description
|
||||
|
||||
details describing what and why and giving references.
|
||||
</pre></div>
|
||||
|
||||
<a name="Credit-the-author-of-the-patch_002e"></a>
|
||||
<h3 class="subheading">Credit the author of the patch.</h3>
|
||||
<p>Make sure the author of the commit is set correctly. (see git commit –author)
|
||||
If you apply a patch, send an
|
||||
answer to ffmpeg-devel (or wherever you got the patch from) saying that
|
||||
you applied the patch.
|
||||
</p>
|
||||
<a name="Complex-patches-should-refer-to-discussion-surrounding-them_002e"></a>
|
||||
<h3 class="subheading">Complex patches should refer to discussion surrounding them.</h3>
|
||||
<p>When applying patches that have been discussed (at length) on the mailing
|
||||
list, reference the thread in the log message.
|
||||
</p>
|
||||
<a name="Always-wait-long-enough-before-pushing-changes"></a>
|
||||
<h3 class="subheading">Always wait long enough before pushing changes</h3>
|
||||
<p>Do NOT commit to code actively maintained by others without permission.
|
||||
Send a patch to ffmpeg-devel. If no one answers within a reasonable
|
||||
time-frame (12h for build failures and security fixes, 3 days small changes,
|
||||
1 week for big patches) then commit your patch if you think it is OK.
|
||||
Also note, the maintainer can simply ask for more time to review!
|
||||
</p>
|
||||
<a name="Code"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Code">4.2 Code</a></h2>
|
||||
<a name="API_002fABI-changes-should-be-discussed-before-they-are-made_002e"></a>
|
||||
<h3 class="subheading">API/ABI changes should be discussed before they are made.</h3>
|
||||
<p>Do not change behavior of the programs (renaming options etc) or public
|
||||
API or ABI without first discussing it on the ffmpeg-devel mailing list.
|
||||
Do not remove widely used functionality or features (redundant code can be removed).
|
||||
</p>
|
||||
<a name="Remember-to-check-if-you-need-to-bump-versions-for-libav_002a_002e"></a>
|
||||
<h3 class="subheading">Remember to check if you need to bump versions for libav*.</h3>
|
||||
<p>Depending on the change, you may need to change the version integer.
|
||||
Incrementing the first component means no backward compatibility to
|
||||
previous versions (e.g. removal of a function from the public API).
|
||||
Incrementing the second component means backward compatible change
|
||||
(e.g. addition of a function to the public API or extension of an
|
||||
existing data structure).
|
||||
Incrementing the third component means a noteworthy binary compatible
|
||||
change (e.g. encoder bug fix that matters for the decoder). The third
|
||||
component always starts at 100 to distinguish FFmpeg from Libav.
|
||||
</p>
|
||||
<a name="Warnings-for-correct-code-may-be-disabled-if-there-is-no-other-option_002e"></a>
|
||||
<h3 class="subheading">Warnings for correct code may be disabled if there is no other option.</h3>
|
||||
<p>Compiler warnings indicate potential bugs or code with bad style. If a type of
|
||||
warning always points to correct and clean code, that warning should
|
||||
be disabled, not the code changed.
|
||||
Thus the remaining warnings can either be bugs or correct code.
|
||||
If it is a bug, the bug has to be fixed. If it is not, the code should
|
||||
be changed to not generate a warning unless that causes a slowdown
|
||||
or obfuscates the code.
|
||||
</p>
|
||||
<a name="Check-untrusted-input-properly_002e"></a>
|
||||
<h3 class="subheading">Check untrusted input properly.</h3>
|
||||
<p>Never write to unallocated memory, never write over the end of arrays,
|
||||
always check values read from some untrusted source before using them
|
||||
as array index or other risky things.
|
||||
</p>
|
||||
<a name="Documentation_002fOther"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Documentation_002fOther">4.3 Documentation/Other</a></h2>
|
||||
<a name="Subscribe-to-the-ffmpeg_002ddevel-mailing-list_002e"></a>
|
||||
<h3 class="subheading">Subscribe to the ffmpeg-devel mailing list.</h3>
|
||||
<p>It is important to be subscribed to the
|
||||
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
|
||||
mailing list. Almost any non-trivial patch is to be sent there for review.
|
||||
Other developers may have comments about your contribution. We expect you see
|
||||
those comments, and to improve it if requested. (N.B. Experienced committers
|
||||
have other channels, and may sometimes skip review for trivial fixes.) Also,
|
||||
discussion here about bug fixes and FFmpeg improvements by other developers may
|
||||
be helpful information for you. Finally, by being a list subscriber, your
|
||||
contribution will be posted immediately to the list, without the moderation
|
||||
hold which messages from non-subscribers experience.
|
||||
</p>
|
||||
<p>However, it is more important to the project that we receive your patch than
|
||||
that you be subscribed to the ffmpeg-devel list. If you have a patch, and don’t
|
||||
want to subscribe and discuss the patch, then please do send it to the list
|
||||
anyway.
|
||||
</p>
|
||||
<a name="Subscribe-to-the-ffmpeg_002dcvslog-mailing-list_002e"></a>
|
||||
<h3 class="subheading">Subscribe to the ffmpeg-cvslog mailing list.</h3>
|
||||
<p>Diffs of all commits are sent to the
|
||||
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-cvslog">ffmpeg-cvslog</a>
|
||||
mailing list. Some developers read this list to review all code base changes
|
||||
from all sources. Subscribing to this list is not mandatory.
|
||||
</p>
|
||||
<a name="Keep-the-documentation-up-to-date_002e"></a>
|
||||
<h3 class="subheading">Keep the documentation up to date.</h3>
|
||||
<p>Update the documentation if you change behavior or add features. If you are
|
||||
unsure how best to do this, send a patch to ffmpeg-devel, the documentation
|
||||
maintainer(s) will review and commit your stuff.
|
||||
</p>
|
||||
<a name="Important-discussions-should-be-accessible-to-all_002e"></a>
|
||||
<h3 class="subheading">Important discussions should be accessible to all.</h3>
|
||||
<p>Try to keep important discussions and requests (also) on the public
|
||||
developer mailing list, so that all developers can benefit from them.
|
||||
</p>
|
||||
<a name="Check-your-entries-in-MAINTAINERS_002e"></a>
|
||||
<h3 class="subheading">Check your entries in MAINTAINERS.</h3>
|
||||
<p>Make sure that no parts of the codebase that you maintain are missing from the
|
||||
‘<tt>MAINTAINERS</tt>’ file. If something that you want to maintain is missing add it with
|
||||
your name after it.
|
||||
If at some point you no longer want to maintain some code, then please help in
|
||||
finding a new maintainer and also don’t forget to update the ‘<tt>MAINTAINERS</tt>’ file.
|
||||
</p>
|
||||
<p>We think our rules are not too hard. If you have comments, contact us.
|
||||
</p>
|
||||
<a name="Code-of-conduct"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Code-of-conduct">5 Code of conduct</a></h1>
|
||||
|
||||
<p>Be friendly and respectful towards others and third parties.
|
||||
Treat others the way you yourself want to be treated.
|
||||
</p>
|
||||
<p>Be considerate. Not everyone shares the same viewpoint and priorities as you do.
|
||||
Different opinions and interpretations help the project.
|
||||
Looking at issues from a different perspective assists development.
|
||||
</p>
|
||||
<p>Do not assume malice for things that can be attributed to incompetence. Even if
|
||||
it is malice, it’s rarely good to start with that as initial assumption.
|
||||
</p>
|
||||
<p>Stay friendly even if someone acts contrarily. Everyone has a bad day
|
||||
once in a while.
|
||||
If you yourself have a bad day or are angry then try to take a break and reply
|
||||
once you are calm and without anger if you have to.
|
||||
</p>
|
||||
<p>Try to help other team members and cooperate if you can.
|
||||
</p>
|
||||
<p>The goal of software development is to create technical excellence, not for any
|
||||
individual to be better and "win" against the others. Large software projects
|
||||
are only possible and successful through teamwork.
|
||||
</p>
|
||||
<p>If someone struggles do not put them down. Give them a helping hand
|
||||
instead and point them in the right direction.
|
||||
</p>
|
||||
<p>Finally, keep in mind the immortal words of Bill and Ted,
|
||||
"Be excellent to each other."
|
||||
</p>
|
||||
<p><a name="Submitting-patches"></a>
|
||||
</p><a name="Submitting-patches-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Submitting-patches-1">6 Submitting patches</a></h1>
|
||||
|
||||
<p>First, read the <a href="#Coding-Rules">Coding Rules</a> above if you did not yet, in particular
|
||||
the rules regarding patch submission.
|
||||
</p>
|
||||
<p>When you submit your patch, please use <code>git format-patch</code> or
|
||||
<code>git send-email</code>. We cannot read other diffs :-).
|
||||
</p>
|
||||
<p>Also please do not submit a patch which contains several unrelated changes.
|
||||
Split it into separate, self-contained pieces. This does not mean splitting
|
||||
file by file. Instead, make the patch as small as possible while still
|
||||
keeping it as a logical unit that contains an individual change, even
|
||||
if it spans multiple files. This makes reviewing your patches much easier
|
||||
for us and greatly increases your chances of getting your patch applied.
|
||||
</p>
|
||||
<p>Use the patcheck tool of FFmpeg to check your patch.
|
||||
The tool is located in the tools directory.
|
||||
</p>
|
||||
<p>Run the <a href="#Regression-tests">Regression tests</a> before submitting a patch in order to verify
|
||||
it does not cause unexpected problems.
|
||||
</p>
|
||||
<p>It also helps quite a bit if you tell us what the patch does (for example
|
||||
’replaces lrint by lrintf’), and why (for example ’*BSD isn’t C99 compliant
|
||||
and has no lrint()’)
|
||||
</p>
|
||||
<p>Also please if you send several patches, send each patch as a separate mail,
|
||||
do not attach several unrelated patches to the same mail.
|
||||
</p>
|
||||
<p>Patches should be posted to the
|
||||
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
|
||||
mailing list. Use <code>git send-email</code> when possible since it will properly
|
||||
send patches without requiring extra care. If you cannot, then send patches
|
||||
as base64-encoded attachments, so your patch is not trashed during
|
||||
transmission. Also ensure the correct mime type is used
|
||||
(text/x-diff or text/x-patch or at least text/plain) and that only one
|
||||
patch is inline or attached per mail.
|
||||
You can check <a href="https://patchwork.ffmpeg.org">https://patchwork.ffmpeg.org</a>, if your patch does not show up, its mime type
|
||||
likely was wrong.
|
||||
</p>
|
||||
<p>Your patch will be reviewed on the mailing list. You will likely be asked
|
||||
to make some changes and are expected to send in an improved version that
|
||||
incorporates the requests from the review. This process may go through
|
||||
several iterations. Once your patch is deemed good enough, some developer
|
||||
will pick it up and commit it to the official FFmpeg tree.
|
||||
</p>
|
||||
<p>Give us a few days to react. But if some time passes without reaction,
|
||||
send a reminder by email. Your patch should eventually be dealt with.
|
||||
</p>
|
||||
|
||||
<a name="New-codecs-or-formats-checklist"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-New-codecs-or-formats-checklist">7 New codecs or formats checklist</a></h1>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Did you use av_cold for codec initialization and close functions?
|
||||
|
||||
</li><li>
|
||||
Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
|
||||
AVInputFormat/AVOutputFormat struct?
|
||||
|
||||
</li><li>
|
||||
Did you bump the minor version number (and reset the micro version
|
||||
number) in ‘<tt>libavcodec/version.h</tt>’ or ‘<tt>libavformat/version.h</tt>’?
|
||||
|
||||
</li><li>
|
||||
Did you register it in ‘<tt>allcodecs.c</tt>’ or ‘<tt>allformats.c</tt>’?
|
||||
|
||||
</li><li>
|
||||
Did you add the AVCodecID to ‘<tt>avcodec.h</tt>’?
|
||||
When adding new codec IDs, also add an entry to the codec descriptor
|
||||
list in ‘<tt>libavcodec/codec_desc.c</tt>’.
|
||||
|
||||
</li><li>
|
||||
If it has a FourCC, did you add it to ‘<tt>libavformat/riff.c</tt>’,
|
||||
even if it is only a decoder?
|
||||
|
||||
</li><li>
|
||||
Did you add a rule to compile the appropriate files in the Makefile?
|
||||
Remember to do this even if you’re just adding a format to a file that is
|
||||
already being compiled by some other rule, like a raw demuxer.
|
||||
|
||||
</li><li>
|
||||
Did you add an entry to the table of supported formats or codecs in
|
||||
‘<tt>doc/general.texi</tt>’?
|
||||
|
||||
</li><li>
|
||||
Did you add an entry in the Changelog?
|
||||
|
||||
</li><li>
|
||||
If it depends on a parser or a library, did you add that dependency in
|
||||
configure?
|
||||
|
||||
</li><li>
|
||||
Did you <code>git add</code> the appropriate files before committing?
|
||||
|
||||
</li><li>
|
||||
Did you make sure it compiles standalone, i.e. with
|
||||
<code>configure --disable-everything --enable-decoder=foo</code>
|
||||
(or <code>--enable-demuxer</code> or whatever your component is)?
|
||||
</li></ol>
|
||||
|
||||
|
||||
<a name="Patch-submission-checklist"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Patch-submission-checklist">8 Patch submission checklist</a></h1>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Does <code>make fate</code> pass with the patch applied?
|
||||
|
||||
</li><li>
|
||||
Was the patch generated with git format-patch or send-email?
|
||||
|
||||
</li><li>
|
||||
Did you sign off your patch? (git commit -s)
|
||||
See <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/SubmittingPatches">http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/SubmittingPatches</a> for the meaning
|
||||
of sign off.
|
||||
|
||||
</li><li>
|
||||
Did you provide a clear git commit log message?
|
||||
|
||||
</li><li>
|
||||
Is the patch against latest FFmpeg git master branch?
|
||||
|
||||
</li><li>
|
||||
Are you subscribed to ffmpeg-devel?
|
||||
(the list is subscribers only due to spam)
|
||||
|
||||
</li><li>
|
||||
Have you checked that the changes are minimal, so that the same cannot be
|
||||
achieved with a smaller patch and/or simpler final code?
|
||||
|
||||
</li><li>
|
||||
If the change is to speed critical code, did you benchmark it?
|
||||
|
||||
</li><li>
|
||||
If you did any benchmarks, did you provide them in the mail?
|
||||
|
||||
</li><li>
|
||||
Have you checked that the patch does not introduce buffer overflows or
|
||||
other security issues?
|
||||
|
||||
</li><li>
|
||||
Did you test your decoder or demuxer against damaged data? If no, see
|
||||
tools/trasher, the noise bitstream filter, and
|
||||
<a href="http://caca.zoy.org/wiki/zzuf">zzuf</a>. Your decoder or demuxer
|
||||
should not crash, end in a (near) infinite loop, or allocate ridiculous
|
||||
amounts of memory when fed damaged data.
|
||||
|
||||
</li><li>
|
||||
Did you test your decoder or demuxer against sample files?
|
||||
Samples may be obtained at <a href="https://samples.ffmpeg.org">https://samples.ffmpeg.org</a>.
|
||||
|
||||
</li><li>
|
||||
Does the patch not mix functional and cosmetic changes?
|
||||
|
||||
</li><li>
|
||||
Did you add tabs or trailing whitespace to the code? Both are forbidden.
|
||||
|
||||
</li><li>
|
||||
Is the patch attached to the email you send?
|
||||
|
||||
</li><li>
|
||||
Is the mime type of the patch correct? It should be text/x-diff or
|
||||
text/x-patch or at least text/plain and not application/octet-stream.
|
||||
|
||||
</li><li>
|
||||
If the patch fixes a bug, did you provide a verbose analysis of the bug?
|
||||
|
||||
</li><li>
|
||||
If the patch fixes a bug, did you provide enough information, including
|
||||
a sample, so the bug can be reproduced and the fix can be verified?
|
||||
Note please do not attach samples >100k to mails but rather provide a
|
||||
URL, you can upload to ftp://upload.ffmpeg.org.
|
||||
|
||||
</li><li>
|
||||
Did you provide a verbose summary about what the patch does change?
|
||||
|
||||
</li><li>
|
||||
Did you provide a verbose explanation why it changes things like it does?
|
||||
|
||||
</li><li>
|
||||
Did you provide a verbose summary of the user visible advantages and
|
||||
disadvantages if the patch is applied?
|
||||
|
||||
</li><li>
|
||||
Did you provide an example so we can verify the new feature added by the
|
||||
patch easily?
|
||||
|
||||
</li><li>
|
||||
If you added a new file, did you insert a license header? It should be
|
||||
taken from FFmpeg, not randomly copied and pasted from somewhere else.
|
||||
|
||||
</li><li>
|
||||
You should maintain alphabetical order in alphabetically ordered lists as
|
||||
long as doing so does not break API/ABI compatibility.
|
||||
|
||||
</li><li>
|
||||
Lines with similar content should be aligned vertically when doing so
|
||||
improves readability.
|
||||
|
||||
</li><li>
|
||||
Consider adding a regression test for your code.
|
||||
|
||||
</li><li>
|
||||
If you added YASM code please check that things still work with –disable-yasm.
|
||||
|
||||
</li><li>
|
||||
Make sure you check the return values of function and return appropriate
|
||||
error codes. Especially memory allocation functions like <code>av_malloc()</code>
|
||||
are notoriously left unchecked, which is a serious problem.
|
||||
|
||||
</li><li>
|
||||
Test your code with valgrind and or Address Sanitizer to ensure it’s free
|
||||
of leaks, out of array accesses, etc.
|
||||
</li></ol>
|
||||
|
||||
<a name="Patch-review-process"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Patch-review-process">9 Patch review process</a></h1>
|
||||
|
||||
<p>All patches posted to ffmpeg-devel will be reviewed, unless they contain a
|
||||
clear note that the patch is not for the git master branch.
|
||||
Reviews and comments will be posted as replies to the patch on the
|
||||
mailing list. The patch submitter then has to take care of every comment,
|
||||
that can be by resubmitting a changed patch or by discussion. Resubmitted
|
||||
patches will themselves be reviewed like any other patch. If at some point
|
||||
a patch passes review with no comments then it is approved, that can for
|
||||
simple and small patches happen immediately while large patches will generally
|
||||
have to be changed and reviewed many times before they are approved.
|
||||
After a patch is approved it will be committed to the repository.
|
||||
</p>
|
||||
<p>We will review all submitted patches, but sometimes we are quite busy so
|
||||
especially for large patches this can take several weeks.
|
||||
</p>
|
||||
<p>If you feel that the review process is too slow and you are willing to try to
|
||||
take over maintainership of the area of code you change then just clone
|
||||
git master and maintain the area of code there. We will merge each area from
|
||||
where its best maintained.
|
||||
</p>
|
||||
<p>When resubmitting patches, please do not make any significant changes
|
||||
not related to the comments received during review. Such patches will
|
||||
be rejected. Instead, submit significant changes or new features as
|
||||
separate patches.
|
||||
</p>
|
||||
<p>Everyone is welcome to review patches. Also if you are waiting for your patch
|
||||
to be reviewed, please consider helping to review other patches, that is a great
|
||||
way to get everyone’s patches reviewed sooner.
|
||||
</p>
|
||||
<p><a name="Regression-tests"></a>
|
||||
</p><a name="Regression-tests-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Regression-tests-1">10 Regression tests</a></h1>
|
||||
|
||||
<p>Before submitting a patch (or committing to the repository), you should at least
|
||||
test that you did not break anything.
|
||||
</p>
|
||||
<p>Running ’make fate’ accomplishes this, please see <a href="fate.html">fate.html</a> for details.
|
||||
</p>
|
||||
<p>[Of course, some patches may change the results of the regression tests. In
|
||||
this case, the reference results of the regression tests shall be modified
|
||||
accordingly].
|
||||
</p>
|
||||
<a name="Adding-files-to-the-fate_002dsuite-dataset"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Adding-files-to-the-fate_002dsuite-dataset">10.1 Adding files to the fate-suite dataset</a></h2>
|
||||
|
||||
<p>When there is no muxer or encoder available to generate test media for a
|
||||
specific test then the media has to be included in the fate-suite.
|
||||
First please make sure that the sample file is as small as possible to test the
|
||||
respective decoder or demuxer sufficiently. Large files increase network
|
||||
bandwidth and disk space requirements.
|
||||
Once you have a working fate test and fate sample, provide in the commit
|
||||
message or introductory message for the patch series that you post to
|
||||
the ffmpeg-devel mailing list, a direct link to download the sample media.
|
||||
</p>
|
||||
<a name="Visualizing-Test-Coverage"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Visualizing-Test-Coverage">10.2 Visualizing Test Coverage</a></h2>
|
||||
|
||||
<p>The FFmpeg build system allows visualizing the test coverage in an easy
|
||||
manner with the coverage tools <code>gcov</code>/<code>lcov</code>. This involves
|
||||
the following steps:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
Configure to compile with instrumentation enabled:
|
||||
<code>configure --toolchain=gcov</code>.
|
||||
|
||||
</li><li>
|
||||
Run your test case, either manually or via FATE. This can be either
|
||||
the full FATE regression suite, or any arbitrary invocation of any
|
||||
front-end tool provided by FFmpeg, in any combination.
|
||||
|
||||
</li><li>
|
||||
Run <code>make lcov</code> to generate coverage data in HTML format.
|
||||
|
||||
</li><li>
|
||||
View <code>lcov/index.html</code> in your preferred HTML viewer.
|
||||
</li></ol>
|
||||
|
||||
<p>You can use the command <code>make lcov-reset</code> to reset the coverage
|
||||
measurements. You will need to rerun <code>make lcov</code> after running a
|
||||
new test.
|
||||
</p>
|
||||
<a name="Using-Valgrind"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Using-Valgrind">10.3 Using Valgrind</a></h2>
|
||||
|
||||
<p>The configure script provides a shortcut for using valgrind to spot bugs
|
||||
related to memory handling. Just add the option
|
||||
<code>--toolchain=valgrind-memcheck</code> or <code>--toolchain=valgrind-massif</code>
|
||||
to your configure line, and reasonable defaults will be set for running
|
||||
FATE under the supervision of either the <strong>memcheck</strong> or the
|
||||
<strong>massif</strong> tool of the valgrind suite.
|
||||
</p>
|
||||
<p>In case you need finer control over how valgrind is invoked, use the
|
||||
<code>--target-exec='valgrind <your_custom_valgrind_options></code> option in
|
||||
your configure line instead.
|
||||
</p>
|
||||
<p><a name="Release-process"></a>
|
||||
</p><a name="Release-process-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Release-process-1">11 Release process</a></h1>
|
||||
|
||||
<p>FFmpeg maintains a set of <strong>release branches</strong>, which are the
|
||||
recommended deliverable for system integrators and distributors (such as
|
||||
Linux distributions, etc.). At regular times, a <strong>release
|
||||
manager</strong> prepares, tests and publishes tarballs on the
|
||||
<a href="https://ffmpeg.org">https://ffmpeg.org</a> website.
|
||||
</p>
|
||||
<p>There are two kinds of releases:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
<strong>Major releases</strong> always include the latest and greatest
|
||||
features and functionality.
|
||||
|
||||
</li><li>
|
||||
<strong>Point releases</strong> are cut from <strong>release</strong> branches,
|
||||
which are named <code>release/X</code>, with <code>X</code> being the release
|
||||
version number.
|
||||
</li></ol>
|
||||
|
||||
<p>Note that we promise to our users that shared libraries from any FFmpeg
|
||||
release never break programs that have been <strong>compiled</strong> against
|
||||
previous versions of <strong>the same release series</strong> in any case!
|
||||
</p>
|
||||
<p>However, from time to time, we do make API changes that require adaptations
|
||||
in applications. Such changes are only allowed in (new) major releases and
|
||||
require further steps such as bumping library version numbers and/or
|
||||
adjustments to the symbol versioning file. Please discuss such changes
|
||||
on the <strong>ffmpeg-devel</strong> mailing list in time to allow forward planning.
|
||||
</p>
|
||||
<p><a name="Criteria-for-Point-Releases"></a>
|
||||
</p><a name="Criteria-for-Point-Releases-1"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Criteria-for-Point-Releases-1">11.1 Criteria for Point Releases</a></h2>
|
||||
|
||||
<p>Changes that match the following criteria are valid candidates for
|
||||
inclusion into a point release:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
Fixes a security issue, preferably identified by a <strong>CVE
|
||||
number</strong> issued by <a href="http://cve.mitre.org/">http://cve.mitre.org/</a>.
|
||||
|
||||
</li><li>
|
||||
Fixes a documented bug in <a href="https://trac.ffmpeg.org">https://trac.ffmpeg.org</a>.
|
||||
|
||||
</li><li>
|
||||
Improves the included documentation.
|
||||
|
||||
</li><li>
|
||||
Retains both source code and binary compatibility with previous
|
||||
point releases of the same release branch.
|
||||
</li></ol>
|
||||
|
||||
<p>The order for checking the rules is (1 OR 2 OR 3) AND 4.
|
||||
</p>
|
||||
|
||||
<a name="Release-Checklist"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Release-Checklist">11.2 Release Checklist</a></h2>
|
||||
|
||||
<p>The release process involves the following steps:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
Ensure that the ‘<tt>RELEASE</tt>’ file contains the version number for
|
||||
the upcoming release.
|
||||
|
||||
</li><li>
|
||||
Add the release at <a href="https://trac.ffmpeg.org/admin/ticket/versions">https://trac.ffmpeg.org/admin/ticket/versions</a>.
|
||||
|
||||
</li><li>
|
||||
Announce the intent to do a release to the mailing list.
|
||||
|
||||
</li><li>
|
||||
Make sure all relevant security fixes have been backported. See
|
||||
<a href="https://ffmpeg.org/security.html">https://ffmpeg.org/security.html</a>.
|
||||
|
||||
</li><li>
|
||||
Ensure that the FATE regression suite still passes in the release
|
||||
branch on at least <strong>i386</strong> and <strong>amd64</strong>
|
||||
(cf. <a href="#Regression-tests">Regression tests</a>).
|
||||
|
||||
</li><li>
|
||||
Prepare the release tarballs in <code>bz2</code> and <code>gz</code> formats, and
|
||||
supplementing files that contain <code>gpg</code> signatures
|
||||
|
||||
</li><li>
|
||||
Publish the tarballs at <a href="https://ffmpeg.org/releases">https://ffmpeg.org/releases</a>. Create and
|
||||
push an annotated tag in the form <code>nX</code>, with <code>X</code>
|
||||
containing the version number.
|
||||
|
||||
</li><li>
|
||||
Propose and send a patch to the <strong>ffmpeg-devel</strong> mailing list
|
||||
with a news entry for the website.
|
||||
|
||||
</li><li>
|
||||
Publish the news entry.
|
||||
|
||||
</li><li>
|
||||
Send an announcement to the mailing list.
|
||||
</li></ol>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,839 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg FAQ: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg FAQ: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg FAQ</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f" href="#Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn’t FFmpeg support feature [xyz]?</a></li>
|
||||
<li><a name="toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f" href="#FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></li>
|
||||
<li><a name="toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e" href="#I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></li>
|
||||
<li><a name="toc-Which-codecs-are-supported-by-Windows_003f" href="#Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Compilation" href="#Compilation">2 Compilation</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027" href="#error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">2.1 <code>error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></li>
|
||||
<li><a name="toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f" href="#I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro’s package manager. Why does <code>configure</code> not see it?</a></li>
|
||||
<li><a name="toc-How-do-I-make-pkg_002dconfig-find-my-libraries_003f" href="#How-do-I-make-pkg_002dconfig-find-my-libraries_003f">2.3 How do I make <code>pkg-config</code> find my libraries?</a></li>
|
||||
<li><a name="toc-How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f" href="#How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f">2.4 How do I use <code>pkg-config</code> when cross-compiling?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Usage" href="#Usage">3 Usage</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-ffmpeg-does-not-work_003b-what-is-wrong_003f" href="#ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></li>
|
||||
<li><a name="toc-How-do-I-encode-single-pictures-into-movies_003f" href="#How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></li>
|
||||
<li><a name="toc-How-do-I-encode-movie-to-single-pictures_003f" href="#How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></li>
|
||||
<li><a name="toc-Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f" href="#Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></li>
|
||||
<li><a name="toc-How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f" href="#How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">3.5 How can I read from the standard input or write to the standard output?</a></li>
|
||||
<li><a name="toc-_002df-jpeg-doesn_0027t-work_002e" href="#g_t_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn’t work.</a></li>
|
||||
<li><a name="toc-Why-can-I-not-change-the-frame-rate_003f" href="#Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></li>
|
||||
<li><a name="toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f" href="#How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></li>
|
||||
<li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></li>
|
||||
<li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></li>
|
||||
<li><a name="toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f" href="#Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></li>
|
||||
<li><a name="toc-How-can-I-read-DirectShow-files_003f" href="#How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></li>
|
||||
<li><a name="toc-How-can-I-join-video-files_003f" href="#How-can-I-join-video-files_003f">3.13 How can I join video files?</a></li>
|
||||
<li><a name="toc-How-can-I-concatenate-video-files_003f" href="#How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Concatenating-using-the-concat-filter" href="#Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em>filter</em></a></li>
|
||||
<li><a name="toc-Concatenating-using-the-concat-demuxer" href="#Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em>demuxer</em></a></li>
|
||||
<li><a name="toc-Concatenating-using-the-concat-protocol-_0028file-level_0029" href="#Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em>protocol</em> (file level)</a></li>
|
||||
<li><a name="toc-Concatenating-using-raw-audio-and-video" href="#Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e" href="#Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.15 Using ‘<samp>-f lavfi</samp>’, audio becomes mono for no apparent reason.</a></li>
|
||||
<li><a name="toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f" href="#Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.16 Why does FFmpeg not see the subtitles in my VOB file?</a></li>
|
||||
<li><a name="toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f" href="#Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.17 Why was the <code>ffmpeg</code> ‘<samp>-sameq</samp>’ option removed? What to use instead?</a></li>
|
||||
<li><a name="toc-I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f" href="#I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">3.18 I have a stretched video, why does scaling does not fix it?</a></li>
|
||||
<li><a name="toc-How-do-I-run-ffmpeg-as-a-background-task_003f" href="#How-do-I-run-ffmpeg-as-a-background-task_003f">3.19 How do I run ffmpeg as a background task?</a></li>
|
||||
<li><a name="toc-How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f" href="#How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">3.20 How do I prevent ffmpeg from suspending with a message like <em>suspended (tty output)</em>?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Development" href="#Development">4 Development</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f" href="#Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></li>
|
||||
<li><a name="toc-Can-you-support-my-C-compiler-XXX_003f" href="#Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></li>
|
||||
<li><a name="toc-Is-Microsoft-Visual-C_002b_002b-supported_003f" href="#Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></li>
|
||||
<li><a name="toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f" href="#Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></li>
|
||||
<li><a name="toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f" href="#Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></li>
|
||||
<li><a name="toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f" href="#Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></li>
|
||||
<li><a name="toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f" href="#I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></li>
|
||||
<li><a name="toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e" href="#I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></li>
|
||||
<li><a name="toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e" href="#I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></li>
|
||||
<li><a name="toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope" href="#I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</a></li>
|
||||
<li><a name="toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f" href="#I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></li>
|
||||
<li><a name="toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f" href="#Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></li>
|
||||
<li><a name="toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f" href="#How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></li>
|
||||
<li><a name="toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e" href="#AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></li>
|
||||
<li><a name="toc-Why-is-make-fate-not-running-all-tests_003f" href="#Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code>make fate</code> not running all tests?</a></li>
|
||||
<li><a name="toc-Why-is-make-fate-not-finding-the-samples_003f" href="#Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code>make fate</code> not finding the samples?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="General-Questions"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-General-Questions">1 General Questions</a></h1>
|
||||
|
||||
<a name="Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn’t FFmpeg support feature [xyz]?</a></h2>
|
||||
|
||||
<p>Because no one has taken on that task yet. FFmpeg development is
|
||||
driven by the tasks that are important to the individual developers.
|
||||
If there is a feature that is important to you, the best way to get
|
||||
it implemented is to undertake the task yourself or sponsor a developer.
|
||||
</p>
|
||||
<a name="FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></h2>
|
||||
|
||||
<p>No. Windows DLLs are not portable, bloated and often slow.
|
||||
Moreover FFmpeg strives to support all codecs natively.
|
||||
A DLL loader is not conducive to that goal.
|
||||
</p>
|
||||
<a name="I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></h2>
|
||||
|
||||
<p>Even if ffmpeg can read the container format, it may not support all its
|
||||
codecs. Please consult the supported codec list in the ffmpeg
|
||||
documentation.
|
||||
</p>
|
||||
<a name="Which-codecs-are-supported-by-Windows_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></h2>
|
||||
|
||||
<p>Windows does not support standard formats like MPEG very well, unless you
|
||||
install some additional codecs.
|
||||
</p>
|
||||
<p>The following list of video codecs should work on most Windows systems:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>msmpeg4v2</samp>’</dt>
|
||||
<dd><p>.avi/.asf
|
||||
</p></dd>
|
||||
<dt>‘<samp>msmpeg4</samp>’</dt>
|
||||
<dd><p>.asf only
|
||||
</p></dd>
|
||||
<dt>‘<samp>wmv1</samp>’</dt>
|
||||
<dd><p>.asf only
|
||||
</p></dd>
|
||||
<dt>‘<samp>wmv2</samp>’</dt>
|
||||
<dd><p>.asf only
|
||||
</p></dd>
|
||||
<dt>‘<samp>mpeg4</samp>’</dt>
|
||||
<dd><p>Only if you have some MPEG-4 codec like ffdshow or Xvid installed.
|
||||
</p></dd>
|
||||
<dt>‘<samp>mpeg1video</samp>’</dt>
|
||||
<dd><p>.mpg only
|
||||
</p></dd>
|
||||
</dl>
|
||||
<p>Note, ASF files often have .wmv or .wma extensions in Windows. It should also
|
||||
be mentioned that Microsoft claims a patent on the ASF format, and may sue
|
||||
or threaten users who create ASF files with non-Microsoft software. It is
|
||||
strongly advised to avoid ASF where possible.
|
||||
</p>
|
||||
<p>The following list of audio codecs should work on most Windows systems:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>adpcm_ima_wav</samp>’</dt>
|
||||
<dt>‘<samp>adpcm_ms</samp>’</dt>
|
||||
<dt>‘<samp>pcm_s16le</samp>’</dt>
|
||||
<dd><p>always
|
||||
</p></dd>
|
||||
<dt>‘<samp>libmp3lame</samp>’</dt>
|
||||
<dd><p>If some MP3 codec like LAME is installed.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<a name="Compilation"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-Compilation">2 Compilation</a></h1>
|
||||
|
||||
<a name="error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">2.1 <code>error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></h2>
|
||||
|
||||
<p>This is a bug in gcc. Do not report it to us. Instead, please report it to
|
||||
the gcc developers. Note that we will not add workarounds for gcc bugs.
|
||||
</p>
|
||||
<p>Also note that (some of) the gcc developers believe this is not a bug or
|
||||
not a bug they should fix:
|
||||
<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203</a>.
|
||||
Then again, some of them do not know the difference between an undecidable
|
||||
problem and an NP-hard problem...
|
||||
</p>
|
||||
<a name="I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro’s package manager. Why does <code>configure</code> not see it?</a></h2>
|
||||
|
||||
<p>Distributions usually split libraries in several packages. The main package
|
||||
contains the files necessary to run programs using the library. The
|
||||
development package contains the files necessary to build programs using the
|
||||
library. Sometimes, docs and/or data are in a separate package too.
|
||||
</p>
|
||||
<p>To build FFmpeg, you need to install the development package. It is usually
|
||||
called ‘<tt>libfoo-dev</tt>’ or ‘<tt>libfoo-devel</tt>’. You can remove it after the
|
||||
build is finished, but be sure to keep the main package.
|
||||
</p>
|
||||
<a name="How-do-I-make-pkg_002dconfig-find-my-libraries_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-make-pkg_002dconfig-find-my-libraries_003f">2.3 How do I make <code>pkg-config</code> find my libraries?</a></h2>
|
||||
|
||||
<p>Somewhere along with your libraries, there is a ‘<tt>.pc</tt>’ file (or several)
|
||||
in a ‘<tt>pkgconfig</tt>’ directory. You need to set environment variables to
|
||||
point <code>pkg-config</code> to these files.
|
||||
</p>
|
||||
<p>If you need to <em>add</em> directories to <code>pkg-config</code>’s search list
|
||||
(typical use case: library installed separately), add it to
|
||||
<code>$PKG_CONFIG_PATH</code>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">export PKG_CONFIG_PATH=/opt/x264/lib/pkgconfig:/opt/opus/lib/pkgconfig
|
||||
</pre></div>
|
||||
|
||||
<p>If you need to <em>replace</em> <code>pkg-config</code>’s search list
|
||||
(typical use case: cross-compiling), set it in
|
||||
<code>$PKG_CONFIG_LIBDIR</code>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">export PKG_CONFIG_LIBDIR=/home/me/cross/usr/lib/pkgconfig:/home/me/cross/usr/local/lib/pkgconfig
|
||||
</pre></div>
|
||||
|
||||
<p>If you need to know the library’s internal dependencies (typical use: static
|
||||
linking), add the <code>--static</code> option to <code>pkg-config</code>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">./configure --pkg-config-flags=--static
|
||||
</pre></div>
|
||||
|
||||
<a name="How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f">2.4 How do I use <code>pkg-config</code> when cross-compiling?</a></h2>
|
||||
|
||||
<p>The best way is to install <code>pkg-config</code> in your cross-compilation
|
||||
environment. It will automatically use the cross-compilation libraries.
|
||||
</p>
|
||||
<p>You can also use <code>pkg-config</code> from the host environment by
|
||||
specifying explicitly <code>--pkg-config=pkg-config</code> to <code>configure</code>.
|
||||
In that case, you must point <code>pkg-config</code> to the correct directories
|
||||
using the <code>PKG_CONFIG_LIBDIR</code>, as explained in the previous entry.
|
||||
</p>
|
||||
<p>As an intermediate solution, you can place in your cross-compilation
|
||||
environment a script that calls the host <code>pkg-config</code> with
|
||||
<code>PKG_CONFIG_LIBDIR</code> set. That script can look like that:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">#!/bin/sh
|
||||
PKG_CONFIG_LIBDIR=/path/to/cross/lib/pkgconfig
|
||||
export PKG_CONFIG_LIBDIR
|
||||
exec /usr/bin/pkg-config "$@"
|
||||
</pre></div>
|
||||
|
||||
<a name="Usage"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-Usage">3 Usage</a></h1>
|
||||
|
||||
<a name="ffmpeg-does-not-work_003b-what-is-wrong_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></h2>
|
||||
|
||||
<p>Try a <code>make distclean</code> in the ffmpeg source directory before the build.
|
||||
If this does not help see
|
||||
(<a href="https://ffmpeg.org/bugreports.html">https://ffmpeg.org/bugreports.html</a>).
|
||||
</p>
|
||||
<a name="How-do-I-encode-single-pictures-into-movies_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></h2>
|
||||
|
||||
<p>First, rename your pictures to follow a numerical sequence.
|
||||
For example, img1.jpg, img2.jpg, img3.jpg,...
|
||||
Then you may run:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
|
||||
</pre></div>
|
||||
|
||||
<p>Notice that ‘<samp>%d</samp>’ is replaced by the image number.
|
||||
</p>
|
||||
<p>‘<tt>img%03d.jpg</tt>’ means the sequence ‘<tt>img001.jpg</tt>’, ‘<tt>img002.jpg</tt>’, etc.
|
||||
</p>
|
||||
<p>Use the ‘<samp>-start_number</samp>’ option to declare a starting number for
|
||||
the sequence. This is useful if your sequence does not start with
|
||||
‘<tt>img001.jpg</tt>’ but is still in a numerical order. The following
|
||||
example will start with ‘<tt>img100.jpg</tt>’:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
|
||||
</pre></div>
|
||||
|
||||
<p>If you have large number of pictures to rename, you can use the
|
||||
following command to ease the burden. The command, using the bourne
|
||||
shell syntax, symbolically links all files in the current directory
|
||||
that match <code>*jpg</code> to the ‘<tt>/tmp</tt>’ directory in the sequence of
|
||||
‘<tt>img001.jpg</tt>’, ‘<tt>img002.jpg</tt>’ and so on.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done
|
||||
</pre></div>
|
||||
|
||||
<p>If you want to sequence them by oldest modified first, substitute
|
||||
<code>$(ls -r -t *jpg)</code> in place of <code>*jpg</code>.
|
||||
</p>
|
||||
<p>Then run:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg
|
||||
</pre></div>
|
||||
|
||||
<p>The same logic is used for any image format that ffmpeg reads.
|
||||
</p>
|
||||
<p>You can also use <code>cat</code> to pipe images to ffmpeg:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">cat *.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.mpg
|
||||
</pre></div>
|
||||
|
||||
<a name="How-do-I-encode-movie-to-single-pictures_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></h2>
|
||||
|
||||
<p>Use:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i movie.mpg movie%d.jpg
|
||||
</pre></div>
|
||||
|
||||
<p>The ‘<tt>movie.mpg</tt>’ used as input will be converted to
|
||||
‘<tt>movie1.jpg</tt>’, ‘<tt>movie2.jpg</tt>’, etc...
|
||||
</p>
|
||||
<p>Instead of relying on file format self-recognition, you may also use
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>-c:v ppm</samp>’</dt>
|
||||
<dt>‘<samp>-c:v png</samp>’</dt>
|
||||
<dt>‘<samp>-c:v mjpeg</samp>’</dt>
|
||||
</dl>
|
||||
<p>to force the encoding.
|
||||
</p>
|
||||
<p>Applying that to the previous example:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i movie.mpg -f image2 -c:v mjpeg menu%d.jpg
|
||||
</pre></div>
|
||||
|
||||
<p>Beware that there is no "jpeg" codec. Use "mjpeg" instead.
|
||||
</p>
|
||||
<a name="Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></h2>
|
||||
|
||||
<p>For multithreaded MPEG* encoding, the encoded slices must be independent,
|
||||
otherwise thread n would practically have to wait for n-1 to finish, so it’s
|
||||
quite logical that there is a small reduction of quality. This is not a bug.
|
||||
</p>
|
||||
<a name="How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">3.5 How can I read from the standard input or write to the standard output?</a></h2>
|
||||
|
||||
<p>Use ‘<tt>-</tt>’ as file name.
|
||||
</p>
|
||||
<a name="g_t_002df-jpeg-doesn_0027t-work_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn’t work.</a></h2>
|
||||
|
||||
<p>Try ’-f image2 test%d.jpg’.
|
||||
</p>
|
||||
<a name="Why-can-I-not-change-the-frame-rate_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></h2>
|
||||
|
||||
<p>Some codecs, like MPEG-1/2, only allow a small number of fixed frame rates.
|
||||
Choose a different codec with the -c:v command line option.
|
||||
</p>
|
||||
<a name="How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></h2>
|
||||
|
||||
<p>Both Xvid and DivX (version 4+) are implementations of the ISO MPEG-4
|
||||
standard (note that there are many other coding formats that use this
|
||||
same standard). Thus, use ’-c:v mpeg4’ to encode in these formats. The
|
||||
default fourcc stored in an MPEG-4-coded file will be ’FMP4’. If you want
|
||||
a different fourcc, use the ’-vtag’ option. E.g., ’-vtag xvid’ will
|
||||
force the fourcc ’xvid’ to be stored as the video fourcc rather than the
|
||||
default.
|
||||
</p>
|
||||
<a name="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></h2>
|
||||
|
||||
<p>’-mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2’,
|
||||
things to try: ’-bf 2’, ’-flags qprd’, ’-flags mv0’, ’-flags skiprd’.
|
||||
</p>
|
||||
<a name="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></h2>
|
||||
|
||||
<p>’-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2’
|
||||
but beware the ’-g 100’ might cause problems with some decoders.
|
||||
Things to try: ’-bf 2’, ’-flags qprd’, ’-flags mv0’, ’-flags skiprd.
|
||||
</p>
|
||||
<a name="Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></h2>
|
||||
|
||||
<p>You should use ’-flags +ilme+ildct’ and maybe ’-flags +alt’ for interlaced
|
||||
material, and try ’-top 0/1’ if the result looks really messed-up.
|
||||
</p>
|
||||
<a name="How-can-I-read-DirectShow-files_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></h2>
|
||||
|
||||
<p>If you have built FFmpeg with <code>./configure --enable-avisynth</code>
|
||||
(only possible on MinGW/Cygwin platforms),
|
||||
then you may use any file that DirectShow can read as input.
|
||||
</p>
|
||||
<p>Just create an "input.avs" text file with this single line ...
|
||||
</p><div class="example">
|
||||
<pre class="example">DirectShowSource("C:\path to your file\yourfile.asf")
|
||||
</pre></div>
|
||||
<p>... and then feed that text file to ffmpeg:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i input.avs
|
||||
</pre></div>
|
||||
|
||||
<p>For ANY other help on AviSynth, please visit the
|
||||
<a href="http://www.avisynth.org/">AviSynth homepage</a>.
|
||||
</p>
|
||||
<a name="How-can-I-join-video-files_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-join-video-files_003f">3.13 How can I join video files?</a></h2>
|
||||
|
||||
<p>To "join" video files is quite ambiguous. The following list explains the
|
||||
different kinds of "joining" and points out how those are addressed in
|
||||
FFmpeg. To join video files may mean:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
To put them one after the other: this is called to <em>concatenate</em> them
|
||||
(in short: concat) and is addressed
|
||||
<a href="#How-can-I-concatenate-video-files">in this very faq</a>.
|
||||
|
||||
</li><li>
|
||||
To put them together in the same file, to let the user choose between the
|
||||
different versions (example: different audio languages): this is called to
|
||||
<em>multiplex</em> them together (in short: mux), and is done by simply
|
||||
invoking ffmpeg with several ‘<samp>-i</samp>’ options.
|
||||
|
||||
</li><li>
|
||||
For audio, to put all channels together in a single stream (example: two
|
||||
mono streams into one stereo stream): this is sometimes called to
|
||||
<em>merge</em> them, and can be done using the
|
||||
<a href="ffmpeg-filters.html#amerge"><code>amerge</code></a> filter.
|
||||
|
||||
</li><li>
|
||||
For audio, to play one on top of the other: this is called to <em>mix</em>
|
||||
them, and can be done by first merging them into a single stream and then
|
||||
using the <a href="ffmpeg-filters.html#pan"><code>pan</code></a> filter to mix
|
||||
the channels at will.
|
||||
|
||||
</li><li>
|
||||
For video, to display both together, side by side or one on top of a part of
|
||||
the other; it can be done using the
|
||||
<a href="ffmpeg-filters.html#overlay"><code>overlay</code></a> video filter.
|
||||
|
||||
</li></ul>
|
||||
|
||||
<p><a name="How-can-I-concatenate-video-files"></a>
|
||||
</p><a name="How-can-I-concatenate-video-files_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a></h2>
|
||||
|
||||
<p>There are several solutions, depending on the exact circumstances.
|
||||
</p>
|
||||
<a name="Concatenating-using-the-concat-filter"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em>filter</em></a></h3>
|
||||
|
||||
<p>FFmpeg has a <a href="ffmpeg-filters.html#concat"><code>concat</code></a> filter designed specifically for that, with examples in the
|
||||
documentation. This operation is recommended if you need to re-encode.
|
||||
</p>
|
||||
<a name="Concatenating-using-the-concat-demuxer"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em>demuxer</em></a></h3>
|
||||
|
||||
<p>FFmpeg has a <a href="ffmpeg-formats.html#concat"><code>concat</code></a> demuxer which you can use when you want to avoid a re-encode and
|
||||
your format doesn’t support file level concatenation.
|
||||
</p>
|
||||
<a name="Concatenating-using-the-concat-protocol-_0028file-level_0029"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em>protocol</em> (file level)</a></h3>
|
||||
|
||||
<p>FFmpeg has a <a href="ffmpeg-protocols.html#concat"><code>concat</code></a> protocol designed specifically for that, with examples in the
|
||||
documentation.
|
||||
</p>
|
||||
<p>A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow one to concatenate
|
||||
video by merely concatenating the files containing them.
|
||||
</p>
|
||||
<p>Hence you may concatenate your multimedia files by first transcoding them to
|
||||
these privileged formats, then using the humble <code>cat</code> command (or the
|
||||
equally humble <code>copy</code> under Windows), and finally transcoding back to your
|
||||
format of choice.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
|
||||
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
|
||||
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
|
||||
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
|
||||
</pre></div>
|
||||
|
||||
<p>Additionally, you can use the <code>concat</code> protocol instead of <code>cat</code> or
|
||||
<code>copy</code> which will avoid creation of a potentially huge intermediate file.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
|
||||
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
|
||||
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
|
||||
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
|
||||
</pre></div>
|
||||
|
||||
<p>Note that you may need to escape the character "|" which is special for many
|
||||
shells.
|
||||
</p>
|
||||
<p>Another option is usage of named pipes, should your platform support it:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">mkfifo intermediate1.mpg
|
||||
mkfifo intermediate2.mpg
|
||||
ffmpeg -i input1.avi -qscale:v 1 -y intermediate1.mpg < /dev/null &
|
||||
ffmpeg -i input2.avi -qscale:v 1 -y intermediate2.mpg < /dev/null &
|
||||
cat intermediate1.mpg intermediate2.mpg |\
|
||||
ffmpeg -f mpeg -i - -c:v mpeg4 -c:a libmp3lame output.avi
|
||||
</pre></div>
|
||||
|
||||
<a name="Concatenating-using-raw-audio-and-video"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></h3>
|
||||
|
||||
<p>Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also
|
||||
allow concatenation, and the transcoding step is almost lossless.
|
||||
When using multiple yuv4mpegpipe(s), the first line needs to be discarded
|
||||
from all but the first stream. This can be accomplished by piping through
|
||||
<code>tail</code> as seen below. Note that when piping through <code>tail</code> you
|
||||
must use command grouping, <code>{ ;}</code>, to background properly.
|
||||
</p>
|
||||
<p>For example, let’s say we want to concatenate two FLV files into an
|
||||
output.flv file:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">mkfifo temp1.a
|
||||
mkfifo temp1.v
|
||||
mkfifo temp2.a
|
||||
mkfifo temp2.v
|
||||
mkfifo all.a
|
||||
mkfifo all.v
|
||||
ffmpeg -i input1.flv -vn -f u16le -c:a pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
|
||||
ffmpeg -i input2.flv -vn -f u16le -c:a pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
|
||||
ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
|
||||
{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; } &
|
||||
cat temp1.a temp2.a > all.a &
|
||||
cat temp1.v temp2.v > all.v &
|
||||
ffmpeg -f u16le -c:a pcm_s16le -ac 2 -ar 44100 -i all.a \
|
||||
-f yuv4mpegpipe -i all.v \
|
||||
-y output.flv
|
||||
rm temp[12].[av] all.[av]
|
||||
</pre></div>
|
||||
|
||||
<a name="Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.15 Using ‘<samp>-f lavfi</samp>’, audio becomes mono for no apparent reason.</a></h2>
|
||||
|
||||
<p>Use ‘<samp>-dumpgraph -</samp>’ to find out exactly where the channel layout is
|
||||
lost.
|
||||
</p>
|
||||
<p>Most likely, it is through <code>auto-inserted aresample</code>. Try to understand
|
||||
why the converting filter was needed at that place.
|
||||
</p>
|
||||
<p>Just before the output is a likely place, as ‘<samp>-f lavfi</samp>’ currently
|
||||
only support packed S16.
|
||||
</p>
|
||||
<p>Then insert the correct <code>aformat</code> explicitly in the filtergraph,
|
||||
specifying the exact format.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">aformat=sample_fmts=s16:channel_layouts=stereo
|
||||
</pre></div>
|
||||
|
||||
<a name="Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.16 Why does FFmpeg not see the subtitles in my VOB file?</a></h2>
|
||||
|
||||
<p>VOB and a few other formats do not have a global header that describes
|
||||
everything present in the file. Instead, applications are supposed to scan
|
||||
the file to see what it contains. Since VOB files are frequently large, only
|
||||
the beginning is scanned. If the subtitles happen only later in the file,
|
||||
they will not be initially detected.
|
||||
</p>
|
||||
<p>Some applications, including the <code>ffmpeg</code> command-line tool, can only
|
||||
work with streams that were detected during the initial scan; streams that
|
||||
are detected later are ignored.
|
||||
</p>
|
||||
<p>The size of the initial scan is controlled by two options: <code>probesize</code>
|
||||
(default ~5 Mo) and <code>analyzeduration</code> (default 5,000,000 µs = 5 s). For
|
||||
the subtitle stream to be detected, both values must be large enough.
|
||||
</p>
|
||||
<a name="Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.17 Why was the <code>ffmpeg</code> ‘<samp>-sameq</samp>’ option removed? What to use instead?</a></h2>
|
||||
|
||||
<p>The ‘<samp>-sameq</samp>’ option meant "same quantizer", and made sense only in a
|
||||
very limited set of cases. Unfortunately, a lot of people mistook it for
|
||||
"same quality" and used it in places where it did not make sense: it had
|
||||
roughly the expected visible effect, but achieved it in a very inefficient
|
||||
way.
|
||||
</p>
|
||||
<p>Each encoder has its own set of options to set the quality-vs-size balance,
|
||||
use the options for the encoder you are using to set the quality level to a
|
||||
point acceptable for your tastes. The most common options to do that are
|
||||
‘<samp>-qscale</samp>’ and ‘<samp>-qmax</samp>’, but you should peruse the documentation
|
||||
of the encoder you chose.
|
||||
</p>
|
||||
<a name="I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">3.18 I have a stretched video, why does scaling does not fix it?</a></h2>
|
||||
|
||||
<p>A lot of video codecs and formats can store the <em>aspect ratio</em> of the
|
||||
video: this is the ratio between the width and the height of either the full
|
||||
image (DAR, display aspect ratio) or individual pixels (SAR, sample aspect
|
||||
ratio). For example, EGA screens at resolution 640×350 had 4:3 DAR and 35:48
|
||||
SAR.
|
||||
</p>
|
||||
<p>Most still image processing work with square pixels, i.e. 1:1 SAR, but a lot
|
||||
of video standards, especially from the analogic-numeric transition era, use
|
||||
non-square pixels.
|
||||
</p>
|
||||
<p>Most processing filters in FFmpeg handle the aspect ratio to avoid
|
||||
stretching the image: cropping adjusts the DAR to keep the SAR constant,
|
||||
scaling adjusts the SAR to keep the DAR constant.
|
||||
</p>
|
||||
<p>If you want to stretch, or “unstretch”, the image, you need to override the
|
||||
information with the
|
||||
<a href="ffmpeg-filters.html#setdar_002c-setsar"><code>setdar or setsar filters</code></a>.
|
||||
</p>
|
||||
<p>Do not forget to examine carefully the original video to check whether the
|
||||
stretching comes from the image or from the aspect ratio information.
|
||||
</p>
|
||||
<p>For example, to fix a badly encoded EGA capture, use the following commands,
|
||||
either the first one to upscale to square pixels or the second one to set
|
||||
the correct aspect ratio or the third one to avoid transcoding (may not work
|
||||
depending on the format / codec / player / phase of the moon):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i ega_screen.nut -vf scale=640:480,setsar=1 ega_screen_scaled.nut
|
||||
ffmpeg -i ega_screen.nut -vf setdar=4/3 ega_screen_anamorphic.nut
|
||||
ffmpeg -i ega_screen.nut -aspect 4/3 -c copy ega_screen_overridden.nut
|
||||
</pre></div>
|
||||
|
||||
<p><a name="background-task"></a>
|
||||
</p><a name="How-do-I-run-ffmpeg-as-a-background-task_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-run-ffmpeg-as-a-background-task_003f">3.19 How do I run ffmpeg as a background task?</a></h2>
|
||||
|
||||
<p>ffmpeg normally checks the console input, for entries like "q" to stop
|
||||
and "?" to give help, while performing operations. ffmpeg does not have a way of
|
||||
detecting when it is running as a background task.
|
||||
When it checks the console input, that can cause the process running ffmpeg
|
||||
in the background to suspend.
|
||||
</p>
|
||||
<p>To prevent those input checks, allowing ffmpeg to run as a background task,
|
||||
use the <a href="ffmpeg.html#stdin-option"><code>-nostdin</code> option</a>
|
||||
in the ffmpeg invocation. This is effective whether you run ffmpeg in a shell
|
||||
or invoke ffmpeg in its own process via an operating system API.
|
||||
</p>
|
||||
<p>As an alternative, when you are running ffmpeg in a shell, you can redirect
|
||||
standard input to <code>/dev/null</code> (on Linux and Mac OS)
|
||||
or <code>NUL</code> (on Windows). You can do this redirect either
|
||||
on the ffmpeg invocation, or from a shell script which calls ffmpeg.
|
||||
</p>
|
||||
<p>For example:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -nostdin -i INPUT OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<p>or (on Linux, Mac OS, and other UNIX-like shells):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT OUTPUT </dev/null
|
||||
</pre></div>
|
||||
|
||||
<p>or (on Windows):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT OUTPUT <NUL
|
||||
</pre></div>
|
||||
|
||||
<a name="How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">3.20 How do I prevent ffmpeg from suspending with a message like <em>suspended (tty output)</em>?</a></h2>
|
||||
|
||||
<p>If you run ffmpeg in the background, you may find that its process suspends.
|
||||
There may be a message like <em>suspended (tty output)</em>. The question is how
|
||||
to prevent the process from being suspended.
|
||||
</p>
|
||||
<p>For example:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">% ffmpeg -i INPUT OUTPUT &> ~/tmp/log.txt &
|
||||
[1] 93352
|
||||
%
|
||||
[1] + suspended (tty output) ffmpeg -i INPUT OUTPUT &>
|
||||
</pre></div>
|
||||
|
||||
<p>The message "tty output" notwithstanding, the problem here is that
|
||||
ffmpeg normally checks the console input when it runs. The operating system
|
||||
detects this, and suspends the process until you can bring it to the
|
||||
foreground and attend to it.
|
||||
</p>
|
||||
<p>The solution is to use the right techniques to tell ffmpeg not to consult
|
||||
console input. You can use the
|
||||
<a href="ffmpeg.html#stdin-option"><code>-nostdin</code> option</a>,
|
||||
or redirect standard input with <code>< /dev/null</code>.
|
||||
See FAQ
|
||||
<a href="#background-task"><em>How do I run ffmpeg as a background task?</em></a>
|
||||
for details.
|
||||
</p>
|
||||
<a name="Development"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-Development">4 Development</a></h1>
|
||||
|
||||
<a name="Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></h2>
|
||||
|
||||
<p>Yes. Check the ‘<tt>doc/examples</tt>’ directory in the source
|
||||
repository, also available online at:
|
||||
<a href="https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples">https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples</a>.
|
||||
</p>
|
||||
<p>Examples are also installed by default, usually in
|
||||
<code>$PREFIX/share/ffmpeg/examples</code>.
|
||||
</p>
|
||||
<p>Also you may read the Developers Guide of the FFmpeg documentation. Alternatively,
|
||||
examine the source code for one of the many open source projects that
|
||||
already incorporate FFmpeg at (<a href="projects.html">projects.html</a>).
|
||||
</p>
|
||||
<a name="Can-you-support-my-C-compiler-XXX_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></h2>
|
||||
|
||||
<p>It depends. If your compiler is C99-compliant, then patches to support
|
||||
it are likely to be welcome if they do not pollute the source code
|
||||
with <code>#ifdef</code>s related to the compiler.
|
||||
</p>
|
||||
<a name="Is-Microsoft-Visual-C_002b_002b-supported_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></h2>
|
||||
|
||||
<p>Yes. Please see the <a href="platform.html">Microsoft Visual C++</a>
|
||||
section in the FFmpeg documentation.
|
||||
</p>
|
||||
<a name="Can-you-add-automake_002c-libtool-or-autoconf-support_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></h2>
|
||||
|
||||
<p>No. These tools are too bloated and they complicate the build.
|
||||
</p>
|
||||
<a name="Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></h2>
|
||||
|
||||
<p>FFmpeg is already organized in a highly modular manner and does not need to
|
||||
be rewritten in a formal object language. Further, many of the developers
|
||||
favor straight C; it works for them. For more arguments on this matter,
|
||||
read <a href="http://www.tux.org/lkml/#s15">"Programming Religion"</a>.
|
||||
</p>
|
||||
<a name="Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></h2>
|
||||
|
||||
<p>The build process creates <code>ffmpeg_g</code>, <code>ffplay_g</code>, etc. which
|
||||
contain full debug information. Those binaries are stripped to create
|
||||
<code>ffmpeg</code>, <code>ffplay</code>, etc. If you need the debug information, use
|
||||
the *_g versions.
|
||||
</p>
|
||||
<a name="I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></h2>
|
||||
|
||||
<p>Yes, as long as the code is optional and can easily and cleanly be placed
|
||||
under #if CONFIG_GPL without breaking anything. So, for example, a new codec
|
||||
or filter would be OK under GPL while a bug fix to LGPL code would not.
|
||||
</p>
|
||||
<a name="I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></h2>
|
||||
|
||||
<p>FFmpeg builds static libraries by default. In static libraries, dependencies
|
||||
are not handled. That has two consequences. First, you must specify the
|
||||
libraries in dependency order: <code>-lavdevice</code> must come before
|
||||
<code>-lavformat</code>, <code>-lavutil</code> must come after everything else, etc.
|
||||
Second, external libraries that are used in FFmpeg have to be specified too.
|
||||
</p>
|
||||
<p>An easy way to get the full list of required libraries in dependency order
|
||||
is to use <code>pkg-config</code>.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">c99 -o program program.c $(pkg-config --cflags --libs libavformat libavcodec)
|
||||
</pre></div>
|
||||
|
||||
<p>See ‘<tt>doc/example/Makefile</tt>’ and ‘<tt>doc/example/pc-uninstalled</tt>’ for
|
||||
more details.
|
||||
</p>
|
||||
<a name="I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></h2>
|
||||
|
||||
<p>FFmpeg is a pure C project, so to use the libraries within your C++ application
|
||||
you need to explicitly state that you are using a C library. You can do this by
|
||||
encompassing your FFmpeg includes using <code>extern "C"</code>.
|
||||
</p>
|
||||
<p>See <a href="http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3">http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3</a>
|
||||
</p>
|
||||
<a name="I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</a></h2>
|
||||
|
||||
<p>FFmpeg is a pure C project using C99 math features, in order to enable C++
|
||||
to use them you have to append -D__STDC_CONSTANT_MACROS to your CXXFLAGS
|
||||
</p>
|
||||
<a name="I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></h2>
|
||||
|
||||
<p>You have to create a custom AVIOContext using <code>avio_alloc_context</code>,
|
||||
see ‘<tt>libavformat/aviobuf.c</tt>’ in FFmpeg and ‘<tt>libmpdemux/demux_lavf.c</tt>’ in MPlayer or MPlayer2 sources.
|
||||
</p>
|
||||
<a name="Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></h2>
|
||||
|
||||
<p>see <a href="https://www.ffmpeg.org/~michael/">https://www.ffmpeg.org/~michael/</a>
|
||||
</p>
|
||||
<a name="How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></h2>
|
||||
|
||||
<p>Even if peculiar since it is network oriented, RTP is a container like any
|
||||
other. You have to <em>demux</em> RTP before feeding the payload to libavcodec.
|
||||
In this specific case please look at RFC 4629 to see how it should be done.
|
||||
</p>
|
||||
<a name="AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></h2>
|
||||
|
||||
<p><code>r_frame_rate</code> is NOT the average frame rate, it is the smallest frame rate
|
||||
that can accurately represent all timestamps. So no, it is not
|
||||
wrong if it is larger than the average!
|
||||
For example, if you have mixed 25 and 30 fps content, then <code>r_frame_rate</code>
|
||||
will be 150 (it is the least common multiple).
|
||||
If you are looking for the average frame rate, see <code>AVStream.avg_frame_rate</code>.
|
||||
</p>
|
||||
<a name="Why-is-make-fate-not-running-all-tests_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code>make fate</code> not running all tests?</a></h2>
|
||||
|
||||
<p>Make sure you have the fate-suite samples and the <code>SAMPLES</code> Make variable
|
||||
or <code>FATE_SAMPLES</code> environment variable or the <code>--samples</code>
|
||||
<code>configure</code> option is set to the right path.
|
||||
</p>
|
||||
<a name="Why-is-make-fate-not-finding-the-samples_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code>make fate</code> not finding the samples?</a></h2>
|
||||
|
||||
<p>Do you happen to have a <code>~</code> character in the samples path to indicate a
|
||||
home directory? The value is used in ways where the shell cannot expand it,
|
||||
causing FATE to not find files. Just replace <code>~</code> by the full path.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,327 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Automated Testing Environment: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Automated Testing Environment: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Automated Testing Environment</h1>
|
||||
<hr>
|
||||
<a name="Top"></a>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
||||
<li><a name="toc-Using-FATE-from-your-FFmpeg-source-directory" href="#Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></li>
|
||||
<li><a name="toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server" href="#Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></li>
|
||||
<li><a name="toc-Uploading-new-samples-to-the-fate-suite" href="#Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></li>
|
||||
<li><a name="toc-FATE-makefile-targets-and-variables" href="#FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Makefile-targets" href="#Makefile-targets">5.1 Makefile targets</a></li>
|
||||
<li><a name="toc-Makefile-variables" href="#Makefile-variables">5.2 Makefile variables</a></li>
|
||||
<li><a name="toc-Examples" href="#Examples">5.3 Examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Introduction"></a>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Introduction">1 Introduction</a></h1>
|
||||
|
||||
<p>FATE is an extended regression suite on the client-side and a means
|
||||
for results aggregation and presentation on the server-side.
|
||||
</p>
|
||||
<p>The first part of this document explains how you can use FATE from
|
||||
your FFmpeg source directory to test your ffmpeg binary. The second
|
||||
part describes how you can run FATE to submit the results to FFmpeg’s
|
||||
FATE server.
|
||||
</p>
|
||||
<p>In any way you can have a look at the publicly viewable FATE results
|
||||
by visiting this website:
|
||||
</p>
|
||||
<p><a href="http://fate.ffmpeg.org/">http://fate.ffmpeg.org/</a>
|
||||
</p>
|
||||
<p>This is especially recommended for all people contributing source
|
||||
code to FFmpeg, as it can be seen if some test on some platform broke
|
||||
with their recent contribution. This usually happens on the platforms
|
||||
the developers could not test on.
|
||||
</p>
|
||||
<p>The second part of this document describes how you can run FATE to
|
||||
submit your results to FFmpeg’s FATE server. If you want to submit your
|
||||
results be sure to check that your combination of CPU, OS and compiler
|
||||
is not already listed on the above mentioned website.
|
||||
</p>
|
||||
<p>In the third part you can find a comprehensive listing of FATE makefile
|
||||
targets and variables.
|
||||
</p>
|
||||
|
||||
<a name="Using-FATE-from-your-FFmpeg-source-directory"></a>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></h1>
|
||||
|
||||
<p>If you want to run FATE on your machine you need to have the samples
|
||||
in place. You can get the samples via the build target fate-rsync.
|
||||
Use this command from the top-level source directory:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">make fate-rsync SAMPLES=fate-suite/
|
||||
make fate SAMPLES=fate-suite/
|
||||
</pre></div>
|
||||
|
||||
<p>The above commands set the samples location by passing a makefile
|
||||
variable via command line. It is also possible to set the samples
|
||||
location at source configuration time by invoking configure with
|
||||
‘<samp>--samples=<path to the samples directory></samp>’. Afterwards you can
|
||||
invoke the makefile targets without setting the <var>SAMPLES</var> makefile
|
||||
variable. This is illustrated by the following commands:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">./configure --samples=fate-suite/
|
||||
make fate-rsync
|
||||
make fate
|
||||
</pre></div>
|
||||
|
||||
<p>Yet another way to tell FATE about the location of the sample
|
||||
directory is by making sure the environment variable FATE_SAMPLES
|
||||
contains the path to your samples directory. This can be achieved
|
||||
by e.g. putting that variable in your shell profile or by setting
|
||||
it in your interactive session.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">FATE_SAMPLES=fate-suite/ make fate
|
||||
</pre></div>
|
||||
|
||||
<div class="float alert alert-info">
|
||||
<p>Do not put a ’~’ character in the samples path to indicate a home
|
||||
directory. Because of shell nuances, this will cause FATE to fail.
|
||||
</p></div>
|
||||
<p>To use a custom wrapper to run the test, pass ‘<samp>--target-exec</samp>’ to
|
||||
<code>configure</code> or set the <var>TARGET_EXEC</var> Make variable.
|
||||
</p>
|
||||
|
||||
<a name="Submitting-the-results-to-the-FFmpeg-result-aggregation-server"></a>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></h1>
|
||||
|
||||
<p>To submit your results to the server you should run fate through the
|
||||
shell script ‘<tt>tests/fate.sh</tt>’ from the FFmpeg sources. This script needs
|
||||
to be invoked with a configuration file as its first argument.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">tests/fate.sh /path/to/fate_config
|
||||
</pre></div>
|
||||
|
||||
<p>A configuration file template with comments describing the individual
|
||||
configuration variables can be found at ‘<tt>doc/fate_config.sh.template</tt>’.
|
||||
</p>
|
||||
<p>The mentioned configuration template is also available here:
|
||||
</p><pre class="verbatim">slot= # some unique identifier
|
||||
repo=git://source.ffmpeg.org/ffmpeg.git # the source repository
|
||||
#branch=release/2.6 # the branch to test
|
||||
samples= # path to samples directory
|
||||
workdir= # directory in which to do all the work
|
||||
#fate_recv="ssh -T fate@fate.ffmpeg.org" # command to submit report
|
||||
comment= # optional description
|
||||
build_only= # set to "yes" for a compile-only instance that skips tests
|
||||
ignore_tests=
|
||||
|
||||
# the following are optional and map to configure options
|
||||
arch=
|
||||
cpu=
|
||||
cross_prefix=
|
||||
as=
|
||||
cc=
|
||||
ld=
|
||||
target_os=
|
||||
sysroot=
|
||||
target_exec=
|
||||
target_path=
|
||||
target_samples=
|
||||
extra_cflags=
|
||||
extra_ldflags=
|
||||
extra_libs=
|
||||
extra_conf= # extra configure options not covered above
|
||||
|
||||
#make= # name of GNU make if not 'make'
|
||||
makeopts= # extra options passed to 'make'
|
||||
#makeopts_fate= # extra options passed to 'make' when running tests,
|
||||
# defaulting to makeopts above if this is not set
|
||||
#tar= # command to create a tar archive from its arguments on stdout,
|
||||
# defaults to 'tar c'
|
||||
</pre>
|
||||
<p>Create a configuration that suits your needs, based on the configuration
|
||||
template. The <code>slot</code> configuration variable can be any string that is not
|
||||
yet used, but it is suggested that you name it adhering to the following
|
||||
pattern ‘<samp><var>arch</var>-<var>os</var>-<var>compiler</var>-<var>compiler version</var></samp>’. The
|
||||
configuration file itself will be sourced in a shell script, therefore all
|
||||
shell features may be used. This enables you to setup the environment as you
|
||||
need it for your build.
|
||||
</p>
|
||||
<p>For your first test runs the <code>fate_recv</code> variable should be empty or
|
||||
commented out. This will run everything as normal except that it will omit
|
||||
the submission of the results to the server. The following files should be
|
||||
present in $workdir as specified in the configuration file:
|
||||
</p>
|
||||
<ul>
|
||||
<li> configure.log
|
||||
</li><li> compile.log
|
||||
</li><li> test.log
|
||||
</li><li> report
|
||||
</li><li> version
|
||||
</li></ul>
|
||||
|
||||
<p>When you have everything working properly you can create an SSH key pair
|
||||
and send the public key to the FATE server administrator who can be contacted
|
||||
at the email address <a href="mailto:fate-admin@ffmpeg.org">fate-admin@ffmpeg.org</a>.
|
||||
</p>
|
||||
<p>Configure your SSH client to use public key authentication with that key
|
||||
when connecting to the FATE server. Also do not forget to check the identity
|
||||
of the server and to accept its host key. This can usually be achieved by
|
||||
running your SSH client manually and killing it after you accepted the key.
|
||||
The FATE server’s fingerprint is:
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>RSA</samp>’</dt>
|
||||
<dd><p> d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51
|
||||
</p></dd>
|
||||
<dt>‘<samp>ECDSA</samp>’</dt>
|
||||
<dd><p> 76:9f:68:32:04:1e:d5:d4:ec:47:3f:dc:fc:18:17:86
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>If you have problems connecting to the FATE server, it may help to try out
|
||||
the <code>ssh</code> command with one or more ‘<samp>-v</samp>’ options. You should
|
||||
get detailed output concerning your SSH configuration and the authentication
|
||||
process.
|
||||
</p>
|
||||
<p>The only thing left is to automate the execution of the fate.sh script and
|
||||
the synchronisation of the samples directory.
|
||||
</p>
|
||||
<a name="Uploading-new-samples-to-the-fate-suite"></a>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></h1>
|
||||
|
||||
<p>This is for developers who have an account on the fate suite server.
|
||||
If you upload new samples, please make sure they are as small as possible,
|
||||
space on each client, network bandwidth and so on benefit from smaller test cases.
|
||||
Also keep in mind older checkouts use existing sample files, that means in
|
||||
practice generally do not replace, remove or overwrite files as it likely would
|
||||
break older checkouts or releases.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">#First update your local samples copy:
|
||||
rsync -vauL --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X fate-suite.ffmpeg.org:/home/samples/fate-suite/ ~/fate-suite
|
||||
|
||||
#Then do a dry run checking what would be uploaded:
|
||||
rsync -vanL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
|
||||
|
||||
#Upload the files:
|
||||
rsync -vaL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
|
||||
</pre></div>
|
||||
|
||||
|
||||
<a name="FATE-makefile-targets-and-variables"></a>
|
||||
<h1 class="chapter"><a href="fate.html#toc-FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a></h1>
|
||||
|
||||
<a name="Makefile-targets"></a>
|
||||
<h2 class="section"><a href="fate.html#toc-Makefile-targets">5.1 Makefile targets</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>fate-rsync</samp>’</dt>
|
||||
<dd><p>Download/synchronize sample files to the configured samples directory.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>fate-list</samp>’</dt>
|
||||
<dd><p>Will list all fate/regression test targets.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>fate</samp>’</dt>
|
||||
<dd><p>Run the FATE test suite (requires the fate-suite dataset).
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="Makefile-variables"></a>
|
||||
<h2 class="section"><a href="fate.html#toc-Makefile-variables">5.2 Makefile variables</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt><code>V</code></dt>
|
||||
<dd><p>Verbosity level, can be set to 0, 1 or 2.
|
||||
</p><ul>
|
||||
<li> 0: show just the test arguments
|
||||
</li><li> 1: show just the command used in the test
|
||||
</li><li> 2: show everything
|
||||
</li></ul>
|
||||
|
||||
</dd>
|
||||
<dt><code>SAMPLES</code></dt>
|
||||
<dd><p>Specify or override the path to the FATE samples at make time, it has a
|
||||
meaning only while running the regression tests.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>THREADS</code></dt>
|
||||
<dd><p>Specify how many threads to use while running regression tests, it is
|
||||
quite useful to detect thread-related regressions.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>THREAD_TYPE</code></dt>
|
||||
<dd><p>Specify which threading strategy test, either ‘<samp>slice</samp>’ or ‘<samp>frame</samp>’,
|
||||
by default ‘<samp>slice+frame</samp>’
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>CPUFLAGS</code></dt>
|
||||
<dd><p>Specify CPU flags.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>TARGET_EXEC</code></dt>
|
||||
<dd><p>Specify or override the wrapper used to run the tests.
|
||||
The <code>TARGET_EXEC</code> option provides a way to run FATE wrapped in
|
||||
<code>valgrind</code>, <code>qemu-user</code> or <code>wine</code> or on remote targets
|
||||
through <code>ssh</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>GEN</code></dt>
|
||||
<dd><p>Set to ‘<samp>1</samp>’ to generate the missing or mismatched references.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>HWACCEL</code></dt>
|
||||
<dd><p>Specify which hardware acceleration to use while running regression tests,
|
||||
by default ‘<samp>none</samp>’ is used.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="Examples"></a>
|
||||
<h2 class="section"><a href="fate.html#toc-Examples">5.3 Examples</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate
|
||||
</pre></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -1,700 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Bitstream Filters Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Bitstream Filters ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Bitstream Filters Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">2 Bitstream Filters</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">2.1 aac_adtstoasc</a></li>
|
||||
<li><a name="toc-chomp" href="#chomp">2.2 chomp</a></li>
|
||||
<li><a name="toc-dca_005fcore" href="#dca_005fcore">2.3 dca_core</a></li>
|
||||
<li><a name="toc-dump_005fextra" href="#dump_005fextra">2.4 dump_extra</a></li>
|
||||
<li><a name="toc-eac3_005fcore" href="#eac3_005fcore">2.5 eac3_core</a></li>
|
||||
<li><a name="toc-extract_005fextradata" href="#extract_005fextradata">2.6 extract_extradata</a></li>
|
||||
<li><a name="toc-filter_005funits" href="#filter_005funits">2.7 filter_units</a></li>
|
||||
<li><a name="toc-hapqa_005fextract" href="#hapqa_005fextract">2.8 hapqa_extract</a></li>
|
||||
<li><a name="toc-h264_005fmetadata" href="#h264_005fmetadata">2.9 h264_metadata</a></li>
|
||||
<li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">2.10 h264_mp4toannexb</a></li>
|
||||
<li><a name="toc-h264_005fredundant_005fpps" href="#h264_005fredundant_005fpps">2.11 h264_redundant_pps</a></li>
|
||||
<li><a name="toc-hevc_005fmetadata" href="#hevc_005fmetadata">2.12 hevc_metadata</a></li>
|
||||
<li><a name="toc-hevc_005fmp4toannexb" href="#hevc_005fmp4toannexb">2.13 hevc_mp4toannexb</a></li>
|
||||
<li><a name="toc-imxdump" href="#imxdump">2.14 imxdump</a></li>
|
||||
<li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">2.15 mjpeg2jpeg</a></li>
|
||||
<li><a name="toc-mjpegadump" href="#mjpegadump">2.16 mjpegadump</a></li>
|
||||
<li><a name="toc-mov2textsub-1" href="#mov2textsub-1">2.17 mov2textsub</a></li>
|
||||
<li><a name="toc-mp3decomp" href="#mp3decomp">2.18 mp3decomp</a></li>
|
||||
<li><a name="toc-mpeg2_005fmetadata" href="#mpeg2_005fmetadata">2.19 mpeg2_metadata</a></li>
|
||||
<li><a name="toc-mpeg4_005funpack_005fbframes" href="#mpeg4_005funpack_005fbframes">2.20 mpeg4_unpack_bframes</a></li>
|
||||
<li><a name="toc-noise" href="#noise">2.21 noise</a></li>
|
||||
<li><a name="toc-null" href="#null">2.22 null</a></li>
|
||||
<li><a name="toc-remove_005fextra" href="#remove_005fextra">2.23 remove_extra</a></li>
|
||||
<li><a name="toc-text2movsub-1" href="#text2movsub-1">2.24 text2movsub</a></li>
|
||||
<li><a name="toc-trace_005fheaders" href="#trace_005fheaders">2.25 trace_headers</a></li>
|
||||
<li><a name="toc-vp9_005fsuperframe" href="#vp9_005fsuperframe">2.26 vp9_superframe</a></li>
|
||||
<li><a name="toc-vp9_005fsuperframe_005fsplit" href="#vp9_005fsuperframe_005fsplit">2.27 vp9_superframe_split</a></li>
|
||||
<li><a name="toc-vp9_005fraw_005freorder" href="#vp9_005fraw_005freorder">2.28 vp9_raw_reorder</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>This document describes the bitstream filters provided by the
|
||||
libavcodec library.
|
||||
</p>
|
||||
<p>A bitstream filter operates on the encoded stream data, and performs
|
||||
bitstream level modifications without performing decoding.
|
||||
</p>
|
||||
|
||||
<a name="Bitstream-Filters"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Bitstream-Filters">2 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>The ff* tools have a -bsf option applied per stream, taking a
|
||||
comma-separated list of filters, whose parameters follow the filter
|
||||
name after a ’=’.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<p>Below is a description of the currently available bitstream filters,
|
||||
with their parameters, if any.
|
||||
</p>
|
||||
<a name="aac_005fadtstoasc"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-aac_005fadtstoasc">2.1 aac_adtstoasc</a></h2>
|
||||
|
||||
<p>Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
|
||||
bitstream.
|
||||
</p>
|
||||
<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
|
||||
ADTS header and removes the ADTS header.
|
||||
</p>
|
||||
<p>This filter is required for example when copying an AAC stream from a
|
||||
raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or
|
||||
to MOV/MP4 files and related formats such as 3GP or M4A. Please note
|
||||
that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats.
|
||||
</p>
|
||||
<a name="chomp"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-chomp">2.2 chomp</a></h2>
|
||||
|
||||
<p>Remove zero padding at the end of a packet.
|
||||
</p>
|
||||
<a name="dca_005fcore"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dca_005fcore">2.3 dca_core</a></h2>
|
||||
|
||||
<p>Extract the core from a DCA/DTS stream, dropping extensions such as
|
||||
DTS-HD.
|
||||
</p>
|
||||
<a name="dump_005fextra"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dump_005fextra">2.4 dump_extra</a></h2>
|
||||
|
||||
<p>Add extradata to the beginning of the filtered packets.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>freq</samp>’</dt>
|
||||
<dd><p>The additional argument specifies which packets should be filtered.
|
||||
It accepts the values:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>k</samp>’</dt>
|
||||
<dt>‘<samp>keyframe</samp>’</dt>
|
||||
<dd><p>add extradata to all key packets
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>e</samp>’</dt>
|
||||
<dt>‘<samp>all</samp>’</dt>
|
||||
<dd><p>add extradata to all packets
|
||||
</p></dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>If not specified it is assumed ‘<samp>e</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><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
||||
</pre></div>
|
||||
|
||||
<a name="eac3_005fcore"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-eac3_005fcore">2.5 eac3_core</a></h2>
|
||||
|
||||
<p>Extract the core from a E-AC-3 stream, dropping extra channels.
|
||||
</p>
|
||||
<a name="extract_005fextradata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-extract_005fextradata">2.6 extract_extradata</a></h2>
|
||||
|
||||
<p>Extract the in-band extradata.
|
||||
</p>
|
||||
<p>Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers,
|
||||
or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part
|
||||
of the bitstream containing the coded frames) or "out of band" (e.g. on the
|
||||
container level). This latter form is called "extradata" in FFmpeg terminology.
|
||||
</p>
|
||||
<p>This bitstream filter detects the in-band headers and makes them available as
|
||||
extradata.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
<dd><p>When this option is enabled, the long-term headers are removed from the
|
||||
bitstream after extraction.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="filter_005funits"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-filter_005funits">2.7 filter_units</a></h2>
|
||||
|
||||
<p>Remove units with types in or not in a given set from the stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>pass_types</samp>’</dt>
|
||||
<dd><p>List of unit types or ranges of unit types to pass through while removing
|
||||
all others. This is specified as a ’|’-separated list of unit type values
|
||||
or ranges of values with ’-’.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>remove_types</samp>’</dt>
|
||||
<dd><p>Identical to ‘<samp>pass_types</samp>’, except the units in the given set
|
||||
removed and all others passed through.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>Extradata is unchanged by this transformation, but note that if the stream
|
||||
contains inline parameter sets then the output may be unusable if they are
|
||||
removed.
|
||||
</p>
|
||||
<p>For example, to remove all non-VCL NAL units from an H.264 stream:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<p>To remove all AUDs, SEI and filler from an H.265 stream:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<a name="hapqa_005fextract"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hapqa_005fextract">2.8 hapqa_extract</a></h2>
|
||||
|
||||
<p>Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>texture</samp>’</dt>
|
||||
<dd><p>Specifies the texture to keep.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>color</samp>’</dt>
|
||||
<dt>‘<samp>alpha</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>Convert HAPQA to HAPQ
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
|
||||
</pre></div>
|
||||
|
||||
<p>Convert HAPQA to HAPAlphaOnly
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
|
||||
</pre></div>
|
||||
|
||||
<a name="h264_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmetadata">2.9 h264_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an H.264 stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>aud</samp>’</dt>
|
||||
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>insert</samp>’</dt>
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>sample_aspect_ratio</samp>’</dt>
|
||||
<dd><p>Set the sample aspect ratio of the stream in the VUI parameters.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>video_format</samp>’</dt>
|
||||
<dt>‘<samp>video_full_range_flag</samp>’</dt>
|
||||
<dd><p>Set the video format in the stream (see H.264 section E.2.1 and
|
||||
table E-2).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>colour_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the colour description in the stream (see H.264 section E.2.1
|
||||
and tables E-3, E-4 and E-5).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>chroma_sample_loc_type</samp>’</dt>
|
||||
<dd><p>Set the chroma sample location in the stream (see H.264 section
|
||||
E.2.1 and figure E-1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>tick_rate</samp>’</dt>
|
||||
<dd><p>Set the tick rate (num_units_in_tick / time_scale) in the VUI
|
||||
parameters. This is the smallest time unit representable in the
|
||||
stream, and in many cases represents the field rate of the stream
|
||||
(double the frame rate).
|
||||
</p></dd>
|
||||
<dt>‘<samp>fixed_frame_rate_flag</samp>’</dt>
|
||||
<dd><p>Set whether the stream has fixed framerate - typically this indicates
|
||||
that the framerate is exactly half the tick rate, but the exact
|
||||
meaning is dependent on interlacing and the picture structure (see
|
||||
H.264 section E.2.1 and table E-6).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>crop_left</samp>’</dt>
|
||||
<dt>‘<samp>crop_right</samp>’</dt>
|
||||
<dt>‘<samp>crop_top</samp>’</dt>
|
||||
<dt>‘<samp>crop_bottom</samp>’</dt>
|
||||
<dd><p>Set the frame cropping offsets in the SPS. These values will replace
|
||||
the current ones if the stream is already cropped.
|
||||
</p>
|
||||
<p>These fields are set in pixels. Note that some sizes may not be
|
||||
representable if the chroma is subsampled or the stream is interlaced
|
||||
(see H.264 section 7.4.2.1.1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>sei_user_data</samp>’</dt>
|
||||
<dd><p>Insert a string as SEI unregistered user data. The argument must
|
||||
be of the form <em>UUID+string</em>, where the UUID is as hex digits
|
||||
possibly separated by hyphens, and the string can be anything.
|
||||
</p>
|
||||
<p>For example, ‘<samp>086f3693-b7b3-4f2c-9653-21492feee5b8+hello</samp>’ will
|
||||
insert the string “hello” associated with the given UUID.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>delete_filler</samp>’</dt>
|
||||
<dd><p>Deletes both filler NAL units and filler SEI messages.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="h264_005fmp4toannexb"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmp4toannexb">2.10 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 (muxer <code>mpegts</code>).
|
||||
</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>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
|
||||
</pre></div>
|
||||
|
||||
<p>Please note that this filter is auto-inserted for MPEG-TS (muxer
|
||||
<code>mpegts</code>) and raw H.264 (muxer <code>h264</code>) output formats.
|
||||
</p>
|
||||
<a name="h264_005fredundant_005fpps"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fredundant_005fpps">2.11 h264_redundant_pps</a></h2>
|
||||
|
||||
<p>This applies a specific fixup to some Blu-ray streams which contain
|
||||
redundant PPSs modifying irrelevant parameters of the stream which
|
||||
confuse other transformations which require correct extradata.
|
||||
</p>
|
||||
<p>A new single global PPS is created, and all of the redundant PPSs
|
||||
within the stream are removed.
|
||||
</p>
|
||||
<a name="hevc_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hevc_005fmetadata">2.12 hevc_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an HEVC stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>aud</samp>’</dt>
|
||||
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>insert</samp>’</dt>
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>sample_aspect_ratio</samp>’</dt>
|
||||
<dd><p>Set the sample aspect ratio in the stream in the VUI parameters.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>video_format</samp>’</dt>
|
||||
<dt>‘<samp>video_full_range_flag</samp>’</dt>
|
||||
<dd><p>Set the video format in the stream (see H.265 section E.3.1 and
|
||||
table E.2).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>colour_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the colour description in the stream (see H.265 section E.3.1
|
||||
and tables E.3, E.4 and E.5).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>chroma_sample_loc_type</samp>’</dt>
|
||||
<dd><p>Set the chroma sample location in the stream (see H.265 section
|
||||
E.3.1 and figure E.1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>tick_rate</samp>’</dt>
|
||||
<dd><p>Set the tick rate in the VPS and VUI parameters (num_units_in_tick /
|
||||
time_scale). Combined with ‘<samp>num_ticks_poc_diff_one</samp>’, this can
|
||||
set a constant framerate in the stream. Note that it is likely to be
|
||||
overridden by container parameters when the stream is in a container.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>num_ticks_poc_diff_one</samp>’</dt>
|
||||
<dd><p>Set poc_proportional_to_timing_flag in VPS and VUI and use this value
|
||||
to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and
|
||||
E.3.1). Ignored if ‘<samp>tick_rate</samp>’ is not also set.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>crop_left</samp>’</dt>
|
||||
<dt>‘<samp>crop_right</samp>’</dt>
|
||||
<dt>‘<samp>crop_top</samp>’</dt>
|
||||
<dt>‘<samp>crop_bottom</samp>’</dt>
|
||||
<dd><p>Set the conformance window cropping offsets in the SPS. These values
|
||||
will replace the current ones if the stream is already cropped.
|
||||
</p>
|
||||
<p>These fields are set in pixels. Note that some sizes may not be
|
||||
representable if the chroma is subsampled (H.265 section 7.4.3.2.1).
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="hevc_005fmp4toannexb"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hevc_005fmp4toannexb">2.13 hevc_mp4toannexb</a></h2>
|
||||
|
||||
<p>Convert an HEVC/H.265 bitstream from length prefixed mode to start code
|
||||
prefixed mode (as defined in the Annex B of the ITU-T H.265
|
||||
specification).
|
||||
</p>
|
||||
<p>This is required by some streaming formats, typically the MPEG-2
|
||||
transport stream format (muxer <code>mpegts</code>).
|
||||
</p>
|
||||
<p>For example to remux an MP4 file containing an HEVC stream to mpegts
|
||||
format with <code>ffmpeg</code>, you can use the command:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
|
||||
</pre></div>
|
||||
|
||||
<p>Please note that this filter is auto-inserted for MPEG-TS (muxer
|
||||
<code>mpegts</code>) and raw HEVC/H.265 (muxer <code>h265</code> or
|
||||
<code>hevc</code>) output formats.
|
||||
</p>
|
||||
<a name="imxdump"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-imxdump">2.14 imxdump</a></h2>
|
||||
|
||||
<p>Modifies the bitstream to fit in MOV and to be usable by the Final Cut
|
||||
Pro decoder. This filter only applies to the mpeg2video codec, and is
|
||||
likely not needed for Final Cut Pro 7 and newer with the appropriate
|
||||
‘<samp>-tag:v</samp>’.
|
||||
</p>
|
||||
<p>For example, to remux 30 MB/sec NTSC IMX to MOV:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
|
||||
</pre></div>
|
||||
|
||||
<a name="mjpeg2jpeg"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpeg2jpeg">2.15 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>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
|
||||
</pre></div>
|
||||
|
||||
<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>
|
||||
<div class="example">
|
||||
<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></div>
|
||||
|
||||
<a name="mjpegadump"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpegadump">2.16 mjpegadump</a></h2>
|
||||
|
||||
<p>Add an MJPEG A header to the bitstream, to enable decoding by
|
||||
Quicktime.
|
||||
</p>
|
||||
<p><a name="mov2textsub"></a>
|
||||
</p><a name="mov2textsub-1"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mov2textsub-1">2.17 mov2textsub</a></h2>
|
||||
|
||||
<p>Extract a representable text file from MOV subtitles, stripping the
|
||||
metadata header from each subtitle packet.
|
||||
</p>
|
||||
<p>See also the <a href="#text2movsub">text2movsub</a> filter.
|
||||
</p>
|
||||
<a name="mp3decomp"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mp3decomp">2.18 mp3decomp</a></h2>
|
||||
|
||||
<p>Decompress non-standard compressed MP3 audio headers.
|
||||
</p>
|
||||
<a name="mpeg2_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mpeg2_005fmetadata">2.19 mpeg2_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an MPEG-2 stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>display_aspect_ratio</samp>’</dt>
|
||||
<dd><p>Set the display aspect ratio in the stream.
|
||||
</p>
|
||||
<p>The following fixed values are supported:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>4/3</samp>’</dt>
|
||||
<dt>‘<samp>16/9</samp>’</dt>
|
||||
<dt>‘<samp>221/100</samp>’</dt>
|
||||
</dl>
|
||||
<p>Any other value will result in square pixels being signalled instead
|
||||
(see H.262 section 6.3.3 and table 6-3).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>frame_rate</samp>’</dt>
|
||||
<dd><p>Set the frame rate in the stream. This is constructed from a table
|
||||
of known values combined with a small multiplier and divisor - if
|
||||
the supplied value is not exactly representable, the nearest
|
||||
representable value will be used instead (see H.262 section 6.3.3
|
||||
and table 6-4).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>video_format</samp>’</dt>
|
||||
<dd><p>Set the video format in the stream (see H.262 section 6.3.6 and
|
||||
table 6-6).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>colour_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the colour description in the stream (see H.262 section 6.3.6
|
||||
and tables 6-7, 6-8 and 6-9).
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="mpeg4_005funpack_005fbframes"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mpeg4_005funpack_005fbframes">2.20 mpeg4_unpack_bframes</a></h2>
|
||||
|
||||
<p>Unpack DivX-style packed B-frames.
|
||||
</p>
|
||||
<p>DivX-style packed B-frames are not valid MPEG-4 and were only a
|
||||
workaround for the broken Video for Windows subsystem.
|
||||
They use more space, can cause minor AV sync issues, require more
|
||||
CPU power to decode (unless the player has some decoded picture queue
|
||||
to compensate the 2,0,2,0 frame per packet style) and cause
|
||||
trouble if copied into a standard container like mp4 or mpeg-ps/ts,
|
||||
because MPEG-4 decoders may not be able to decode them, since they are
|
||||
not valid MPEG-4.
|
||||
</p>
|
||||
<p>For example to fix an AVI file containing an MPEG-4 stream with
|
||||
DivX-style packed B-frames using <code>ffmpeg</code>, you can use the command:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
|
||||
</pre></div>
|
||||
|
||||
<a name="noise"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-noise">2.21 noise</a></h2>
|
||||
|
||||
<p>Damages the contents of packets or simply drops them without damaging the
|
||||
container. Can be used for fuzzing or testing error resilience/concealment.
|
||||
</p>
|
||||
<p>Parameters:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>amount</samp>’</dt>
|
||||
<dd><p>A numeral string, whose value is related to how often output bytes will
|
||||
be modified. Therefore, values below or equal to 0 are forbidden, and
|
||||
the lower the more frequent bytes will be modified, with 1 meaning
|
||||
every byte is modified.
|
||||
</p></dd>
|
||||
<dt>‘<samp>dropamount</samp>’</dt>
|
||||
<dd><p>A numeral string, whose value is related to how often packets will be dropped.
|
||||
Therefore, values below or equal to 0 are forbidden, and the lower the more
|
||||
frequent packets will be dropped, with 1 meaning every packet is dropped.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>The following example applies the modification to every byte but does not drop
|
||||
any packets.
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv
|
||||
</pre></div>
|
||||
|
||||
<a name="null"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-null">2.22 null</a></h2>
|
||||
<p>This bitstream filter passes the packets through unchanged.
|
||||
</p>
|
||||
<a name="remove_005fextra"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-remove_005fextra">2.23 remove_extra</a></h2>
|
||||
|
||||
<p>Remove extradata from packets.
|
||||
</p>
|
||||
<p>It accepts the following parameter:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>freq</samp>’</dt>
|
||||
<dd><p>Set which frame types to remove extradata from.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>k</samp>’</dt>
|
||||
<dd><p>Remove extradata from non-keyframes only.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>keyframe</samp>’</dt>
|
||||
<dd><p>Remove extradata from keyframes only.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>e, all</samp>’</dt>
|
||||
<dd><p>Remove extradata from all frames.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p><a name="text2movsub"></a>
|
||||
</p><a name="text2movsub-1"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-text2movsub-1">2.24 text2movsub</a></h2>
|
||||
|
||||
<p>Convert text subtitles to MOV subtitles (as used by the <code>mov_text</code>
|
||||
codec) with metadata headers.
|
||||
</p>
|
||||
<p>See also the <a href="#mov2textsub">mov2textsub</a> filter.
|
||||
</p>
|
||||
<a name="trace_005fheaders"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-trace_005fheaders">2.25 trace_headers</a></h2>
|
||||
|
||||
<p>Log trace output containing all syntax elements in the coded stream
|
||||
headers (everything above the level of individual coded blocks).
|
||||
This can be useful for debugging low-level stream issues.
|
||||
</p>
|
||||
<p>Supports H.264, H.265 and MPEG-2.
|
||||
</p>
|
||||
<a name="vp9_005fsuperframe"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fsuperframe">2.26 vp9_superframe</a></h2>
|
||||
|
||||
<p>Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
|
||||
fixes merging of split/segmented VP9 streams where the alt-ref frame
|
||||
was split from its visible counterpart.
|
||||
</p>
|
||||
<a name="vp9_005fsuperframe_005fsplit"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fsuperframe_005fsplit">2.27 vp9_superframe_split</a></h2>
|
||||
|
||||
<p>Split VP9 superframes into single frames.
|
||||
</p>
|
||||
<a name="vp9_005fraw_005freorder"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fraw_005freorder">2.28 vp9_raw_reorder</a></h2>
|
||||
|
||||
<p>Given a VP9 stream with correct timestamps but possibly out of order,
|
||||
insert additional show-existing-frame packets to correct the ordering.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-See-Also">3 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="libavcodec.html">libavcodec</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Authors">4 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,372 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Resampler Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Resampler ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Resampler Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Resampler-Options" href="#Resampler-Options">2 Resampler Options</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The FFmpeg resampler provides a high-level interface to the
|
||||
libswresample library audio resampling utilities. In particular it
|
||||
allows one to perform audio resampling, audio channel layout rematrixing,
|
||||
and convert audio format and packing layout.
|
||||
</p>
|
||||
|
||||
<a name="Resampler-Options"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Resampler-Options">2 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)the Channel Layout section in the ffmpeg-utils(1) manual</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 volume reduction.
|
||||
A value of 1.0 prevents clipping.
|
||||
</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, exact_rational, 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 when enabled (the default). Disable it if you want
|
||||
to preserve speed instead of quality when exact_rational fails.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>exact_rational</samp>’</dt>
|
||||
<dd><p>For swr only, when enabled, try to use exact phase_count based on input and
|
||||
output sample rate. However, if it is larger than <code>1 << phase_shift</code>,
|
||||
the phase_count will be <code>1 << phase_shift</code> as fallback. Default is enabled.
|
||||
</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 a double float value 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>
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-See-Also">3 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="libswresample.html">libswresample</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Authors">4 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,263 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Scaler Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Scaler ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Scaler Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Scaler-Options" href="#Scaler-Options">2 Scaler Options</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The FFmpeg rescaler provides a high-level interface to the libswscale
|
||||
library image conversion utilities. In particular it allows one to perform
|
||||
image rescaling and pixel format conversion.
|
||||
</p>
|
||||
|
||||
<p><a name="scaler_005foptions"></a>
|
||||
</p><a name="Scaler-Options"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Scaler-Options">2 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. Default
|
||||
value is ‘<samp>bicubic</samp>’.
|
||||
</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>
|
||||
<p><a name="sws_005fparams"></a>
|
||||
</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>
|
||||
<dt>‘<samp>alphablend</samp>’</dt>
|
||||
<dd><p>Set the alpha blending to use when the input has alpha but the output does not.
|
||||
Default value is ‘<samp>none</samp>’.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>uniform_color</samp>’</dt>
|
||||
<dd><p>Blend onto a uniform background color
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>checkerboard</samp>’</dt>
|
||||
<dd><p>Blend onto a checkerboard
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>none</samp>’</dt>
|
||||
<dd><p>No blending
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-See-Also">3 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="libswscale.html">libswscale</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Authors">4 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,799 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="ffplay Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : ffplay ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">ffplay Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<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-Options" href="#Options">3 Options</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
|
||||
<li><a name="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
|
||||
<li><a name="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
|
||||
<li><a name="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
|
||||
<li><a name="toc-Advanced-options" href="#Advanced-options">3.5 Advanced options</a></li>
|
||||
<li><a name="toc-While-playing" href="#While-playing">3.6 While playing</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">4 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">5 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Synopsis"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Synopsis">1 Synopsis</a></h1>
|
||||
|
||||
<p>ffplay [<var>options</var>] [‘<tt>input_url</tt>’]
|
||||
</p>
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Description">2 Description</a></h1>
|
||||
|
||||
<p>FFplay is a very simple and portable media player using the FFmpeg
|
||||
libraries and the SDL library. It is mostly used as a testbed for the
|
||||
various FFmpeg APIs.
|
||||
</p>
|
||||
<a name="Options"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Options">3 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 multiples, 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="ffplay.html#toc-Stream-specifiers-1">3.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’ or ’V’ for video, ’a’ for audio, ’s’
|
||||
for subtitle, ’d’ for data, and ’t’ for attachments. ’v’ matches all video
|
||||
streams, ’V’ only matches video streams which are not attached pictures, video
|
||||
thumbnails or cover arts. 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>
|
||||
<dt>‘<samp>m:<var>key</var>[:<var>value</var>]</samp>’</dt>
|
||||
<dd><p>Matches streams with the metadata tag <var>key</var> having the specified value. If
|
||||
<var>value</var> is not given, matches streams that contain the given tag with any
|
||||
value.
|
||||
</p></dd>
|
||||
<dt>‘<samp>u</samp>’</dt>
|
||||
<dd><p>Matches streams with usable configuration, the codec must be defined and the
|
||||
essential information such as video dimension or audio sample rate must be present.
|
||||
</p>
|
||||
<p>Note that in <code>ffmpeg</code>, matching by metadata will only work properly for
|
||||
input files.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="Generic-options"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-Generic-options">3.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 (including devices).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-demuxers</samp>’</dt>
|
||||
<dd><p>Show available demuxers.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-muxers</samp>’</dt>
|
||||
<dd><p>Show available muxers.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-devices</samp>’</dt>
|
||||
<dd><p>Show available devices.
|
||||
</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>-sources <var>device</var>[,<var>opt1</var>=<var>val1</var>[,<var>opt2</var>=<var>val2</var>]...]</samp>’</dt>
|
||||
<dd><p>Show autodetected sources of the input device.
|
||||
Some devices may provide system-dependent source names that cannot be autodetected.
|
||||
The returned list cannot be assumed to be always complete.
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -sources pulse,server=192.168.0.4
|
||||
</pre></div>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>-sinks <var>device</var>[,<var>opt1</var>=<var>val1</var>[,<var>opt2</var>=<var>val2</var>]...]</samp>’</dt>
|
||||
<dd><p>Show autodetected sinks of the output device.
|
||||
Some devices may provide system-dependent sink names that cannot be autodetected.
|
||||
The returned list cannot be assumed to be always complete.
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -sinks pulse,server=192.168.0.4
|
||||
</pre></div>
|
||||
|
||||
</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 string or a number containing one of the following values:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>quiet, -8</samp>’</dt>
|
||||
<dd><p>Show nothing at all; be silent.
|
||||
</p></dd>
|
||||
<dt>‘<samp>panic, 0</samp>’</dt>
|
||||
<dd><p>Only show fatal errors which could lead the process to crash, such as
|
||||
an assertion failure. This is not currently used for anything.
|
||||
</p></dd>
|
||||
<dt>‘<samp>fatal, 8</samp>’</dt>
|
||||
<dd><p>Only show fatal errors. These are errors after which the process absolutely
|
||||
cannot continue.
|
||||
</p></dd>
|
||||
<dt>‘<samp>error, 16</samp>’</dt>
|
||||
<dd><p>Show all errors, including ones which can be recovered from.
|
||||
</p></dd>
|
||||
<dt>‘<samp>warning, 24</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, 32</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, 40</samp>’</dt>
|
||||
<dd><p>Same as <code>info</code>, except more verbose.
|
||||
</p></dd>
|
||||
<dt>‘<samp>debug, 48</samp>’</dt>
|
||||
<dd><p>Show everything, including debugging information.
|
||||
</p></dd>
|
||||
<dt>‘<samp>trace, 56</samp>’</dt>
|
||||
</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 future 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; option values must be escaped if they
|
||||
contain special characters or the options delimiter ’:’ (see the
|
||||
“Quoting and escaping” section in the ffmpeg-utils manual).
|
||||
</p>
|
||||
<p>The following options are 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>
|
||||
<dt>‘<samp>level</samp>’</dt>
|
||||
<dd><p>set the log verbosity level using a numerical value (see <code>-loglevel</code>).
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>For example, to output a report to a file named ‘<tt>ffreport.log</tt>’
|
||||
using a log level of <code>32</code> (alias for log level <code>info</code>):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
|
||||
</pre></div>
|
||||
|
||||
<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><div class="example">
|
||||
<pre class="example">ffmpeg -cpuflags -sse+mmx ...
|
||||
ffmpeg -cpuflags mmx ...
|
||||
ffmpeg -cpuflags 0 ...
|
||||
</pre></div>
|
||||
<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>avx2</samp>’</dt>
|
||||
<dt>‘<samp>xop</samp>’</dt>
|
||||
<dt>‘<samp>fma3</samp>’</dt>
|
||||
<dt>‘<samp>fma4</samp>’</dt>
|
||||
<dt>‘<samp>3dnow</samp>’</dt>
|
||||
<dt>‘<samp>3dnowext</samp>’</dt>
|
||||
<dt>‘<samp>bmi1</samp>’</dt>
|
||||
<dt>‘<samp>bmi2</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>
|
||||
<dt>‘<samp>setend</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt>‘<samp>AArch64</samp>’</dt>
|
||||
<dd><dl compact="compact">
|
||||
<dt>‘<samp>armv8</samp>’</dt>
|
||||
<dt>‘<samp>vfp</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>
|
||||
</dl>
|
||||
|
||||
<a name="AVOptions"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-AVOptions">3.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><div class="example">
|
||||
<pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
|
||||
</pre></div>
|
||||
|
||||
<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="ffplay.html#toc-Main-options">3.4 Main options</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>-x <var>width</var></samp>’</dt>
|
||||
<dd><p>Force displayed width.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-y <var>height</var></samp>’</dt>
|
||||
<dd><p>Force displayed height.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-s <var>size</var></samp>’</dt>
|
||||
<dd><p>Set frame size (WxH or abbreviation), needed for videos which do
|
||||
not contain a header with the frame size like raw YUV. This option
|
||||
has been deprecated in favor of private options, try -video_size.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-fs</samp>’</dt>
|
||||
<dd><p>Start in fullscreen mode.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-an</samp>’</dt>
|
||||
<dd><p>Disable audio.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-vn</samp>’</dt>
|
||||
<dd><p>Disable video.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-sn</samp>’</dt>
|
||||
<dd><p>Disable subtitles.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-ss <var>pos</var></samp>’</dt>
|
||||
<dd><p>Seek to <var>pos</var>. Note that in most formats it is not possible to seek
|
||||
exactly, so <code>ffplay</code> will seek to the nearest seek point to
|
||||
<var>pos</var>.
|
||||
</p>
|
||||
<p><var>pos</var> must be a time duration specification,
|
||||
see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-t <var>duration</var></samp>’</dt>
|
||||
<dd><p>Play <var>duration</var> seconds of audio/video.
|
||||
</p>
|
||||
<p><var>duration</var> must be a time duration specification,
|
||||
see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-bytes</samp>’</dt>
|
||||
<dd><p>Seek by bytes.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-nodisp</samp>’</dt>
|
||||
<dd><p>Disable graphical display.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-noborder</samp>’</dt>
|
||||
<dd><p>Borderless window.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-volume</samp>’</dt>
|
||||
<dd><p>Set the startup volume. 0 means silence, 100 means no volume reduction or
|
||||
amplification. Negative values are treated as 0, values above 100 are treated
|
||||
as 100.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-f <var>fmt</var></samp>’</dt>
|
||||
<dd><p>Force format.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-window_title <var>title</var></samp>’</dt>
|
||||
<dd><p>Set window title (default is the input filename).
|
||||
</p></dd>
|
||||
<dt>‘<samp>-loop <var>number</var></samp>’</dt>
|
||||
<dd><p>Loops movie playback <number> times. 0 means forever.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-showmode <var>mode</var></samp>’</dt>
|
||||
<dd><p>Set the show mode to use.
|
||||
Available values for <var>mode</var> are:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>0, video</samp>’</dt>
|
||||
<dd><p>show video
|
||||
</p></dd>
|
||||
<dt>‘<samp>1, waves</samp>’</dt>
|
||||
<dd><p>show audio waves
|
||||
</p></dd>
|
||||
<dt>‘<samp>2, rdft</samp>’</dt>
|
||||
<dd><p>show audio frequency band using RDFT ((Inverse) Real Discrete Fourier Transform)
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>Default value is "video", if video is not present or cannot be played
|
||||
"rdft" is automatically selected.
|
||||
</p>
|
||||
<p>You can interactively cycle through the available show modes by
|
||||
pressing the key <w>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-vf <var>filtergraph</var></samp>’</dt>
|
||||
<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
|
||||
filter the video stream.
|
||||
</p>
|
||||
<p><var>filtergraph</var> is a description of the filtergraph to apply to
|
||||
the stream, and must have a single video input and a single video
|
||||
output. 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>You can specify this parameter multiple times and cycle through the specified
|
||||
filtergraphs along with the show modes by pressing the key <w>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-af <var>filtergraph</var></samp>’</dt>
|
||||
<dd><p><var>filtergraph</var> is a description of the filtergraph to apply to
|
||||
the input audio.
|
||||
Use the option "-filters" to show all the available filters (including
|
||||
sources and sinks).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-i <var>input_url</var></samp>’</dt>
|
||||
<dd><p>Read <var>input_url</var>.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="Advanced-options"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-Advanced-options">3.5 Advanced options</a></h2>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>-pix_fmt <var>format</var></samp>’</dt>
|
||||
<dd><p>Set pixel format.
|
||||
This option has been deprecated in favor of private options, try -pixel_format.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-stats</samp>’</dt>
|
||||
<dd><p>Print several playback statistics, in particular show the stream
|
||||
duration, the codec parameters, the current position in the stream and
|
||||
the audio/video synchronisation drift. It is on by default, to
|
||||
explicitly disable it you need to specify <code>-nostats</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-fast</samp>’</dt>
|
||||
<dd><p>Non-spec-compliant optimizations.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-genpts</samp>’</dt>
|
||||
<dd><p>Generate pts.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-sync <var>type</var></samp>’</dt>
|
||||
<dd><p>Set the master clock to audio (<code>type=audio</code>), video
|
||||
(<code>type=video</code>) or external (<code>type=ext</code>). Default is audio. The
|
||||
master clock is used to control audio-video synchronization. Most media
|
||||
players use audio as master clock, but in some cases (streaming or high
|
||||
quality broadcast) it is necessary to change that. This option is mainly
|
||||
used for debugging purposes.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-ast <var>audio_stream_specifier</var></samp>’</dt>
|
||||
<dd><p>Select the desired audio stream using the given stream specifier. The stream
|
||||
specifiers are described in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
||||
is not specified, the "best" audio stream is selected in the program of the
|
||||
already selected video stream.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-vst <var>video_stream_specifier</var></samp>’</dt>
|
||||
<dd><p>Select the desired video stream using the given stream specifier. The stream
|
||||
specifiers are described in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
||||
is not specified, the "best" video stream is selected.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-sst <var>subtitle_stream_specifier</var></samp>’</dt>
|
||||
<dd><p>Select the desired subtitle stream using the given stream specifier. The stream
|
||||
specifiers are described in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
||||
is not specified, the "best" subtitle stream is selected in the program of the
|
||||
already selected video or audio stream.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-autoexit</samp>’</dt>
|
||||
<dd><p>Exit when video is done playing.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-exitonkeydown</samp>’</dt>
|
||||
<dd><p>Exit if any key is pressed.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-exitonmousedown</samp>’</dt>
|
||||
<dd><p>Exit if any mouse button is pressed.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-codec:<var>media_specifier</var> <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific decoder implementation for the stream identified by
|
||||
<var>media_specifier</var>, which can assume the values <code>a</code> (audio),
|
||||
<code>v</code> (video), and <code>s</code> subtitle.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-acodec <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific audio decoder.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-vcodec <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific video decoder.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-scodec <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific subtitle decoder.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-autorotate</samp>’</dt>
|
||||
<dd><p>Automatically rotate the video according to file metadata. Enabled by
|
||||
default, use ‘<samp>-noautorotate</samp>’ to disable it.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-framedrop</samp>’</dt>
|
||||
<dd><p>Drop video frames if video is out of sync. Enabled by default if the master
|
||||
clock is not set to video. Use this option to enable frame dropping for all
|
||||
master clock sources, use ‘<samp>-noframedrop</samp>’ to disable it.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-infbuf</samp>’</dt>
|
||||
<dd><p>Do not limit the input buffer size, read as much data as possible from the
|
||||
input as soon as possible. Enabled by default for realtime streams, where data
|
||||
may be dropped if not read in time. Use this option to enable infinite buffers
|
||||
for all inputs, use ‘<samp>-noinfbuf</samp>’ to disable it.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="While-playing"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-While-playing">3.6 While playing</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt><q, ESC></dt>
|
||||
<dd><p>Quit.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><f></dt>
|
||||
<dd><p>Toggle full screen.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><p, SPC></dt>
|
||||
<dd><p>Pause.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><m></dt>
|
||||
<dd><p>Toggle mute.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><9, 0></dt>
|
||||
<dd><p>Decrease and increase volume respectively.
|
||||
</p>
|
||||
</dd>
|
||||
<dt></, *></dt>
|
||||
<dd><p>Decrease and increase volume respectively.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><a></dt>
|
||||
<dd><p>Cycle audio channel in the current program.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><v></dt>
|
||||
<dd><p>Cycle video channel.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><t></dt>
|
||||
<dd><p>Cycle subtitle channel in the current program.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><c></dt>
|
||||
<dd><p>Cycle program.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><w></dt>
|
||||
<dd><p>Cycle video filters or show modes.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><s></dt>
|
||||
<dd><p>Step to the next frame.
|
||||
</p>
|
||||
<p>Pause if the stream is not already paused, step to the next video
|
||||
frame, and pause.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><left/right></dt>
|
||||
<dd><p>Seek backward/forward 10 seconds.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><down/up></dt>
|
||||
<dd><p>Seek backward/forward 1 minute.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><page down/page up></dt>
|
||||
<dd><p>Seek to the previous/next chapter.
|
||||
or if there are no chapters
|
||||
Seek backward/forward 10 minutes.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><right mouse click></dt>
|
||||
<dd><p>Seek to percentage in file corresponding to fraction of width.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><left mouse double-click></dt>
|
||||
<dd><p>Toggle full screen.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-See-Also">4 See Also</a></h1>
|
||||
|
||||
<p><a href="ffplay-all.html">ffmpeg-all</a>,
|
||||
<a href="ffmpeg.html">ffmpeg</a>, <a href="ffprobe.html">ffprobe</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="ffplay.html#toc-Authors">5 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,519 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Using Git to develop FFmpeg: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Using Git to develop FFmpeg: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Using Git to develop FFmpeg</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
||||
<li><a name="toc-Basics-Usage" href="#Basics-Usage">2 Basics Usage</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Get-Git" href="#Get-Git">2.1 Get Git</a></li>
|
||||
<li><a name="toc-Cloning-the-source-tree" href="#Cloning-the-source-tree">2.2 Cloning the source tree</a></li>
|
||||
<li><a name="toc-Updating-the-source-tree-to-the-latest-revision-1" href="#Updating-the-source-tree-to-the-latest-revision-1">2.3 Updating the source tree to the latest revision</a></li>
|
||||
<li><a name="toc-Rebasing-your-local-branches" href="#Rebasing-your-local-branches">2.4 Rebasing your local branches</a></li>
|
||||
<li><a name="toc-Adding_002fremoving-files_002fdirectories" href="#Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></li>
|
||||
<li><a name="toc-Showing-modifications" href="#Showing-modifications">2.6 Showing modifications</a></li>
|
||||
<li><a name="toc-Inspecting-the-changelog" href="#Inspecting-the-changelog">2.7 Inspecting the changelog</a></li>
|
||||
<li><a name="toc-Checking-source-tree-status" href="#Checking-source-tree-status">2.8 Checking source tree status</a></li>
|
||||
<li><a name="toc-Committing" href="#Committing">2.9 Committing</a></li>
|
||||
<li><a name="toc-Preparing-a-patchset" href="#Preparing-a-patchset">2.10 Preparing a patchset</a></li>
|
||||
<li><a name="toc-Sending-patches-for-review" href="#Sending-patches-for-review">2.11 Sending patches for review</a></li>
|
||||
<li><a name="toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files" href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.12 Renaming/moving/copying files or contents of files</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Git-configuration" href="#Git-configuration">3 Git configuration</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Personal-Git-installation" href="#Personal-Git-installation">3.1 Personal Git installation</a></li>
|
||||
<li><a name="toc-Repository-configuration" href="#Repository-configuration">3.2 Repository configuration</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-FFmpeg-specific" href="#FFmpeg-specific">4 FFmpeg specific</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Reverting-broken-commits" href="#Reverting-broken-commits">4.1 Reverting broken commits</a></li>
|
||||
<li><a name="toc-Pushing-changes-to-remote-trees" href="#Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></li>
|
||||
<li><a name="toc-Finding-a-specific-svn-revision" href="#Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Pre_002dpush-checklist" href="#Pre_002dpush-checklist">5 Pre-push checklist</a></li>
|
||||
<li><a name="toc-Server-Issues" href="#Server-Issues">6 Server Issues</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Introduction"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Introduction">1 Introduction</a></h1>
|
||||
|
||||
<p>This document aims in giving some quick references on a set of useful Git
|
||||
commands. You should always use the extensive and detailed documentation
|
||||
provided directly by Git:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git --help
|
||||
man git
|
||||
</pre></div>
|
||||
|
||||
<p>shows you the available subcommands,
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git <command> --help
|
||||
man git-<command>
|
||||
</pre></div>
|
||||
|
||||
<p>shows information about the subcommand <command>.
|
||||
</p>
|
||||
<p>Additional information could be found on the
|
||||
<a href="http://gitref.org">Git Reference</a> website.
|
||||
</p>
|
||||
<p>For more information about the Git project, visit the
|
||||
<a href="http://git-scm.com/">Git website</a>.
|
||||
</p>
|
||||
<p>Consult these resources whenever you have problems, they are quite exhaustive.
|
||||
</p>
|
||||
<p>What follows now is a basic introduction to Git and some FFmpeg-specific
|
||||
guidelines to ease the contribution to the project.
|
||||
</p>
|
||||
<a name="Basics-Usage"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Basics-Usage">2 Basics Usage</a></h1>
|
||||
|
||||
<a name="Get-Git"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Get-Git">2.1 Get Git</a></h2>
|
||||
|
||||
<p>You can get Git from <a href="http://git-scm.com/">http://git-scm.com/</a>
|
||||
Most distribution and operating system provide a package for it.
|
||||
</p>
|
||||
|
||||
<a name="Cloning-the-source-tree"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Cloning-the-source-tree">2.2 Cloning the source tree</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git clone git://source.ffmpeg.org/ffmpeg <target>
|
||||
</pre></div>
|
||||
|
||||
<p>This will put the FFmpeg sources into the directory <var><target></var>.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git clone git@source.ffmpeg.org:ffmpeg <target>
|
||||
</pre></div>
|
||||
|
||||
<p>This will put the FFmpeg sources into the directory <var><target></var> and let
|
||||
you push back your changes to the remote repository.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git clone gil@ffmpeg.org:ffmpeg-web <target>
|
||||
</pre></div>
|
||||
|
||||
<p>This will put the source of the FFmpeg website into the directory
|
||||
<var><target></var> and let you push back your changes to the remote repository.
|
||||
(Note that <var>gil</var> stands for GItoLite and is not a typo of <var>git</var>.)
|
||||
</p>
|
||||
<p>If you don’t have write-access to the ffmpeg-web repository, you can
|
||||
create patches after making a read-only ffmpeg-web clone:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git clone git://ffmpeg.org/ffmpeg-web <target>
|
||||
</pre></div>
|
||||
|
||||
<p>Make sure that you do not have Windows line endings in your checkouts,
|
||||
otherwise you may experience spurious compilation failures. One way to
|
||||
achieve this is to run
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git config --global core.autocrlf false
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p><a name="Updating-the-source-tree-to-the-latest-revision"></a>
|
||||
</p><a name="Updating-the-source-tree-to-the-latest-revision-1"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Updating-the-source-tree-to-the-latest-revision-1">2.3 Updating the source tree to the latest revision</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git pull (--rebase)
|
||||
</pre></div>
|
||||
|
||||
<p>pulls in the latest changes from the tracked branch. The tracked branch
|
||||
can be remote. By default the master branch tracks the branch master in
|
||||
the remote origin.
|
||||
</p>
|
||||
<div class="float alert alert-warning">
|
||||
<p><code>--rebase</code> (see below) is recommended.
|
||||
</p></div>
|
||||
<a name="Rebasing-your-local-branches"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Rebasing-your-local-branches">2.4 Rebasing your local branches</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git pull --rebase
|
||||
</pre></div>
|
||||
|
||||
<p>fetches the changes from the main repository and replays your local commits
|
||||
over it. This is required to keep all your local changes at the top of
|
||||
FFmpeg’s master tree. The master tree will reject pushes with merge commits.
|
||||
</p>
|
||||
|
||||
<a name="Adding_002fremoving-files_002fdirectories"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git add [-A] <filename/dirname>
|
||||
git rm [-r] <filename/dirname>
|
||||
</pre></div>
|
||||
|
||||
<p>Git needs to get notified of all changes you make to your working
|
||||
directory that makes files appear or disappear.
|
||||
Line moves across files are automatically tracked.
|
||||
</p>
|
||||
|
||||
<a name="Showing-modifications"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Showing-modifications">2.6 Showing modifications</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git diff <filename(s)>
|
||||
</pre></div>
|
||||
|
||||
<p>will show all local modifications in your working directory as unified diff.
|
||||
</p>
|
||||
|
||||
<a name="Inspecting-the-changelog"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Inspecting-the-changelog">2.7 Inspecting the changelog</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git log <filename(s)>
|
||||
</pre></div>
|
||||
|
||||
<p>You may also use the graphical tools like <code>gitview</code> or <code>gitk</code>
|
||||
or the web interface available at <a href="http://source.ffmpeg.org/">http://source.ffmpeg.org/</a>.
|
||||
</p>
|
||||
<a name="Checking-source-tree-status"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Checking-source-tree-status">2.8 Checking source tree status</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git status
|
||||
</pre></div>
|
||||
|
||||
<p>detects all the changes you made and lists what actions will be taken in case
|
||||
of a commit (additions, modifications, deletions, etc.).
|
||||
</p>
|
||||
|
||||
<a name="Committing"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Committing">2.9 Committing</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git diff --check
|
||||
</pre></div>
|
||||
|
||||
<p>to double check your changes before committing them to avoid trouble later
|
||||
on. All experienced developers do this on each and every commit, no matter
|
||||
how small.
|
||||
</p>
|
||||
<p>Every one of them has been saved from looking like a fool by this many times.
|
||||
It’s very easy for stray debug output or cosmetic modifications to slip in,
|
||||
please avoid problems through this extra level of scrutiny.
|
||||
</p>
|
||||
<p>For cosmetics-only commits you should get (almost) empty output from
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git diff -w -b <filename(s)>
|
||||
</pre></div>
|
||||
|
||||
<p>Also check the output of
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git status
|
||||
</pre></div>
|
||||
|
||||
<p>to make sure you don’t have untracked files or deletions.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git add [-i|-p|-A] <filenames/dirnames>
|
||||
</pre></div>
|
||||
|
||||
<p>Make sure you have told Git your name and email address
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git config --global user.name "My Name"
|
||||
git config --global user.email my@email.invalid
|
||||
</pre></div>
|
||||
|
||||
<p>Use ‘<samp>--global</samp>’ to set the global configuration for all your Git checkouts.
|
||||
</p>
|
||||
<p>Git will select the changes to the files for commit. Optionally you can use
|
||||
the interactive or the patch mode to select hunk by hunk what should be
|
||||
added to the commit.
|
||||
</p>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git commit
|
||||
</pre></div>
|
||||
|
||||
<p>Git will commit the selected changes to your current local branch.
|
||||
</p>
|
||||
<p>You will be prompted for a log message in an editor, which is either
|
||||
set in your personal configuration file through
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git config --global core.editor
|
||||
</pre></div>
|
||||
|
||||
<p>or set by one of the following environment variables:
|
||||
<var>GIT_EDITOR</var>, <var>VISUAL</var> or <var>EDITOR</var>.
|
||||
</p>
|
||||
<p>Log messages should be concise but descriptive. Explain why you made a change,
|
||||
what you did will be obvious from the changes themselves most of the time.
|
||||
Saying just "bug fix" or "10l" is bad. Remember that people of varying skill
|
||||
levels look at and educate themselves while reading through your code. Don’t
|
||||
include filenames in log messages, Git provides that information.
|
||||
</p>
|
||||
<p>Possibly make the commit message have a terse, descriptive first line, an
|
||||
empty line and then a full description. The first line will be used to name
|
||||
the patch by <code>git format-patch</code>.
|
||||
</p>
|
||||
<a name="Preparing-a-patchset"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Preparing-a-patchset">2.10 Preparing a patchset</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git format-patch <commit> [-o directory]
|
||||
</pre></div>
|
||||
|
||||
<p>will generate a set of patches for each commit between <var><commit></var> and
|
||||
current <var>HEAD</var>. E.g.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git format-patch origin/master
|
||||
</pre></div>
|
||||
|
||||
<p>will generate patches for all commits on current branch which are not
|
||||
present in upstream.
|
||||
A useful shortcut is also
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git format-patch -n
|
||||
</pre></div>
|
||||
|
||||
<p>which will generate patches from last <var>n</var> commits.
|
||||
By default the patches are created in the current directory.
|
||||
</p>
|
||||
<a name="Sending-patches-for-review"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Sending-patches-for-review">2.11 Sending patches for review</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git send-email <commit list|directory>
|
||||
</pre></div>
|
||||
|
||||
<p>will send the patches created by <code>git format-patch</code> or directly
|
||||
generates them. All the email fields can be configured in the global/local
|
||||
configuration or overridden by command line.
|
||||
Note that this tool must often be installed separately (e.g. <var>git-email</var>
|
||||
package on Debian-based distros).
|
||||
</p>
|
||||
|
||||
<a name="Renaming_002fmoving_002fcopying-files-or-contents-of-files"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.12 Renaming/moving/copying files or contents of files</a></h2>
|
||||
|
||||
<p>Git automatically tracks such changes, making those normal commits.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">mv/cp path/file otherpath/otherfile
|
||||
git add [-A] .
|
||||
git commit
|
||||
</pre></div>
|
||||
|
||||
|
||||
<a name="Git-configuration"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Git-configuration">3 Git configuration</a></h1>
|
||||
|
||||
<p>In order to simplify a few workflows, it is advisable to configure both
|
||||
your personal Git installation and your local FFmpeg repository.
|
||||
</p>
|
||||
<a name="Personal-Git-installation"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Personal-Git-installation">3.1 Personal Git installation</a></h2>
|
||||
|
||||
<p>Add the following to your ‘<tt>~/.gitconfig</tt>’ to help <code>git send-email</code>
|
||||
and <code>git format-patch</code> detect renames:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">[diff]
|
||||
renames = copy
|
||||
</pre></div>
|
||||
|
||||
<a name="Repository-configuration"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Repository-configuration">3.2 Repository configuration</a></h2>
|
||||
|
||||
<p>In order to have <code>git send-email</code> automatically send patches
|
||||
to the ffmpeg-devel mailing list, add the following stanza
|
||||
to ‘<tt>/path/to/ffmpeg/repository/.git/config</tt>’:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">[sendemail]
|
||||
to = ffmpeg-devel@ffmpeg.org
|
||||
</pre></div>
|
||||
|
||||
<a name="FFmpeg-specific"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-FFmpeg-specific">4 FFmpeg specific</a></h1>
|
||||
|
||||
<a name="Reverting-broken-commits"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Reverting-broken-commits">4.1 Reverting broken commits</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git reset <commit>
|
||||
</pre></div>
|
||||
|
||||
<p><code>git reset</code> will uncommit the changes till <var><commit></var> rewriting
|
||||
the current branch history.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git commit --amend
|
||||
</pre></div>
|
||||
|
||||
<p>allows one to amend the last commit details quickly.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git rebase -i origin/master
|
||||
</pre></div>
|
||||
|
||||
<p>will replay local commits over the main repository allowing to edit, merge
|
||||
or remove some of them in the process.
|
||||
</p>
|
||||
<div class="float alert alert-info">
|
||||
<p><code>git reset</code>, <code>git commit --amend</code> and <code>git rebase</code>
|
||||
rewrite history, so you should use them ONLY on your local or topic branches.
|
||||
The main repository will reject those changes.
|
||||
</p></div>
|
||||
<div class="example">
|
||||
<pre class="example">git revert <commit>
|
||||
</pre></div>
|
||||
|
||||
<p><code>git revert</code> will generate a revert commit. This will not make the
|
||||
faulty commit disappear from the history.
|
||||
</p>
|
||||
<a name="Pushing-changes-to-remote-trees"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">git push origin master --dry-run
|
||||
</pre></div>
|
||||
|
||||
<p>Will simulate a push of the local master branch to the default remote
|
||||
(<var>origin</var>). And list which branches and ranges or commits would have been
|
||||
pushed.
|
||||
Git will prevent you from pushing changes if the local and remote trees are
|
||||
out of sync. Refer to <a href="#Updating-the-source-tree-to-the-latest-revision">Updating the source tree to the latest revision</a>.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git remote add <name> <url>
|
||||
</pre></div>
|
||||
|
||||
<p>Will add additional remote with a name reference, it is useful if you want
|
||||
to push your local branch for review on a remote host.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git push <remote> <refspec>
|
||||
</pre></div>
|
||||
|
||||
<p>Will push the changes to the <var><remote></var> repository.
|
||||
Omitting <var><refspec></var> makes <code>git push</code> update all the remote
|
||||
branches matching the local ones.
|
||||
</p>
|
||||
<a name="Finding-a-specific-svn-revision"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></h2>
|
||||
|
||||
<p>Since version 1.7.1 Git supports ‘<samp>:/foo</samp>’ syntax for specifying commits
|
||||
based on a regular expression. see man gitrevisions
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git show :/'as revision 23456'
|
||||
</pre></div>
|
||||
|
||||
<p>will show the svn changeset ‘<samp>r23456</samp>’. With older Git versions searching in
|
||||
the <code>git log</code> output is the easiest option (especially if a pager with
|
||||
search capabilities is used).
|
||||
</p>
|
||||
<p>This commit can be checked out with
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git checkout -b svn_23456 :/'as revision 23456'
|
||||
</pre></div>
|
||||
|
||||
<p>or for Git < 1.7.1 with
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git checkout -b svn_23456 $SHA1
|
||||
</pre></div>
|
||||
|
||||
<p>where <var>$SHA1</var> is the commit hash from the <code>git log</code> output.
|
||||
</p>
|
||||
|
||||
<a name="Pre_002dpush-checklist"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Pre_002dpush-checklist">5 Pre-push checklist</a></h1>
|
||||
|
||||
<p>Once you have a set of commits that you feel are ready for pushing,
|
||||
work through the following checklist to doublecheck everything is in
|
||||
proper order. This list tries to be exhaustive. In case you are just
|
||||
pushing a typo in a comment, some of the steps may be unnecessary.
|
||||
Apply your common sense, but if in doubt, err on the side of caution.
|
||||
</p>
|
||||
<p>First, make sure that the commits and branches you are going to push
|
||||
match what you want pushed and that nothing is missing, extraneous or
|
||||
wrong. You can see what will be pushed by running the git push command
|
||||
with ‘<samp>--dry-run</samp>’ first. And then inspecting the commits listed with
|
||||
<code>git log -p 1234567..987654</code>. The <code>git status</code> command
|
||||
may help in finding local changes that have been forgotten to be added.
|
||||
</p>
|
||||
<p>Next let the code pass through a full run of our test suite.
|
||||
</p>
|
||||
<ul>
|
||||
<li> <code>make distclean</code>
|
||||
</li><li> <code>/path/to/ffmpeg/configure</code>
|
||||
</li><li> <code>make fate</code>
|
||||
</li><li> if fate fails due to missing samples run <code>make fate-rsync</code> and retry
|
||||
</li></ul>
|
||||
|
||||
<p>Make sure all your changes have been checked before pushing them, the
|
||||
test suite only checks against regressions and that only to some extend. It does
|
||||
obviously not check newly added features/code to be working unless you have
|
||||
added a test for that (which is recommended).
|
||||
</p>
|
||||
<p>Also note that every single commit should pass the test suite, not just
|
||||
the result of a series of patches.
|
||||
</p>
|
||||
<p>Once everything passed, push the changes to your public ffmpeg clone and post a
|
||||
merge request to ffmpeg-devel. You can also push them directly but this is not
|
||||
recommended.
|
||||
</p>
|
||||
<a name="Server-Issues"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Server-Issues">6 Server Issues</a></h1>
|
||||
|
||||
<p>Contact the project admins at <a href="mailto:root@ffmpeg.org">root@ffmpeg.org</a> if you have technical
|
||||
problems with the Git server.
|
||||
</p> </div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavcodec Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavcodec ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavcodec Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavcodec.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libavcodec library provides a generic encoding/decoding framework
|
||||
and contains multiple decoders and encoders for audio, video and
|
||||
subtitle streams, and several bitstream filters.
|
||||
</p>
|
||||
<p>The shared architecture provides various services ranging from bit
|
||||
stream I/O to DSP optimizations, and makes it suitable for
|
||||
implementing robust and fast codecs as well as for experimentation.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavcodec.html#toc-See-Also">2 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="ffmpeg-codecs.html">ffmpeg-codecs</a>, <a href="ffmpeg-bitstream-filters.html">bitstream-filters</a>,
|
||||
<a href="libavutil.html">libavutil</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libavcodec.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavdevice Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavdevice ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavdevice Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavdevice.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libavdevice library provides a generic framework for grabbing from
|
||||
and rendering to many common multimedia input/output devices, and
|
||||
supports several input and output devices, including Video4Linux2,
|
||||
VfW, DShow, and ALSA.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavdevice.html#toc-See-Also">2 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="ffmpeg-devices.html">ffmpeg-devices</a>,
|
||||
<a href="libavutil.html">libavutil</a>, <a href="libavcodec.html">libavcodec</a>, <a href="libavformat.html">libavformat</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libavdevice.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavfilter Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavfilter ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavfilter Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavfilter.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libavfilter library provides a generic audio/video filtering
|
||||
framework containing several filters, sources and sinks.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavfilter.html#toc-See-Also">2 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="ffmpeg-filters.html">ffmpeg-filters</a>,
|
||||
<a href="libavutil.html">libavutil</a>, <a href="libswscale.html">libswscale</a>, <a href="libswresample.html">libswresample</a>,
|
||||
<a href="libavcodec.html">libavcodec</a>, <a href="libavformat.html">libavformat</a>, <a href="libavdevice.html">libavdevice</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libavfilter.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavformat Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavformat ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavformat Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavformat.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libavformat library provides a generic framework for multiplexing
|
||||
and demultiplexing (muxing and demuxing) audio, video and subtitle
|
||||
streams. It encompasses multiple muxers and demuxers for multimedia
|
||||
container formats.
|
||||
</p>
|
||||
<p>It also supports several input and output protocols to access a media
|
||||
resource.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavformat.html#toc-See-Also">2 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="ffmpeg-formats.html">ffmpeg-formats</a>, <a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
||||
<a href="libavutil.html">libavutil</a>, <a href="libavcodec.html">libavcodec</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libavformat.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavutil Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavutil ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavutil Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavutil.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libavutil library is a utility library to aid portable
|
||||
multimedia programming. It contains safe portable string functions,
|
||||
random number generators, data structures, additional mathematics
|
||||
functions, cryptography and multimedia related functionality (like
|
||||
enumerations for pixel and sample formats). It is not a library for
|
||||
code needed by both libavcodec and libavformat.
|
||||
</p>
|
||||
<p>The goals for this library is to be:
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt><strong>Modular</strong></dt>
|
||||
<dd><p>It should have few interdependencies and the possibility of disabling individual
|
||||
parts during <code>./configure</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><strong>Small</strong></dt>
|
||||
<dd><p>Both sources and objects should be small.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><strong>Efficient</strong></dt>
|
||||
<dd><p>It should have low CPU and memory usage.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><strong>Useful</strong></dt>
|
||||
<dd><p>It should avoid useless features that almost no one needs.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavutil.html#toc-See-Also">2 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="ffmpeg-utils.html">ffmpeg-utils</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libavutil.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libswresample Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libswresample ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libswresample Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libswresample.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libswresample library performs highly optimized audio resampling,
|
||||
rematrixing and sample format conversion operations.
|
||||
</p>
|
||||
<p>Specifically, this library performs the following conversions:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<em>Resampling</em>: is the process of changing the audio rate, for
|
||||
example from a high sample rate of 44100Hz to 8000Hz. Audio
|
||||
conversion from high to low sample rate is a lossy process. Several
|
||||
resampling options and algorithms are available.
|
||||
|
||||
</li><li>
|
||||
<em>Format conversion</em>: is the process of converting the type of
|
||||
samples, for example from 16-bit signed samples to unsigned 8-bit or
|
||||
float samples. It also handles packing conversion, when passing from
|
||||
packed layout (all samples belonging to distinct channels interleaved
|
||||
in the same buffer), to planar layout (all samples belonging to the
|
||||
same channel stored in a dedicated buffer or "plane").
|
||||
|
||||
</li><li>
|
||||
<em>Rematrixing</em>: is the process of changing the channel layout, for
|
||||
example from stereo to mono. When the input channels cannot be mapped
|
||||
to the output streams, the process is lossy, since it involves
|
||||
different gain factors and mixing.
|
||||
</li></ul>
|
||||
|
||||
<p>Various other audio conversions (e.g. stretching and padding) are
|
||||
enabled through dedicated options.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libswresample.html#toc-See-Also">2 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="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
||||
<a href="libavutil.html">libavutil</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libswresample.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libswscale Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libswscale ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libswscale Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libswscale.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libswscale library performs highly optimized image scaling and
|
||||
colorspace and pixel format conversion operations.
|
||||
</p>
|
||||
<p>Specifically, this library performs the following conversions:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<em>Rescaling</em>: is the process of changing the video size. Several
|
||||
rescaling options and algorithms are available. This is usually a
|
||||
lossy process.
|
||||
|
||||
</li><li>
|
||||
<em>Pixel format conversion</em>: is the process of converting the image
|
||||
format and colorspace of the image, for example from planar YUV420P to
|
||||
RGB24 packed. It also handles packing conversion, that is converts
|
||||
from packed layout (all pixels belonging to distinct planes
|
||||
interleaved in the same buffer), to planar layout (all samples
|
||||
belonging to the same plane stored in a dedicated buffer or "plane").
|
||||
|
||||
<p>This is usually a lossy process in case the source and destination
|
||||
colorspaces differ.
|
||||
</p></li></ul>
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libswscale.html#toc-See-Also">2 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="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
||||
<a href="libavutil.html">libavutil</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="libswscale.html#toc-Authors">3 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,474 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Mailing List FAQ: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Mailing List FAQ: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Mailing List FAQ</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-What-is-a-mailing-list_003f" href="#What-is-a-mailing-list_003f">1.1 What is a mailing list?</a></li>
|
||||
<li><a name="toc-What-type-of-questions-can-I-ask_003f" href="#What-type-of-questions-can-I-ask_003f">1.2 What type of questions can I ask?</a></li>
|
||||
<li><a name="toc-How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1" href="#How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1">1.3 How do I ask a question or send a message to a mailing list?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Subscribing-_002f-Unsubscribing" href="#Subscribing-_002f-Unsubscribing">2 Subscribing / Unsubscribing</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-What-does-subscribing-do_003f" href="#What-does-subscribing-do_003f">2.1 What does subscribing do?</a></li>
|
||||
<li><a name="toc-Do-I-need-to-subscribe_003f" href="#Do-I-need-to-subscribe_003f">2.2 Do I need to subscribe?</a></li>
|
||||
<li><a name="toc-How-do-I-subscribe_003f-1" href="#How-do-I-subscribe_003f-1">2.3 How do I subscribe?</a></li>
|
||||
<li><a name="toc-How-do-I-unsubscribe_003f" href="#How-do-I-unsubscribe_003f">2.4 How do I unsubscribe?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Moderation-Queue" href="#Moderation-Queue">3 Moderation Queue</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Why-is-my-message-awaiting-moderator-approval_003f-1" href="#Why-is-my-message-awaiting-moderator-approval_003f-1">3.1 Why is my message awaiting moderator approval?</a></li>
|
||||
<li><a name="toc-How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f" href="#How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f">3.2 How long does it take for my message in the moderation queue to be approved?</a></li>
|
||||
<li><a name="toc-How-do-I-delete-my-message-in-the-moderation-queue_003f-1" href="#How-do-I-delete-my-message-in-the-moderation-queue_003f-1">3.3 How do I delete my message in the moderation queue?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Archives" href="#Archives">4 Archives</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Where-are-the-archives_003f-1" href="#Where-are-the-archives_003f-1">4.1 Where are the archives?</a></li>
|
||||
<li><a name="toc-How-do-I-reply-to-a-message-in-the-archives_003f" href="#How-do-I-reply-to-a-message-in-the-archives_003f">4.2 How do I reply to a message in the archives?</a></li>
|
||||
<li><a name="toc-How-do-I-search-the-archives_003f" href="#How-do-I-search-the-archives_003f">4.3 How do I search the archives?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Other" href="#Other">5 Other</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Is-there-an-alternative-to-the-mailing-list_003f" href="#Is-there-an-alternative-to-the-mailing-list_003f">5.1 Is there an alternative to the mailing list?</a></li>
|
||||
<li><a name="toc-What-is-top_002dposting_003f-1" href="#What-is-top_002dposting_003f-1">5.2 What is top-posting?</a></li>
|
||||
<li><a name="toc-What-is-the-message-size-limit_003f-1" href="#What-is-the-message-size-limit_003f-1">5.3 What is the message size limit?</a></li>
|
||||
<li><a name="toc-Where-can-I-upload-sample-files_003f" href="#Where-can-I-upload-sample-files_003f">5.4 Where can I upload sample files?</a></li>
|
||||
<li><a name="toc-Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f" href="#Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f">5.5 Will I receive spam if I send and/or subscribe to a mailing list?</a></li>
|
||||
<li><a name="toc-How-do-I-filter-mailing-list-messages_003f" href="#How-do-I-filter-mailing-list-messages_003f">5.6 How do I filter mailing list messages?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Rules-and-Etiquette" href="#Rules-and-Etiquette">6 Rules and Etiquette</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-What-are-the-rules-and-the-proper-etiquette_003f" href="#What-are-the-rules-and-the-proper-etiquette_003f">6.1 What are the rules and the proper etiquette?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Help" href="#Help">7 Help</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Why-am-I-not-receiving-any-messages_003f" href="#Why-am-I-not-receiving-any-messages_003f">7.1 Why am I not receiving any messages?</a></li>
|
||||
<li><a name="toc-Why-are-my-sent-messages-not-showing-up_003f" href="#Why-are-my-sent-messages-not-showing-up_003f">7.2 Why are my sent messages not showing up?</a></li>
|
||||
<li><a name="toc-Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1" href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1">7.3 Who do I contact if I have a problem with the mailing list?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="General-Questions"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-General-Questions">1 General Questions</a></h1>
|
||||
|
||||
<a name="What-is-a-mailing-list_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-is-a-mailing-list_003f">1.1 What is a mailing list?</a></h2>
|
||||
|
||||
<p>A mailing list is not much different than emailing someone, but the
|
||||
main difference is that your message is received by everyone who
|
||||
subscribes to the list. It is somewhat like a forum but in email form.
|
||||
</p>
|
||||
<p>See the <a href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/">ffmpeg-user archives</a>
|
||||
for examples.
|
||||
</p>
|
||||
<a name="What-type-of-questions-can-I-ask_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-type-of-questions-can-I-ask_003f">1.2 What type of questions can I ask?</a></h2>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user</a>:
|
||||
For questions involving unscripted usage or compilation of the FFmpeg
|
||||
command-line tools (<code>ffmpeg</code>, <code>ffprobe</code>, <code>ffplay</code>).
|
||||
|
||||
</li><li>
|
||||
<a href="https://lists.ffmpeg.org/mailman/listinfo/libav-user/">libav-user</a>:
|
||||
For questions involving the FFmpeg libav* libraries (libavcodec,
|
||||
libavformat, libavfilter, etc).
|
||||
|
||||
</li><li>
|
||||
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel/">ffmpeg-devel</a>:
|
||||
For discussions involving the development of FFmpeg and for submitting
|
||||
patches. User questions should be asked at ffmpeg-user or libav-user.
|
||||
</li></ul>
|
||||
|
||||
<p>To report a bug see <a href="https://ffmpeg.org/bugreports.html">https://ffmpeg.org/bugreports.html</a>.
|
||||
</p>
|
||||
<p>We cannot provide help for scripts and/or third-party tools.
|
||||
</p>
|
||||
<p><a name="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f"></a>
|
||||
</p><a name="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1">1.3 How do I ask a question or send a message to a mailing list?</a></h2>
|
||||
|
||||
<p>All you have to do is send an email:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Email <a href="mailto:ffmpeg-user@ffmpeg.org">ffmpeg-user@ffmpeg.org</a> to send a message to the
|
||||
ffmpeg-user mailing list.
|
||||
|
||||
</li><li>
|
||||
Email <a href="mailto:libav-user@ffmpeg.org">libav-user@ffmpeg.org</a> to send a message to the
|
||||
libav-user mailing list.
|
||||
</li></ul>
|
||||
|
||||
<p>If you are not subscribed to the mailing list then your question must be
|
||||
manually approved. Approval may take several days, but the wait is
|
||||
usually less. If you want the message to be sent with no delay then you
|
||||
must subscribe first. See <a href="#How-do-I-subscribe_003f">How do I subscribe?</a>
|
||||
</p>
|
||||
<p>Please do not send a message, subscribe, and re-send the message: this
|
||||
results in duplicates, causes more work for the admins, and may lower
|
||||
your chance at getting an answer. However, you may do so if you first
|
||||
<a href="#How-do-I-delete-my-message-in-the-moderation-queue_003f">delete your original message from the moderation queue</a>.
|
||||
</p>
|
||||
<a name="Subscribing-_002f-Unsubscribing"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Subscribing-_002f-Unsubscribing">2 Subscribing / Unsubscribing</a></h1>
|
||||
|
||||
<a name="What-does-subscribing-do_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-does-subscribing-do_003f">2.1 What does subscribing do?</a></h2>
|
||||
|
||||
<p>Subscribing allows two things:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Your messages will show up in the mailing list without waiting in the
|
||||
moderation queue and needing to be manually approved by a mailing list
|
||||
admin.
|
||||
|
||||
</li><li>
|
||||
You will receive all messages to the mailing list including replies to
|
||||
your messages. Non-subscribed users do not receive any messages.
|
||||
</li></ul>
|
||||
|
||||
<a name="Do-I-need-to-subscribe_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Do-I-need-to-subscribe_003f">2.2 Do I need to subscribe?</a></h2>
|
||||
|
||||
<p>No. You can still send a message to the mailing list without
|
||||
subscribing. See <a href="#How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f">How do I ask a question or send a message to a mailing list?</a>
|
||||
</p>
|
||||
<p>However, your message will need to be manually approved by a mailing
|
||||
list admin, and you will not receive any mailing list messages or
|
||||
replies.
|
||||
</p>
|
||||
<p>You can ask to be CCd in your message, but replying users will
|
||||
sometimes forget to do so.
|
||||
</p>
|
||||
<p>You may also view and reply to messages via the <a href="#Where-are-the-archives_003f">archives</a>.
|
||||
</p>
|
||||
<p><a name="How-do-I-subscribe_003f"></a>
|
||||
</p><a name="How-do-I-subscribe_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-subscribe_003f-1">2.3 How do I subscribe?</a></h2>
|
||||
|
||||
<p>Email <a href="mailto:ffmpeg-user-request@ffmpeg.org">ffmpeg-user-request@ffmpeg.org</a> with the subject
|
||||
<em>subscribe</em>.
|
||||
</p>
|
||||
<p>Or visit the <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>
|
||||
and refer to the <em>Subscribing to ffmpeg-user</em> section.
|
||||
</p>
|
||||
<p>The process is the same for the other mailing lists.
|
||||
</p>
|
||||
<a name="How-do-I-unsubscribe_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-unsubscribe_003f">2.4 How do I unsubscribe?</a></h2>
|
||||
|
||||
<p>Email <a href="mailto:ffmpeg-user-request@ffmpeg.org">ffmpeg-user-request@ffmpeg.org</a> with subject <em>unsubscribe</em>.
|
||||
</p>
|
||||
<p>Or visit the <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>,
|
||||
scroll to bottom of page, enter your email address in the box, and click
|
||||
the <em>Unsubscribe or edit options</em> button.
|
||||
</p>
|
||||
<p>The process is the same for the other mailing lists.
|
||||
</p>
|
||||
<p>Please avoid asking a mailing list admin to unsubscribe you unless you
|
||||
are absolutely unable to do so by yourself. See <a href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f">Who do I contact if I have a problem with the mailing list?</a>
|
||||
</p>
|
||||
<a name="Moderation-Queue"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Moderation-Queue">3 Moderation Queue</a></h1>
|
||||
<p><a name="Why-is-my-message-awaiting-moderator-approval_003f"></a>
|
||||
</p><a name="Why-is-my-message-awaiting-moderator-approval_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-is-my-message-awaiting-moderator-approval_003f-1">3.1 Why is my message awaiting moderator approval?</a></h2>
|
||||
|
||||
<p>Some messages are automatically held in the <em>moderation queue</em> and
|
||||
must be manually approved by a mailing list admin:
|
||||
</p>
|
||||
<p>These are:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Messages from users who are <strong>not</strong> subscribed.
|
||||
|
||||
</li><li>
|
||||
Messages that exceed the <a href="#What-is-the-message-size-limit_003f">message size limit</a>.
|
||||
|
||||
</li><li>
|
||||
Messages from users whose accounts have been set with the <em>moderation flag</em>
|
||||
(very rarely occurs, but may if a user repeatedly ignores the rules
|
||||
or is abusive towards others).
|
||||
</li></ul>
|
||||
|
||||
<a name="How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f">3.2 How long does it take for my message in the moderation queue to be approved?</a></h2>
|
||||
|
||||
<p>The queue is usually checked once or twice a day, but on occasion
|
||||
several days may pass before someone checks the queue.
|
||||
</p>
|
||||
<p><a name="How-do-I-delete-my-message-in-the-moderation-queue_003f"></a>
|
||||
</p><a name="How-do-I-delete-my-message-in-the-moderation-queue_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-delete-my-message-in-the-moderation-queue_003f-1">3.3 How do I delete my message in the moderation queue?</a></h2>
|
||||
|
||||
<p>You should have received an email with the subject <em>Your message to ffmpeg-user awaits moderator approval</em>.
|
||||
A link is in the message that will allow you to delete your message
|
||||
unless a mailing list admin already approved or rejected it.
|
||||
</p>
|
||||
<a name="Archives"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Archives">4 Archives</a></h1>
|
||||
|
||||
<p><a name="Where-are-the-archives_003f"></a>
|
||||
</p><a name="Where-are-the-archives_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Where-are-the-archives_003f-1">4.1 Where are the archives?</a></h2>
|
||||
|
||||
<p>See the <em>Archives</em> section on the <a href="https://ffmpeg.org/contact.html">FFmpeg Contact</a>
|
||||
page for links to all FFmpeg mailing list archives.
|
||||
</p>
|
||||
<p>Note that the archives are split by month. Discussions that span
|
||||
several months will be split into separate months in the archives.
|
||||
</p>
|
||||
<a name="How-do-I-reply-to-a-message-in-the-archives_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-reply-to-a-message-in-the-archives_003f">4.2 How do I reply to a message in the archives?</a></h2>
|
||||
|
||||
<p>Click the email link at the top of the message just under the subject
|
||||
title. The link will provide the proper headers to keep the message
|
||||
within the thread.
|
||||
</p>
|
||||
<a name="How-do-I-search-the-archives_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-search-the-archives_003f">4.3 How do I search the archives?</a></h2>
|
||||
|
||||
<p>Perform a site search using your favorite search engine. Example:
|
||||
</p>
|
||||
<p><tt>site:lists.ffmpeg.org/pipermail/ffmpeg-user/ "search term"</tt>
|
||||
</p>
|
||||
<a name="Other"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Other">5 Other</a></h1>
|
||||
|
||||
<a name="Is-there-an-alternative-to-the-mailing-list_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Is-there-an-alternative-to-the-mailing-list_003f">5.1 Is there an alternative to the mailing list?</a></h2>
|
||||
|
||||
<p>You can ask for help in the official <tt>#ffmpeg</tt> IRC channel on Freenode.
|
||||
</p>
|
||||
<p>Some users prefer the third-party Nabble interface which presents the
|
||||
mailing lists in a typical forum layout.
|
||||
</p>
|
||||
<p>There are also numerous third-party help sites such as Super User and
|
||||
r/ffmpeg on reddit.
|
||||
</p>
|
||||
<p><a name="What-is-top_002dposting_003f"></a>
|
||||
</p><a name="What-is-top_002dposting_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-is-top_002dposting_003f-1">5.2 What is top-posting?</a></h2>
|
||||
|
||||
<p>See <a href="https://en.wikipedia.org/wiki/Posting_style#Top-posting">https://en.wikipedia.org/wiki/Posting_style#Top-posting</a>.
|
||||
</p>
|
||||
<p>Instead, use trimmed interleaved/inline replies (<a href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/2017-April/035849.html">example</a>).
|
||||
</p>
|
||||
<p><a name="What-is-the-message-size-limit_003f"></a>
|
||||
</p><a name="What-is-the-message-size-limit_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-is-the-message-size-limit_003f-1">5.3 What is the message size limit?</a></h2>
|
||||
|
||||
<p>The message size limit is 500 kilobytes for the user lists and 1000
|
||||
kilobytes for ffmpeg-devel. Please provide links to larger files instead
|
||||
of attaching them.
|
||||
</p>
|
||||
<a name="Where-can-I-upload-sample-files_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Where-can-I-upload-sample-files_003f">5.4 Where can I upload sample files?</a></h2>
|
||||
|
||||
<p>Anywhere that is not too annoying for us to use.
|
||||
</p>
|
||||
<p>Google Drive and Dropbox are acceptable if you need a file host, and
|
||||
0x0.st is good for files under 256 MiB.
|
||||
</p>
|
||||
<p>Small, short samples are preferred if possible.
|
||||
</p>
|
||||
<a name="Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f">5.5 Will I receive spam if I send and/or subscribe to a mailing list?</a></h2>
|
||||
|
||||
<p>Highly unlikely.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
The list of subscribed users is not public.
|
||||
|
||||
</li><li>
|
||||
Email addresses in the archives are obfuscated.
|
||||
|
||||
</li><li>
|
||||
Several unique test email accounts were utilized and none have yet
|
||||
received any spam.
|
||||
</li></ul>
|
||||
|
||||
<p>However, you may see a spam in the mailing lists on rare occasions:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Spam in the moderation queue may be accidentally approved due to human
|
||||
error.
|
||||
|
||||
</li><li>
|
||||
There have been a few messages from subscribed users who had their own
|
||||
email addresses hacked and spam messages from (or appearing to be from)
|
||||
the hacked account were sent to their contacts (a mailing list being a
|
||||
contact in these cases).
|
||||
|
||||
</li><li>
|
||||
If you are subscribed to the bug tracker mailing list (ffmpeg-trac) you
|
||||
may see the occasional spam as a false bug report, but we take measures
|
||||
to try to prevent this.
|
||||
</li></ul>
|
||||
|
||||
<a name="How-do-I-filter-mailing-list-messages_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-filter-mailing-list-messages_003f">5.6 How do I filter mailing list messages?</a></h2>
|
||||
|
||||
<p>Use the <em>List-Id</em>. For example, the ffmpeg-user mailing list is
|
||||
<tt>ffmpeg-user.ffmpeg.org</tt>. You can view the List-Id in the raw message
|
||||
or headers.
|
||||
</p>
|
||||
<p>You can then filter the mailing list messages to their own folder.
|
||||
</p>
|
||||
<a name="Rules-and-Etiquette"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Rules-and-Etiquette">6 Rules and Etiquette</a></h1>
|
||||
|
||||
<a name="What-are-the-rules-and-the-proper-etiquette_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-are-the-rules-and-the-proper-etiquette_003f">6.1 What are the rules and the proper etiquette?</a></h2>
|
||||
|
||||
<p>There may seem to be many things to remember, but we want to help and
|
||||
following these guidelines will allow you to get answers more quickly
|
||||
and help avoid getting ignored.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Always show your actual, unscripted <code>ffmpeg</code> command and the
|
||||
complete, uncut console output from your command.
|
||||
|
||||
</li><li>
|
||||
Use the most simple and minimal command that still shows the issue you
|
||||
are encountering.
|
||||
|
||||
</li><li>
|
||||
Provide all necessary information so others can attempt to duplicate
|
||||
your issue. This includes the actual command, complete uncut console
|
||||
output, and any inputs that are required to duplicate the issue.
|
||||
|
||||
</li><li>
|
||||
Use the latest <code>ffmpeg</code> build you can get. See the <a href="https://ffmpeg.org/download.html">FFmpeg Download</a>
|
||||
page for links to recent builds for Linux, macOS, and Windows. Or
|
||||
compile from the current git master branch.
|
||||
|
||||
</li><li>
|
||||
Avoid <a href="https://en.wikipedia.org/wiki/Posting_style#Top-posting">top-posting</a>.
|
||||
Also see <a href="#What-is-top_002dposting_003f">What is top-posting?</a>
|
||||
|
||||
</li><li>
|
||||
Avoid hijacking threads. Thread hijacking is replying to a message and
|
||||
changing the subject line to something unrelated to the original thread.
|
||||
Most email clients will still show the renamed message under the
|
||||
original thread. This can be confusing and these types of messages are
|
||||
often ignored.
|
||||
|
||||
</li><li>
|
||||
Do not send screenshots. Copy and paste console text instead of making
|
||||
screenshots of the text.
|
||||
|
||||
</li><li>
|
||||
Avoid sending email disclaimers and legalese if possible as this is a
|
||||
public list.
|
||||
|
||||
</li><li>
|
||||
Avoid using the <code>-loglevel debug</code>, <code>-loglevel quiet</code>, and
|
||||
<code>-hide_banner</code> options unless requested to do so.
|
||||
|
||||
</li><li>
|
||||
If you attach files avoid compressing small files. Uncompressed is
|
||||
preferred.
|
||||
|
||||
</li><li>
|
||||
Please do not send HTML-only messages. The mailing list will ignore the
|
||||
HTML component of your message. Most mail clients will automatically
|
||||
include a text component: this is what the mailing list will use.
|
||||
|
||||
</li><li>
|
||||
Configuring your mail client to break lines after 70 or so characters is
|
||||
recommended.
|
||||
|
||||
</li><li>
|
||||
Avoid sending the same message to multiple mailing lists.
|
||||
|
||||
</li><li>
|
||||
Please follow our <a href="https://ffmpeg.org/developer.html#Code-of-conduct">Code of Conduct</a>.
|
||||
</li></ul>
|
||||
|
||||
<a name="Help"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Help">7 Help</a></h1>
|
||||
|
||||
<a name="Why-am-I-not-receiving-any-messages_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-am-I-not-receiving-any-messages_003f">7.1 Why am I not receiving any messages?</a></h2>
|
||||
|
||||
<p>Some email providers have blacklists or spam filters that block or mark
|
||||
the mailing list messages as false positives. Unfortunately, the user is
|
||||
often not aware of this and is often out of their control.
|
||||
</p>
|
||||
<p>When possible we attempt to notify the provider to be removed from the
|
||||
blacklists or filters.
|
||||
</p>
|
||||
<a name="Why-are-my-sent-messages-not-showing-up_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-are-my-sent-messages-not-showing-up_003f">7.2 Why are my sent messages not showing up?</a></h2>
|
||||
|
||||
<p>Excluding <a href="#Why-is-my-message-awaiting-moderator-approval_003f">messages that are held in the moderation queue</a>
|
||||
there are a few other reasons why your messages may fail to appear:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
HTML-only messages are ignored by the mailing lists. Most mail clients
|
||||
automatically include a text component alongside HTML email: this is what
|
||||
the mailing list will use. If it does not then consider your client to be
|
||||
broken, because sending a text component along with the HTML component to
|
||||
form a multi-part message is recommended by email standards.
|
||||
|
||||
</li><li>
|
||||
Check your spam folder.
|
||||
</li></ul>
|
||||
|
||||
<p><a name="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f"></a>
|
||||
</p><a name="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1">7.3 Who do I contact if I have a problem with the mailing list?</a></h2>
|
||||
|
||||
<p>Send a message to <a href="mailto:ffmpeg-user-owner@ffmpeg.org">ffmpeg-user-owner@ffmpeg.org</a>.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,219 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="NUT: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : NUT: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">NUT</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Modes" href="#Modes">2 Modes</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-BROADCAST" href="#BROADCAST">2.1 BROADCAST</a></li>
|
||||
<li><a name="toc-PIPE" href="#PIPE">2.2 PIPE</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Container_002dspecific-codec-tags" href="#Container_002dspecific-codec-tags">3 Container-specific codec tags</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Generic-raw-YUVA-formats" href="#Generic-raw-YUVA-formats">3.1 Generic raw YUVA formats</a></li>
|
||||
<li><a name="toc-Raw-Audio" href="#Raw-Audio">3.2 Raw Audio</a></li>
|
||||
<li><a name="toc-Subtitles" href="#Subtitles">3.3 Subtitles</a></li>
|
||||
<li><a name="toc-Raw-Data" href="#Raw-Data">3.4 Raw Data</a></li>
|
||||
<li><a name="toc-Codecs" href="#Codecs">3.5 Codecs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="nut.html#toc-Description">1 Description</a></h1>
|
||||
<p>NUT is a low overhead generic container format. It stores audio, video,
|
||||
subtitle and user-defined streams in a simple, yet efficient, way.
|
||||
</p>
|
||||
<p>It was created by a group of FFmpeg and MPlayer developers in 2003
|
||||
and was finalized in 2008.
|
||||
</p>
|
||||
<p>The official nut specification is at svn://svn.mplayerhq.hu/nut
|
||||
In case of any differences between this text and the official specification,
|
||||
the official specification shall prevail.
|
||||
</p>
|
||||
<a name="Modes"></a>
|
||||
<h1 class="chapter"><a href="nut.html#toc-Modes">2 Modes</a></h1>
|
||||
<p>NUT has some variants signaled by using the flags field in its main header.
|
||||
</p>
|
||||
<table>
|
||||
<tr><td width="40%">BROADCAST</td><td width="40%">Extend the syncpoint to report the sender wallclock</td></tr>
|
||||
<tr><td width="40%">PIPE</td><td width="40%">Omit completely the syncpoint</td></tr>
|
||||
</table>
|
||||
|
||||
<a name="BROADCAST"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-BROADCAST">2.1 BROADCAST</a></h2>
|
||||
|
||||
<p>The BROADCAST variant provides a secondary time reference to facilitate
|
||||
detecting endpoint latency and network delays.
|
||||
It assumes all the endpoint clocks are synchronized.
|
||||
To be used in real-time scenarios.
|
||||
</p>
|
||||
<a name="PIPE"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-PIPE">2.2 PIPE</a></h2>
|
||||
|
||||
<p>The PIPE variant assumes NUT is used as non-seekable intermediate container,
|
||||
by not using syncpoint removes unneeded overhead and reduces the overall
|
||||
memory usage.
|
||||
</p>
|
||||
<a name="Container_002dspecific-codec-tags"></a>
|
||||
<h1 class="chapter"><a href="nut.html#toc-Container_002dspecific-codec-tags">3 Container-specific codec tags</a></h1>
|
||||
|
||||
<a name="Generic-raw-YUVA-formats"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Generic-raw-YUVA-formats">3.1 Generic raw YUVA formats</a></h2>
|
||||
|
||||
<p>Since many exotic planar YUVA pixel formats are not considered by
|
||||
the AVI/QuickTime FourCC lists, the following scheme is adopted for
|
||||
representing them.
|
||||
</p>
|
||||
<p>The first two bytes can contain the values:
|
||||
Y1 = only Y
|
||||
Y2 = Y+A
|
||||
Y3 = YUV
|
||||
Y4 = YUVA
|
||||
</p>
|
||||
<p>The third byte represents the width and height chroma subsampling
|
||||
values for the UV planes, that is the amount to shift the luma
|
||||
width/height right to find the chroma width/height.
|
||||
</p>
|
||||
<p>The fourth byte is the number of bits used (8, 16, ...).
|
||||
</p>
|
||||
<p>If the order of bytes is inverted, that means that each component has
|
||||
to be read big-endian.
|
||||
</p>
|
||||
<a name="Raw-Audio"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Raw-Audio">3.2 Raw Audio</a></h2>
|
||||
|
||||
<table>
|
||||
<tr><td width="40%">ALAW</td><td width="40%">A-LAW</td></tr>
|
||||
<tr><td width="40%">ULAW</td><td width="40%">MU-LAW</td></tr>
|
||||
<tr><td width="40%">P<type><interleaving><bits></td><td width="40%">little-endian PCM</td></tr>
|
||||
<tr><td width="40%"><bits><interleaving><type>P</td><td width="40%">big-endian PCM</td></tr>
|
||||
</table>
|
||||
|
||||
<p><type> is S for signed integer, U for unsigned integer, F for IEEE float
|
||||
<interleaving> is D for default, P is for planar.
|
||||
<bits> is 8/16/24/32
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">PFD[32] would for example be signed 32 bit little-endian IEEE float
|
||||
</pre></div>
|
||||
|
||||
<a name="Subtitles"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Subtitles">3.3 Subtitles</a></h2>
|
||||
|
||||
<table>
|
||||
<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
||||
<tr><td width="40%">SSA[0]</td><td width="40%">SubStation Alpha</td></tr>
|
||||
<tr><td width="40%">DVDS</td><td width="40%">DVD subtitles</td></tr>
|
||||
<tr><td width="40%">DVBS</td><td width="40%">DVB subtitles</td></tr>
|
||||
</table>
|
||||
|
||||
<a name="Raw-Data"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Raw-Data">3.4 Raw Data</a></h2>
|
||||
|
||||
<table>
|
||||
<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
||||
</table>
|
||||
|
||||
<a name="Codecs"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Codecs">3.5 Codecs</a></h2>
|
||||
|
||||
<table>
|
||||
<tr><td width="40%">3IV1</td><td width="40%">non-compliant MPEG-4 generated by old 3ivx</td></tr>
|
||||
<tr><td width="40%">ASV1</td><td width="40%">Asus Video</td></tr>
|
||||
<tr><td width="40%">ASV2</td><td width="40%">Asus Video 2</td></tr>
|
||||
<tr><td width="40%">CVID</td><td width="40%">Cinepak</td></tr>
|
||||
<tr><td width="40%">CYUV</td><td width="40%">Creative YUV</td></tr>
|
||||
<tr><td width="40%">DIVX</td><td width="40%">non-compliant MPEG-4 generated by old DivX</td></tr>
|
||||
<tr><td width="40%">DUCK</td><td width="40%">Truemotion 1</td></tr>
|
||||
<tr><td width="40%">FFV1</td><td width="40%">FFmpeg video 1</td></tr>
|
||||
<tr><td width="40%">FFVH</td><td width="40%">FFmpeg Huffyuv</td></tr>
|
||||
<tr><td width="40%">H261</td><td width="40%">ITU H.261</td></tr>
|
||||
<tr><td width="40%">H262</td><td width="40%">ITU H.262</td></tr>
|
||||
<tr><td width="40%">H263</td><td width="40%">ITU H.263</td></tr>
|
||||
<tr><td width="40%">H264</td><td width="40%">ITU H.264</td></tr>
|
||||
<tr><td width="40%">HFYU</td><td width="40%">Huffyuv</td></tr>
|
||||
<tr><td width="40%">I263</td><td width="40%">Intel H.263</td></tr>
|
||||
<tr><td width="40%">IV31</td><td width="40%">Indeo 3.1</td></tr>
|
||||
<tr><td width="40%">IV32</td><td width="40%">Indeo 3.2</td></tr>
|
||||
<tr><td width="40%">IV50</td><td width="40%">Indeo 5.0</td></tr>
|
||||
<tr><td width="40%">LJPG</td><td width="40%">ITU JPEG (lossless)</td></tr>
|
||||
<tr><td width="40%">MJLS</td><td width="40%">ITU JPEG-LS</td></tr>
|
||||
<tr><td width="40%">MJPG</td><td width="40%">ITU JPEG</td></tr>
|
||||
<tr><td width="40%">MPG4</td><td width="40%">MS MPEG-4v1 (not ISO MPEG-4)</td></tr>
|
||||
<tr><td width="40%">MP42</td><td width="40%">MS MPEG-4v2</td></tr>
|
||||
<tr><td width="40%">MP43</td><td width="40%">MS MPEG-4v3</td></tr>
|
||||
<tr><td width="40%">MP4V</td><td width="40%">ISO MPEG-4 Part 2 Video (from old encoders)</td></tr>
|
||||
<tr><td width="40%">mpg1</td><td width="40%">ISO MPEG-1 Video</td></tr>
|
||||
<tr><td width="40%">mpg2</td><td width="40%">ISO MPEG-2 Video</td></tr>
|
||||
<tr><td width="40%">MRLE</td><td width="40%">MS RLE</td></tr>
|
||||
<tr><td width="40%">MSVC</td><td width="40%">MS Video 1</td></tr>
|
||||
<tr><td width="40%">RT21</td><td width="40%">Indeo 2.1</td></tr>
|
||||
<tr><td width="40%">RV10</td><td width="40%">RealVideo 1.0</td></tr>
|
||||
<tr><td width="40%">RV20</td><td width="40%">RealVideo 2.0</td></tr>
|
||||
<tr><td width="40%">RV30</td><td width="40%">RealVideo 3.0</td></tr>
|
||||
<tr><td width="40%">RV40</td><td width="40%">RealVideo 4.0</td></tr>
|
||||
<tr><td width="40%">SNOW</td><td width="40%">FFmpeg Snow</td></tr>
|
||||
<tr><td width="40%">SVQ1</td><td width="40%">Sorenson Video 1</td></tr>
|
||||
<tr><td width="40%">SVQ3</td><td width="40%">Sorenson Video 3</td></tr>
|
||||
<tr><td width="40%">theo</td><td width="40%">Xiph Theora</td></tr>
|
||||
<tr><td width="40%">TM20</td><td width="40%">Truemotion 2.0</td></tr>
|
||||
<tr><td width="40%">UMP4</td><td width="40%">non-compliant MPEG-4 generated by UB Video MPEG-4</td></tr>
|
||||
<tr><td width="40%">VCR1</td><td width="40%">ATI VCR1</td></tr>
|
||||
<tr><td width="40%">VP30</td><td width="40%">VP 3.0</td></tr>
|
||||
<tr><td width="40%">VP31</td><td width="40%">VP 3.1</td></tr>
|
||||
<tr><td width="40%">VP50</td><td width="40%">VP 5.0</td></tr>
|
||||
<tr><td width="40%">VP60</td><td width="40%">VP 6.0</td></tr>
|
||||
<tr><td width="40%">VP61</td><td width="40%">VP 6.1</td></tr>
|
||||
<tr><td width="40%">VP62</td><td width="40%">VP 6.2</td></tr>
|
||||
<tr><td width="40%">VP70</td><td width="40%">VP 7.0</td></tr>
|
||||
<tr><td width="40%">WMV1</td><td width="40%">MS WMV7</td></tr>
|
||||
<tr><td width="40%">WMV2</td><td width="40%">MS WMV8</td></tr>
|
||||
<tr><td width="40%">WMV3</td><td width="40%">MS WMV9</td></tr>
|
||||
<tr><td width="40%">WV1F</td><td width="40%">non-compliant MPEG-4 generated by ?</td></tr>
|
||||
<tr><td width="40%">WVC1</td><td width="40%">VC-1</td></tr>
|
||||
<tr><td width="40%">XVID</td><td width="40%">non-compliant MPEG-4 generated by old Xvid</td></tr>
|
||||
<tr><td width="40%">XVIX</td><td width="40%">non-compliant MPEG-4 generated by old Xvid with interlacing bug</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,416 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Platform Specific Information: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Platform Specific Information: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on April 1, 2018 by texi2html 5.0 -->
|
||||
<!--
|
||||
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>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Platform Specific Information</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Unix_002dlike" href="#Unix_002dlike">1 Unix-like</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Advanced-linking-configuration" href="#Advanced-linking-configuration">1.1 Advanced linking configuration</a></li>
|
||||
<li><a name="toc-BSD" href="#BSD">1.2 BSD</a></li>
|
||||
<li><a name="toc-_0028Open_0029Solaris" href="#g_t_0028Open_0029Solaris">1.3 (Open)Solaris</a></li>
|
||||
<li><a name="toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029" href="#Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.4 Darwin (Mac OS X, iPhone)</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-DOS" href="#DOS">2 DOS</a></li>
|
||||
<li><a name="toc-OS_002f2" href="#OS_002f2">3 OS/2</a></li>
|
||||
<li><a name="toc-Windows" href="#Windows">4 Windows</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" href="#Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Native-Windows-compilation-using-MSYS2" href="#Native-Windows-compilation-using-MSYS2">4.1.1 Native Windows compilation using MSYS2</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" href="#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" href="#Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Cross-compilation-for-Windows-with-Linux-1" href="#Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></li>
|
||||
<li><a name="toc-Compilation-under-Cygwin" href="#Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></li>
|
||||
<li><a name="toc-Crosscompilation-for-Windows-under-Cygwin" href="#Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Unix_002dlike"></a>
|
||||
<h1 class="chapter"><a href="platform.html#toc-Unix_002dlike">1 Unix-like</a></h1>
|
||||
|
||||
<p>Some parts of FFmpeg cannot be built with version 2.15 of the GNU
|
||||
assembler which is still provided by a few AMD64 distributions. To
|
||||
make sure your compiler really uses the required version of gas
|
||||
after a binutils upgrade, run:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">$(gcc -print-prog-name=as) --version
|
||||
</pre></div>
|
||||
|
||||
<p>If not, then you should install a different compiler that has no
|
||||
hard-coded path to gas. In the worst case pass <code>--disable-asm</code>
|
||||
to configure.
|
||||
</p>
|
||||
<a name="Advanced-linking-configuration"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Advanced-linking-configuration">1.1 Advanced linking configuration</a></h2>
|
||||
|
||||
<p>If you compiled FFmpeg libraries statically and you want to use them to
|
||||
build your own shared library, you may need to force PIC support (with
|
||||
<code>--enable-pic</code> during FFmpeg configure) and add the following option
|
||||
to your project LDFLAGS:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">-Wl,-Bsymbolic
|
||||
</pre></div>
|
||||
|
||||
<p>If your target platform requires position independent binaries, you should
|
||||
pass the correct linking flag (e.g. <code>-pie</code>) to <code>--extra-ldexeflags</code>.
|
||||
</p>
|
||||
<a name="BSD"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-BSD">1.2 BSD</a></h2>
|
||||
|
||||
<p>BSD make will not build FFmpeg, you need to install and use GNU Make
|
||||
(<code>gmake</code>).
|
||||
</p>
|
||||
<a name="g_t_0028Open_0029Solaris"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-_0028Open_0029Solaris">1.3 (Open)Solaris</a></h2>
|
||||
|
||||
<p>GNU Make is required to build FFmpeg, so you have to invoke (<code>gmake</code>),
|
||||
standard Solaris Make will not work. When building with a non-c99 front-end
|
||||
(gcc, generic suncc) add either <code>--extra-libs=/usr/lib/values-xpg6.o</code>
|
||||
or <code>--extra-libs=/usr/lib/64/values-xpg6.o</code> to the configure options
|
||||
since the libc is not c99-compliant by default. The probes performed by
|
||||
configure may raise an exception leading to the death of configure itself
|
||||
due to a bug in the system shell. Simply invoke a different shell such as
|
||||
bash directly to work around this:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">bash ./configure
|
||||
</pre></div>
|
||||
|
||||
<p><a name="Darwin"></a>
|
||||
</p><a name="Darwin-_0028Mac-OS-X_002c-iPhone_0029"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.4 Darwin (Mac OS X, iPhone)</a></h2>
|
||||
|
||||
<p>The toolchain provided with Xcode is sufficient to build the basic
|
||||
unaccelerated code.
|
||||
</p>
|
||||
<p>Mac OS X on PowerPC or ARM (iPhone) requires a preprocessor from
|
||||
<a href="https://github.com/FFmpeg/gas-preprocessor">https://github.com/FFmpeg/gas-preprocessor</a> or
|
||||
<a href="https://github.com/yuvi/gas-preprocessor">https://github.com/yuvi/gas-preprocessor</a>(currently outdated) to build the optimized
|
||||
assembly functions. Put the Perl script somewhere
|
||||
in your PATH, FFmpeg’s configure will pick it up automatically.
|
||||
</p>
|
||||
<p>Mac OS X on amd64 and x86 requires <code>nasm</code> to build most of the
|
||||
optimized assembly functions. <a href="http://www.finkproject.org/">Fink</a>,
|
||||
<a href="https://wiki.gentoo.org/wiki/Project:Prefix">Gentoo Prefix</a>,
|
||||
<a href="https://mxcl.github.com/homebrew/">Homebrew</a>
|
||||
or <a href="http://www.macports.org">MacPorts</a> can easily provide it.
|
||||
</p>
|
||||
|
||||
<a name="DOS"></a>
|
||||
<h1 class="chapter"><a href="platform.html#toc-DOS">2 DOS</a></h1>
|
||||
|
||||
<p>Using a cross-compiler is preferred for various reasons.
|
||||
<a href="http://www.delorie.com/howto/djgpp/linux-x-djgpp.html">http://www.delorie.com/howto/djgpp/linux-x-djgpp.html</a>
|
||||
</p>
|
||||
|
||||
<a name="OS_002f2"></a>
|
||||
<h1 class="chapter"><a href="platform.html#toc-OS_002f2">3 OS/2</a></h1>
|
||||
|
||||
<p>For information about compiling FFmpeg on OS/2 see
|
||||
<a href="http://www.edm2.com/index.php/FFmpeg">http://www.edm2.com/index.php/FFmpeg</a>.
|
||||
</p>
|
||||
|
||||
<a name="Windows"></a>
|
||||
<h1 class="chapter"><a href="platform.html#toc-Windows">4 Windows</a></h1>
|
||||
|
||||
<p>To get help and instructions for building FFmpeg under Windows, check out
|
||||
the FFmpeg Windows Help Forum at <a href="http://ffmpeg.zeranoe.com/forum/">http://ffmpeg.zeranoe.com/forum/</a>.
|
||||
</p>
|
||||
<a name="Native-Windows-compilation-using-MinGW-or-MinGW_002dw64"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a></h2>
|
||||
|
||||
<p>FFmpeg can be built to run natively on Windows using the MinGW-w64
|
||||
toolchain. Install the latest versions of MSYS2 and MinGW-w64 from
|
||||
<a href="http://msys2.github.io/">http://msys2.github.io/</a> and/or <a href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>.
|
||||
You can find detailed installation instructions in the download section and
|
||||
the FAQ.
|
||||
</p>
|
||||
<p>Notes:
|
||||
</p>
|
||||
<ul>
|
||||
<li> Building for the MSYS environment is discouraged, MSYS2 provides a full
|
||||
MinGW-w64 environment through ‘<tt>mingw64_shell.bat</tt>’ or
|
||||
‘<tt>mingw32_shell.bat</tt>’ that should be used instead of the environment
|
||||
provided by ‘<tt>msys2_shell.bat</tt>’.
|
||||
|
||||
</li><li> Building using MSYS2 can be sped up by disabling implicit rules in the
|
||||
Makefile by calling <code>make -r</code> instead of plain <code>make</code>. This
|
||||
speed up is close to non-existent for normal one-off builds and is only
|
||||
noticeable when running make for a second time (for example during
|
||||
<code>make install</code>).
|
||||
|
||||
</li><li> In order to compile FFplay, you must have the MinGW development library
|
||||
of <a href="http://www.libsdl.org/">SDL</a> and <code>pkg-config</code> installed.
|
||||
|
||||
</li><li> By using <code>./configure --enable-shared</code> when configuring FFmpeg,
|
||||
you can build the FFmpeg libraries (e.g. libavutil, libavcodec,
|
||||
libavformat) as DLLs.
|
||||
|
||||
</li></ul>
|
||||
|
||||
<a name="Native-Windows-compilation-using-MSYS2"></a>
|
||||
<h3 class="subsection"><a href="platform.html#toc-Native-Windows-compilation-using-MSYS2">4.1.1 Native Windows compilation using MSYS2</a></h3>
|
||||
|
||||
<p>The MSYS2 MinGW-w64 environment provides ready to use toolchains and dependencies
|
||||
through <code>pacman</code>.
|
||||
</p>
|
||||
<p>Make sure to use ‘<tt>mingw64_shell.bat</tt>’ or ‘<tt>mingw32_shell.bat</tt>’ to have
|
||||
the correct MinGW-w64 environment. The default install provides shortcuts to
|
||||
them under <code>MinGW-w64 Win64 Shell</code> and <code>MinGW-w64 Win32 Shell</code>.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example"># normal msys2 packages
|
||||
pacman -S make pkgconf diffutils
|
||||
|
||||
# mingw-w64 packages and toolchains
|
||||
pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
|
||||
</pre></div>
|
||||
|
||||
<p>To target 32 bits replace <code>x86_64</code> with <code>i686</code> in the command above.
|
||||
</p>
|
||||
<a name="Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</a></h2>
|
||||
|
||||
<p>FFmpeg can be built with MSVC 2012 or earlier using a C99-to-C89 conversion utility
|
||||
and wrapper, or with MSVC 2013 and ICL natively.
|
||||
</p>
|
||||
<p>You will need the following prerequisites:
|
||||
</p>
|
||||
<ul>
|
||||
<li> <a href="https://github.com/libav/c99-to-c89/">C99-to-C89 Converter & Wrapper</a>
|
||||
(if using MSVC 2012 or earlier)
|
||||
</li><li> <a href="http://code.google.com/p/msinttypes/">msinttypes</a>
|
||||
(if using MSVC 2012 or earlier)
|
||||
</li><li> <a href="http://msys2.github.io/">MSYS2</a>
|
||||
</li><li> <a href="http://www.nasm.us/">NASM</a>
|
||||
(Also available via MSYS2’s package manager.)
|
||||
</li></ul>
|
||||
|
||||
<p>To set up a proper environment in MSYS2, you need to run <code>msys_shell.bat</code> from
|
||||
the Visual Studio or Intel Compiler command prompt.
|
||||
</p>
|
||||
<p>Place <code>yasm.exe</code> somewhere in your <code>PATH</code>. If using MSVC 2012 or
|
||||
earlier, place <code>c99wrap.exe</code> and <code>c99conv.exe</code> somewhere in your
|
||||
<code>PATH</code> as well.
|
||||
</p>
|
||||
<p>Next, make sure any other headers and libs you want to use, such as zlib, are
|
||||
located in a spot that the compiler can see. Do so by modifying the <code>LIB</code>
|
||||
and <code>INCLUDE</code> environment variables to include the <strong>Windows-style</strong>
|
||||
paths to these directories. Alternatively, you can try to use the
|
||||
<code>--extra-cflags</code>/<code>--extra-ldflags</code> configure options. If using MSVC
|
||||
2012 or earlier, place <code>inttypes.h</code> somewhere the compiler can see too.
|
||||
</p>
|
||||
<p>Finally, run:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">For MSVC:
|
||||
./configure --toolchain=msvc
|
||||
|
||||
For ICL:
|
||||
./configure --toolchain=icl
|
||||
|
||||
make
|
||||
make install
|
||||
</pre></div>
|
||||
|
||||
<p>If you wish to compile shared libraries, add <code>--enable-shared</code> to your
|
||||
configure options. Note that due to the way MSVC and ICL handle DLL imports and
|
||||
exports, you cannot compile static and shared libraries at the same time, and
|
||||
enabling shared libraries will automatically disable the static ones.
|
||||
</p>
|
||||
<p>Notes:
|
||||
</p>
|
||||
<ul>
|
||||
<li> If you wish to build with zlib support, you will have to grab a compatible
|
||||
zlib binary from somewhere, with an MSVC import lib, or if you wish to link
|
||||
statically, you can follow the instructions below to build a compatible
|
||||
<code>zlib.lib</code> with MSVC. Regardless of which method you use, you must still
|
||||
follow step 3, or compilation will fail.
|
||||
<ol>
|
||||
<li> Grab the <a href="http://zlib.net/">zlib sources</a>.
|
||||
</li><li> Edit <code>win32/Makefile.msc</code> so that it uses -MT instead of -MD, since
|
||||
this is how FFmpeg is built as well.
|
||||
</li><li> Edit <code>zconf.h</code> and remove its inclusion of <code>unistd.h</code>. This gets
|
||||
erroneously included when building FFmpeg.
|
||||
</li><li> Run <code>nmake -f win32/Makefile.msc</code>.
|
||||
</li><li> Move <code>zlib.lib</code>, <code>zconf.h</code>, and <code>zlib.h</code> to somewhere MSVC
|
||||
can see.
|
||||
</li></ol>
|
||||
|
||||
</li><li> FFmpeg has been tested with the following on i686 and x86_64:
|
||||
<ul>
|
||||
<li> Visual Studio 2010 Pro and Express
|
||||
</li><li> Visual Studio 2012 Pro and Express
|
||||
</li><li> Visual Studio 2013 Pro and Express
|
||||
</li><li> Intel Composer XE 2013
|
||||
</li><li> Intel Composer XE 2013 SP1
|
||||
</li></ul>
|
||||
<p>Anything else is not officially supported.
|
||||
</p>
|
||||
</li></ul>
|
||||
|
||||
<a name="Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b"></a>
|
||||
<h3 class="subsection"><a href="platform.html#toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></h3>
|
||||
|
||||
<p>If you plan to link with MSVC-built static libraries, you will need
|
||||
to make sure you have <code>Runtime Library</code> set to
|
||||
<code>Multi-threaded (/MT)</code> in your project’s settings.
|
||||
</p>
|
||||
<p>You will need to define <code>inline</code> to something MSVC understands:
|
||||
</p><div class="example">
|
||||
<pre class="example">#define inline __inline
|
||||
</pre></div>
|
||||
|
||||
<p>Also note, that as stated in <strong>Microsoft Visual C++</strong>, you will need
|
||||
an MSVC-compatible <a href="http://code.google.com/p/msinttypes/">inttypes.h</a>.
|
||||
</p>
|
||||
<p>If you plan on using import libraries created by dlltool, you must
|
||||
set <code>References</code> to <code>No (/OPT:NOREF)</code> under the linker optimization
|
||||
settings, otherwise the resulting binaries will fail during runtime.
|
||||
This is not required when using import libraries generated by <code>lib.exe</code>.
|
||||
This issue is reported upstream at
|
||||
<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=12633">http://sourceware.org/bugzilla/show_bug.cgi?id=12633</a>.
|
||||
</p>
|
||||
<p>To create import libraries that work with the <code>/OPT:REF</code> option
|
||||
(which is enabled by default in Release mode), follow these steps:
|
||||
</p>
|
||||
<ol>
|
||||
<li> Open the <em>Visual Studio Command Prompt</em>.
|
||||
|
||||
<p>Alternatively, in a normal command line prompt, call ‘<tt>vcvars32.bat</tt>’
|
||||
which sets up the environment variables for the Visual C++ tools
|
||||
(the standard location for this file is something like
|
||||
‘<tt>C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat</tt>’).
|
||||
</p>
|
||||
</li><li> Enter the ‘<tt>bin</tt>’ directory where the created LIB and DLL files
|
||||
are stored.
|
||||
|
||||
</li><li> Generate new import libraries with <code>lib.exe</code>:
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">lib /machine:i386 /def:..\lib\foo-version.def /out:foo.lib
|
||||
</pre></div>
|
||||
|
||||
<p>Replace <code>foo-version</code> and <code>foo</code> with the respective library names.
|
||||
</p>
|
||||
</li></ol>
|
||||
|
||||
<p><a name="Cross-compilation-for-Windows-with-Linux"></a>
|
||||
</p><a name="Cross-compilation-for-Windows-with-Linux-1"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></h2>
|
||||
|
||||
<p>You must use the MinGW cross compilation tools available at
|
||||
<a href="http://www.mingw.org/">http://www.mingw.org/</a>.
|
||||
</p>
|
||||
<p>Then configure FFmpeg with the following options:
|
||||
</p><div class="example">
|
||||
<pre class="example">./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
|
||||
</pre></div>
|
||||
<p>(you can change the cross-prefix according to the prefix chosen for the
|
||||
MinGW tools).
|
||||
</p>
|
||||
<p>Then you can easily test FFmpeg with <a href="http://www.winehq.com/">Wine</a>.
|
||||
</p>
|
||||
<a name="Compilation-under-Cygwin"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></h2>
|
||||
|
||||
<p>Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
|
||||
llrint() in its C library.
|
||||
</p>
|
||||
<p>Install your Cygwin with all the "Base" packages, plus the
|
||||
following "Devel" ones:
|
||||
</p><div class="example">
|
||||
<pre class="example">binutils, gcc4-core, make, git, mingw-runtime, texinfo
|
||||
</pre></div>
|
||||
|
||||
<p>In order to run FATE you will also need the following "Utils" packages:
|
||||
</p><div class="example">
|
||||
<pre class="example">diffutils
|
||||
</pre></div>
|
||||
|
||||
<p>If you want to build FFmpeg with additional libraries, download Cygwin
|
||||
"Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
|
||||
</p><div class="example">
|
||||
<pre class="example">libogg-devel, libvorbis-devel
|
||||
</pre></div>
|
||||
|
||||
<p>These library packages are only available from
|
||||
<a href="http://sourceware.org/cygwinports/">Cygwin Ports</a>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">yasm, libSDL-devel, libgsm-devel, libmp3lame-devel,
|
||||
speex-devel, libtheora-devel, libxvidcore-devel
|
||||
</pre></div>
|
||||
|
||||
<p>The recommendation for x264 is to build it from source, as it evolves too
|
||||
quickly for Cygwin Ports to be up to date.
|
||||
</p>
|
||||
<a name="Crosscompilation-for-Windows-under-Cygwin"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></h2>
|
||||
|
||||
<p>With Cygwin you can create Windows binaries that do not need the cygwin1.dll.
|
||||
</p>
|
||||
<p>Just install your Cygwin as explained before, plus these additional
|
||||
"Devel" packages:
|
||||
</p><div class="example">
|
||||
<pre class="example">gcc-mingw-core, mingw-runtime, mingw-zlib
|
||||
</pre></div>
|
||||
|
||||
<p>and add some special flags to your configure invocation.
|
||||
</p>
|
||||
<p>For a static build run
|
||||
</p><div class="example">
|
||||
<pre class="example">./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
|
||||
</pre></div>
|
||||
|
||||
<p>and for a build with shared libraries
|
||||
</p><div class="example">
|
||||
<pre class="example">./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue