]> git.sesse.net Git - ffmpeg/blobdiff - doc/faq.texi
Speed up show_list
[ffmpeg] / doc / faq.texi
index d26c6b50ade271922e222e7311eb5a6514ba3c55..8ace580f4f96723ea4783afe3edcbc11b1594e3f 100644 (file)
@@ -151,7 +151,7 @@ Choose a different codec with the -vcodec command line option.
 @section ffmpeg does not work; What is wrong?
 
 Try a 'make distclean' in the ffmpeg source directory before the build. If this does not help see
-(@url{http://ffmpeg.org/bugreports.php}).
+(@url{http://ffmpeg.org/bugreports.html}).
 
 @section How do I encode XviD or DivX video with ffmpeg?
 
@@ -307,6 +307,28 @@ ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
 rm temp[12].[av] all.[av]
 @end example
 
+@section Is there a forum for FFmpeg? I do not like mailing lists.
+
+Yes, (@url{http://dir.gmane.org/gmane.comp.video.ffmpeg.user}).
+
+@section FFmpeg does not adhere to the -maxrate setting, some frames are bigger than maxrate/fps.
+
+Read the MPEG spec about video buffer verifier.
+
+@section I want CBR, but no matter what I do frame sizes differ.
+
+You do not understand what CBR is, please read the MPEG spec.
+Read about video buffer verifier and constant bitrate.
+The one sentence summary is that there is a buffer and the input rate is
+constant, the output can vary as needed.
+
+@section How do I check if a stream is CBR?
+
+To quote the MPEG-2 spec:
+"There is no way to tell that a bitstream is constant bitrate without
+examining all of the vbv_delay values and making complicated computations."
+
+
 @chapter Development
 
 @section When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between?
@@ -330,7 +352,7 @@ it implemented is to undertake the task yourself.
 
 Yes. 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 (@url{projects.php}).
+already incorporate ffmpeg at (@url{projects.html}).
 
 @section Can you support my C compiler XXX?
 
@@ -338,29 +360,29 @@ 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}s related to the compiler.
 
-@section Visual C++ produces many errors.
+@section Microsoft Visual C++ produces many errors.
 
-Visual C++ is not compliant to the C standard and does not support
+Microsoft Visual C++ is not compliant to the C standard and does not support
 the inline assembly used in FFmpeg.
-If you wish - for whatever weird reason - to use Visual C++ for your
-project then you can link the Visual C++ code with libav* as long as
+If you wish - for whatever weird reason - to use MSVC++ for your
+project then you can link the MSVC++ code with libav* as long as
 you compile the latter with a working C compiler. For more information, see
-the @emph{Visual C++ compatibility} section in the FFmpeg documentation.
+the @emph{Microsoft Visual C++ compatibility} section in the FFmpeg
+documentation.
 
-There have been efforts to make FFmpeg compatible with Visual C++ in the
+There have been efforts to make FFmpeg compatible with MSVC++ in the
 past. However, they have all been rejected as too intrusive, especially
 since MinGW does the job perfectly adequately. None of the core developers
-work with Visual C++ and thus this item is low priority. Should you find
+work with MSVC++ and thus this item is low priority. Should you find
 the silver bullet that solves this problem, feel free to shoot it at us.
 
 @section Can I use FFmpeg or libavcodec under Windows?
 
-Yes, but the MinGW tools @emph{must} be used to compile FFmpeg. You
-can link the resulting DLLs with any other Windows program. Read the
-@emph{Native Windows Compilation} and @emph{Visual C++ compatibility}
-sections in the FFmpeg documentation to find more information.
+Yes, but the Cygwin or MinGW tools @emph{must} be used to compile FFmpeg.
+Read the @emph{Windows} section in the FFmpeg documentation to find more
+information.
 
-To get help and instructions for using FFmpeg under Windows, check out
+To get help and instructions for building FFmpeg under Windows, check out
 the FFmpeg Windows Help Forum at
 @url{http://arrozcru.no-ip.org/ffmpeg/}.
 
@@ -395,6 +417,14 @@ the whole libav*. If you wish, disable some parts with configure switches.
 You can also try to hack it and remove more, but if you had problems fixing
 the compilation failure then you are probably not qualified for this.
 
+@section I'm using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available.
+
+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"}.
+
+See @url{http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3}
+
 @section I have a file in memory / a API different from *open/*read/ libc how do i use it with libavformat?
 
 You have to implement a URLProtocol, see libavformat/file.c in FFmpeg
@@ -404,12 +434,14 @@ and libmpdemux/demux_lavf.c in MPlayer sources.
 
 The standard MSys bash (2.04) is broken. You need to install 2.05 or later.
 
+@section I get "./configure: line <xxx>: pr: command not found" in MSys.
+
+The standard MSys install doesn't come with pr. You need to get it from the coreutils package.
+
 @section I tried to pass RTP packets into a decoder, but it doesn't work.
 
-Of course not, you MUST strip ALL RTP headers and assemble valid packets
-first, an MP3 decoder decodes MP3 packets not bastardized MP3 packets
-encapsulated in RTP. The same applies to all decoders, this is not specific
-to ffmpeg or libavcodec.
+RTP is a container format like any other, you must first depacketize the
+codec frames/samples stored in RTP and then feed to the decoder.
 
 @section Where can I find libav* headers for Pascal/Delphi?
 
@@ -419,12 +451,18 @@ see @url{http://www.iversenit.dk/dev/ffmpeg-headers/}
 
 see @url{http://svn.mplayerhq.hu/michael/trunk/docs/}
 
-@section how do I feed H.263-RTP (and likely other RTP bastardizations of codecs) to libavcodec?
+@section How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?
+
+Even if peculiar since it is network oriented, RTP is a container like any
+other. You have to @emph{demux} RTP before feeding the payload to libavcodec.
+In this specific case please look at RFC 4629 to see how it should be done.
+
+@section AVStream.r_frame_rate is wrong, it is much larger than the framerate.
 
-Remove _ALL_ RTP trash and either feed the fragments through an AVParser and
-then into the decoder or merge the fragments yourself into proper frames and
-feed them into the decoder. Note: The payload of H.263-RTP is not valid
-H.263 you at least have to merge the first and last bytes discarding RTP trash
-from them, possibly more.
+r_frame_rate is NOT the average framerate, it is the smallest framerate
+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 r_frame_rate
+will be 150.
 
 @bye