Commit | Line | Data |
---|---|---|
7ff56c72 FB |
1 | \input texinfo @c -*- texinfo -*- |
2 | ||
3 | @settitle FFmpeg FAQ | |
4 | @titlepage | |
5 | @sp 7 | |
6 | @center @titlefont{FFmpeg FAQ} | |
7 | @sp 3 | |
8 | @end titlepage | |
9 | ||
10 | ||
11 | @chapter General Problems | |
12 | ||
cacf7199 | 13 | @section I cannot read this file although this format seems to be supported by ffmpeg. |
7ff56c72 FB |
14 | |
15 | Even if ffmpeg can read the file format, it may not support all its | |
16 | codecs. Please consult the supported codec list in the ffmpeg | |
17 | documentation. | |
18 | ||
87759af9 | 19 | @section How do I encode JPEGs to another format ? |
7ff56c72 | 20 | |
87759af9 | 21 | If the JPEGs are named img1.jpg, img2.jpg, img3.jpg,..., use: |
7ff56c72 FB |
22 | |
23 | @example | |
a9d21e78 | 24 | ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg |
7ff56c72 FB |
25 | @end example |
26 | ||
27 | @samp{%d} is replaced by the image number. | |
28 | ||
29 | @file{img%03d.jpg} generates @file{img001.jpg}, @file{img002.jpg}, etc... | |
30 | ||
31 | The same system is used for the other image formats. | |
32 | ||
a9d21e78 MB |
33 | (Note: you need -f image2 for all image formats except GIF; see next section). |
34 | ||
ad21ad45 VP |
35 | @section Only GIF is listed by -format. Is that the only accepted image format? |
36 | ||
37 | No, there are more; they are listed among the video codecs: | |
38 | jpeg, png, ppm, pbm, pam, pgm. | |
39 | ||
40 | For example: | |
41 | @example | |
42 | ffmpeg -f image2 -i menu.png -f image2 menu.jpg | |
43 | @end example | |
44 | ||
45 | The @file{menu.png} used as input will be converted to @file{menu.jpg}. | |
46 | ||
47 | Instead of relying on file format self-recognition, you may also use | |
48 | @table @option | |
49 | @item -vcodec ppm | |
50 | @item -vcodec png | |
51 | @item -vcodec mjpeg | |
52 | @end table | |
53 | to force the encoding. | |
54 | ||
55 | Applying that to the previous example: | |
56 | @example | |
57 | ffmpeg -f image2 -vcodec png -i menu.png -f image2 -vcodec mjpeg menu.jpg | |
58 | @end example | |
59 | ||
60 | Beware that there is no "jpeg" codec. Use "mjpeg" instead. | |
61 | ||
7ff56c72 FB |
62 | @section FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it ? |
63 | ||
64 | No. FFmpeg only supports open source codecs. Windows DLLs are not | |
65 | portable, bloated and often slow. | |
66 | ||
7a9d265b BL |
67 | @section I get "Unsupported codec (id=86043) for input stream #0.1". What is the problem ? |
68 | ||
69 | This is the Qcelp codec, FFmpeg has no support for that codec currently. Try mencoder/mplayer it might work. | |
70 | ||
f2fe8752 RS |
71 | @section Why do I see a slight quality degradation with multithreaded MPEG* encoding ? |
72 | ||
73 | For multithreaded MPEG* encoding, the encoded slices must be independent, | |
cacf7199 MM |
74 | otherwise thread n would practically have to wait for n-1 to finish, so it's |
75 | quite logical that there is a small reduction of quality. This is not a bug. | |
f2fe8752 | 76 | |
47d944d2 FB |
77 | @section How can I read from the standard input or write to the standard output ? |
78 | ||
79 | Use @file{-} as filename. | |
80 | ||
cacf7199 | 81 | @section Why does ffmpeg not decode audio in VOB files ? |
db0e9b03 | 82 | |
cacf7199 | 83 | The audio is AC3 (a.k.a. A/52). AC3 decoding is an optional component in ffmpeg |
115329f1 | 84 | as the component that handles AC3 decoding (liba52) is currently released under |
cacf7199 MM |
85 | the GPL. If you have liba52 installed on your system, enable AC3 decoding |
86 | with @code{./configure --enable-a52}. Take care: by | |
db0e9b03 FB |
87 | enabling AC3, you automatically change the license of libavcodec from |
88 | LGPL to GPL. | |
89 | ||
87759af9 | 90 | @section Which codecs are supported by Windows ? |
c75f51f6 | 91 | |
115329f1 | 92 | Windows does not support standard formats like MPEG very well, unless you |
c75f51f6 MN |
93 | install some additional codecs |
94 | ||
9ba42958 | 95 | The following list of video codecs should work on most Windows systems: |
c75f51f6 MN |
96 | @table @option |
97 | @item msmpeg4v2 | |
98 | .avi/.asf | |
99 | @item msmpeg4 | |
100 | .asf only | |
101 | @item wmv1 | |
102 | .asf only | |
103 | @item wmv2 | |
104 | .asf only | |
105 | @item mpeg4 | |
9ba42958 | 106 | only if you have some MPEG-4 codec installed like ffdshow or XviD |
c75f51f6 MN |
107 | @item mpeg1 |
108 | .mpg only | |
109 | @end table | |
115329f1 DB |
110 | Note, ASF files often have .wmv or .wma extensions in Windows. It should also |
111 | be mentioned that Microsoft claims a patent on the ASF format, and may sue | |
cacf7199 MM |
112 | or threaten users who create ASF files with non-Microsoft software. It is |
113 | strongly advised to avoid ASF where possible. | |
c75f51f6 | 114 | |
9ba42958 | 115 | The following list of audio codecs should work on most Windows systems: |
c75f51f6 MN |
116 | @table @option |
117 | @item adpcm_ima_wav | |
118 | @item adpcm_ms | |
119 | @item pcm | |
120 | @item mp3 | |
9ba42958 | 121 | if some MP3 codec like LAME is installed |
c75f51f6 MN |
122 | @end table |
123 | ||
9ba42958 | 124 | @section Why does the chrominance data seem to be sampled at a different time from the luminance data on bt8x8 captures on Linux? |
7c0dc383 | 125 | |
115329f1 | 126 | This is a well-known bug in the bt8x8 driver. For 2.4.26 there is a patch at |
70b0bb87 | 127 | (@url{http://mplayerhq.hu/~michael/bttv-420-2.4.26.patch}). This may also |
cacf7199 | 128 | apply cleanly to other 2.4-series kernels. |
7c0dc383 | 129 | |
87759af9 | 130 | @section How do I avoid the ugly aliasing artifacts in bt8x8 captures on Linux? |
7c0dc383 | 131 | |
cacf7199 | 132 | Pass 'combfilter=1 lumafilter=1' to the bttv driver. Note though that 'combfilter=1' |
70b0bb87 DB |
133 | will cause somewhat too strong filtering. A fix is to apply (@url{http://mplayerhq.hu/~michael/bttv-comb-2.4.26.patch}) |
134 | or (@url{http://mplayerhq.hu/~michael/bttv-comb-2.6.6.patch}) | |
cacf7199 | 135 | and pass 'combfilter=2'. |
7c0dc383 | 136 | |
9ba42958 | 137 | @section I have a problem with an old version of ffmpeg; where should I report it? |
cacf7199 | 138 | Nowhere. Upgrade to the latest release or if there is no recent release upgrade |
1c1b5a40 | 139 | to Subversion HEAD. You could also try to report it. Maybe you will get lucky and |
87759af9 | 140 | become the first person in history to get an answer different from "upgrade |
1c1b5a40 | 141 | to Subversion HEAD". |
dd1368db | 142 | |
9ba42958 | 143 | @section -f jpeg doesn't work. |
fc3e9202 | 144 | |
a9d21e78 | 145 | Try '-f image2 test%d.jpg'. |
fc3e9202 | 146 | |
cacf7199 | 147 | @section Why can I not change the framerate? |
73468318 | 148 | |
9ba42958 | 149 | Some codecs, like MPEG-1/2, only allow a small number of fixed framerates. |
cacf7199 | 150 | Choose a different codec with the -vcodec command line option. |
73468318 | 151 | |
cacf7199 | 152 | @section ffmpeg does not work; What is wrong? |
9291d591 | 153 | |
cacf7199 | 154 | Try a 'make distclean' in the ffmpeg source directory. If this does not help see |
7a771569 | 155 | (@url{http://ffmpeg.org/bugreports.php}). |
9291d591 | 156 | |
87759af9 | 157 | @section How do I encode XviD or DivX video with ffmpeg? |
f62e9435 | 158 | |
87759af9 | 159 | Both XviD and DivX (version 4+) are implementations of the ISO MPEG-4 |
f62e9435 MM |
160 | standard (note that there are many other coding formats that use this |
161 | same standard). Thus, use '-vcodec mpeg4' to encode these formats. The | |
c9a08db9 | 162 | default fourcc stored in an MPEG-4-coded file will be 'FMP4'. If you want |
115329f1 DB |
163 | a different fourcc, use the '-vtag' option. E.g., '-vtag xvid' will |
164 | force the fourcc 'xvid' to be stored as the video fourcc rather than the | |
f62e9435 MM |
165 | default. |
166 | ||
18e7d87c | 167 | @section How do I encode videos which play on the iPod? |
b4aead58 MN |
168 | |
169 | @table @option | |
18e7d87c | 170 | @item needed stuff |
b4aead58 | 171 | -acodec aac -vcodec mpeg4 width<=320 height<=240 |
18e7d87c | 172 | @item working stuff |
b4aead58 | 173 | 4mv, title |
18e7d87c DB |
174 | @item non-working stuff |
175 | B-frames | |
b4aead58 MN |
176 | @item example command line |
177 | ffmpeg -i input -acodec aac -ab 128 -vcodec mpeg4 -b 1200 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X output.mp4 | |
178 | @end table | |
179 | ||
18e7d87c | 180 | @section How do I encode videos which play on the PSP? |
b4aead58 MN |
181 | |
182 | @table @option | |
18e7d87c | 183 | @item needed stuff |
b4aead58 | 184 | -acodec aac -vcodec mpeg4 width*height<=76800 width%16=0 height%16=0 -ar 24000 -r 30000/1001 or 15000/1001 -f psp |
18e7d87c | 185 | @item working stuff |
b4aead58 | 186 | 4mv, title |
18e7d87c DB |
187 | @item non-working stuff |
188 | B-frames | |
b4aead58 MN |
189 | @item example command line |
190 | ffmpeg -i input -acodec aac -ab 128 -vcodec mpeg4 -b 1200 -ar 24000 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -title X -f psp output.mp4 | |
f7709b1a MN |
191 | @item needed stuff for H.264 |
192 | -acodec aac -vcodec h264 width*height<=76800 width%16=0? height%16=0? -ar 48000 -coder 1 -r 30000/1001 or 15000/1001 -f psp | |
193 | @item working stuff for H.264 | |
194 | title, loop filter | |
195 | @item non-working stuff for H.264 | |
196 | CAVLC | |
197 | @item example command line | |
198 | ffmpeg -i input -acodec aac -ab 128 -vcodec h264 -b 1200 -ar 48000 -mbd 2 -coder 1 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -title X -f psp -flags loop -trellis 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 output.mp4 | |
b4aead58 MN |
199 | @end table |
200 | ||
99f6278e | 201 | @section How can I read DirectShow files? |
2c29781d | 202 | |
99f6278e DB |
203 | If you have built FFmpeg with @code{./configure --enable-avisynth} |
204 | (only possible on MinGW/Cygwin platforms), | |
205 | then you may use any file that DirectShow can read as input. | |
206 | (Be aware that this feature has been recently added, | |
207 | so you will need to help yourself in case of problems.) | |
2c29781d VP |
208 | |
209 | Just create an "input.avs" text file with this single line ... | |
210 | @example | |
211 | DirectShowSource("C:\path to your file\yourfile.asf") | |
212 | @end example | |
99f6278e | 213 | ... and then feed that text file to FFmpeg: |
2c29781d VP |
214 | @example |
215 | ffmpeg -i input.avs | |
216 | @end example | |
217 | ||
218 | For ANY other help on Avisynth, please visit @url{http://www.avisynth.org/}. | |
219 | ||
7ff56c72 FB |
220 | @chapter Development |
221 | ||
f007d358 DB |
222 | @section When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between? |
223 | ||
224 | Like most open source projects FFmpeg suffers from a certain lack of | |
225 | manpower. For this reason the developers have to prioritize the work | |
226 | they do and putting out releases is not at the top of the list, fixing | |
227 | bugs and reviewing patches takes precedence. Please don't complain or | |
228 | request more timely and/or frequent releases unless you are willing to | |
229 | help out creating them. | |
230 | ||
4519b8a6 DB |
231 | @section Why doesn't FFmpeg support feature [xyz]? |
232 | ||
233 | Because no one has taken on that task yet. FFmpeg development is | |
234 | driven by the tasks that are important to the individual developers. | |
235 | If there is a feature that is important to you, the best way to get | |
236 | it implemented is to undertake the task yourself. | |
237 | ||
238 | ||
cacf7199 | 239 | @section Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat ? |
a93b9dba | 240 | |
cacf7199 | 241 | Yes. Read the Developers Guide of the FFmpeg documentation. Alternatively, |
115329f1 | 242 | examine the source code for one of the many open source projects that |
cacf7199 | 243 | already incorporate ffmpeg at (@url{projects.php}). |
a93b9dba | 244 | |
7ff56c72 FB |
245 | @section Can you support my C compiler XXX ? |
246 | ||
cacf7199 MM |
247 | No. Only GCC is supported. GCC is ported to most systems available and there |
248 | is no need to pollute the source code with @code{#ifdef}s | |
7ff56c72 FB |
249 | related to the compiler. |
250 | ||
988a9f9e | 251 | @section Can I use FFmpeg or libavcodec under Windows ? |
7ff56c72 | 252 | |
988a9f9e FB |
253 | Yes, but the MinGW tools @emph{must} be used to compile FFmpeg. You |
254 | can link the resulting DLLs with any other Windows program. Read the | |
be0efc0c MB |
255 | @emph{Native Windows Compilation} and @emph{Visual C++ compatibility} |
256 | sections in the FFmpeg documentation to find more information. | |
7ff56c72 FB |
257 | |
258 | @section Can you add automake, libtool or autoconf support ? | |
259 | ||
cacf7199 | 260 | No. These tools are too bloated and they complicate the build. Moreover, |
7ff56c72 FB |
261 | since only @samp{gcc} is supported they would add little advantages in |
262 | terms of portability. | |
263 | ||
cacf7199 | 264 | @section Why not rewrite ffmpeg in object-oriented C++ ? |
fbf33e4f | 265 | |
87759af9 | 266 | ffmpeg is already organized in a highly modular manner and does not need to |
115329f1 | 267 | be rewritten in a formal object language. Further, many of the developers |
cacf7199 MM |
268 | favor straight C; it works for them. For more arguments on this matter, |
269 | read "Programming Religion" at (@url{http://lkml.org/faq/lkmlfaq-15.html}). | |
270 | ||
271 | @section Why are the ffmpeg programs devoid of debugging symbols ? | |
272 | ||
273 | The build process creates ffmpeg_g, ffplay_g, etc. which contain full debug | |
274 | information. Those binaries are strip'd to create ffmpeg, ffplay, etc. If | |
275 | you need the debug information, used the *_g versions. | |
fbf33e4f | 276 | |
e180129f | 277 | @section I do not like the LGPL, can I contribute code under the GPL instead ? |
61a1e081 | 278 | |
e180129f DB |
279 | Yes, as long as the code is optional and can easily and cleanly be placed |
280 | under #ifdef CONFIG_GPL without breaking anything. So for example a new codec | |
281 | or filter would be OK under GPL while a bugfix to LGPL code would not. | |
61a1e081 | 282 | |
e180129f | 283 | @section I want to compile xyz.c alone but my compiler produced many errors. |
61a1e081 | 284 | |
e180129f DB |
285 | Common code is in its own files in libav* and is used by the individual |
286 | codecs. They will not work without the common parts, you have to compile | |
287 | the whole libav*. If you wish, disable some parts with configure switches. | |
288 | You can also try to hack it and remove more, but if you had problems fixing | |
289 | the compilation failure then you are probably not qualified for this. | |
61a1e081 | 290 | |
9fcfac15 | 291 | @section Visual C++ produces many errors. |
61a1e081 | 292 | |
5062c60c DB |
293 | Visual C++ is not compliant to the C standard and does not support |
294 | the inline assembly used in FFmpeg. | |
9fcfac15 DB |
295 | If you wish - for whatever weird reason - to use Visual C++ for your |
296 | project then you can link the Visual C++ code with libav* as long as | |
be0efc0c MB |
297 | you compile the latter with a working C compiler. For more information, see |
298 | the @emph{Visual C++ compatibility} section in the FFmpeg documentation. | |
61a1e081 | 299 | |
5062c60c DB |
300 | There have been efforts to make FFmpeg compatible with Visual C++ in the |
301 | past. However, they have all been rejected as too intrusive, especially | |
302 | since MinGW does the job perfectly adequately. None of the core developers | |
303 | work with Visual C++ and thus this item is low priority. Should you find | |
304 | the silver bullet that solves this problem, feel free to shoot it at us. | |
305 | ||
f994f61e MN |
306 | @section I have a file in memory / a API different from *open/*read/ libc how do i use it with libavformat ? |
307 | ||
1c1b5a40 DB |
308 | You have to implement a URLProtocol, see libavformat/file.c in FFmpeg |
309 | and libmpdemux/demux_lavf.c in MPlayer sources. | |
f994f61e | 310 | |
e9766450 RP |
311 | @section I get "No compatible shell script interpreter found." in MSys. |
312 | ||
313 | The standard MSys bash (2.04) is broken. You need to install 2.05 or later. | |
314 | ||
7ff56c72 | 315 | @bye |