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 | ||
d485fed4 DB |
11 | @chapter General Questions |
12 | ||
13 | @section When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between? | |
14 | ||
15 | Like most open source projects FFmpeg suffers from a certain lack of | |
16 | manpower. For this reason the developers have to prioritize the work | |
17 | they do and putting out releases is not at the top of the list, fixing | |
18 | bugs and reviewing patches takes precedence. Please don't complain or | |
19 | request more timely and/or frequent releases unless you are willing to | |
20 | help out creating them. | |
21 | ||
22 | @section I have a problem with an old version of FFmpeg; where should I report it? | |
23 | Nowhere. Upgrade to the latest release or if there is no recent release upgrade | |
24 | to Subversion HEAD. You could also try to report it. Maybe you will get lucky and | |
25 | become the first person in history to get an answer different from "upgrade | |
26 | to Subversion HEAD". | |
27 | ||
28 | @section Why doesn't FFmpeg support feature [xyz]? | |
29 | ||
30 | Because no one has taken on that task yet. FFmpeg development is | |
31 | driven by the tasks that are important to the individual developers. | |
32 | If there is a feature that is important to you, the best way to get | |
4f1ab3ce | 33 | it implemented is to undertake the task yourself or sponsor a developer. |
d485fed4 DB |
34 | |
35 | @section FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it? | |
36 | ||
4f1ab3ce DB |
37 | No. Windows DLLs are not portable, bloated and often slow. |
38 | Moreover FFmpeg strives to support all codecs natively. | |
39 | A DLL loader is not conducive to that goal. | |
d485fed4 | 40 | |
831ec935 | 41 | @section My bug report/mail to ffmpeg-devel/user has not received any replies. |
d485fed4 DB |
42 | |
43 | Likely reasons | |
44 | @itemize | |
45 | @item We are busy and haven't had time yet to read your report or | |
46 | investigate the issue. | |
47 | @item You didn't follow bugreports.html. | |
48 | @item You didn't use Subversion HEAD. | |
49 | @item You reported a segmentation fault without gdb output. | |
50 | @item You describe a problem but not how to reproduce it. | |
51 | @item It's unclear if you use ffmpeg as command line tool or use | |
52 | libav* from another application. | |
53 | @item You speak about a video having problems on playback but | |
54 | not what you use to play it. | |
55 | @item We have no faint clue what you are talking about besides | |
56 | that it is related to FFmpeg. | |
57 | @end itemize | |
58 | ||
59 | @section Is there a forum for FFmpeg? I do not like mailing lists. | |
60 | ||
242a2b7e VP |
61 | You may view our mailing lists with a more forum-alike look here: |
62 | @url{http://dir.gmane.org/gmane.comp.video.ffmpeg.user}, | |
d9fe7eb3 | 63 | but, if you post, please remember that our mailing list rules still apply there. |
7ff56c72 | 64 | |
cacf7199 | 65 | @section I cannot read this file although this format seems to be supported by ffmpeg. |
7ff56c72 | 66 | |
4f1ab3ce | 67 | Even if ffmpeg can read the container format, it may not support all its |
7ff56c72 FB |
68 | codecs. Please consult the supported codec list in the ffmpeg |
69 | documentation. | |
70 | ||
d485fed4 DB |
71 | @section Which codecs are supported by Windows? |
72 | ||
73 | Windows does not support standard formats like MPEG very well, unless you | |
831ec935 | 74 | install some additional codecs. |
d485fed4 DB |
75 | |
76 | The following list of video codecs should work on most Windows systems: | |
77 | @table @option | |
78 | @item msmpeg4v2 | |
79 | .avi/.asf | |
80 | @item msmpeg4 | |
81 | .asf only | |
82 | @item wmv1 | |
83 | .asf only | |
84 | @item wmv2 | |
85 | .asf only | |
86 | @item mpeg4 | |
831ec935 | 87 | Only if you have some MPEG-4 codec like ffdshow or Xvid installed. |
d485fed4 DB |
88 | @item mpeg1 |
89 | .mpg only | |
90 | @end table | |
91 | Note, ASF files often have .wmv or .wma extensions in Windows. It should also | |
92 | be mentioned that Microsoft claims a patent on the ASF format, and may sue | |
93 | or threaten users who create ASF files with non-Microsoft software. It is | |
94 | strongly advised to avoid ASF where possible. | |
95 | ||
96 | The following list of audio codecs should work on most Windows systems: | |
97 | @table @option | |
98 | @item adpcm_ima_wav | |
99 | @item adpcm_ms | |
100 | @item pcm | |
831ec935 | 101 | always |
d485fed4 | 102 | @item mp3 |
831ec935 | 103 | If some MP3 codec like LAME is installed. |
d485fed4 DB |
104 | @end table |
105 | ||
106 | ||
a28d9122 DB |
107 | @chapter Compilation |
108 | ||
109 | @section @code{error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'} | |
110 | ||
111 | This is a bug in gcc. Do not report it to us. Instead, please report it to | |
112 | the gcc developers. Note that we will not add workarounds for gcc bugs. | |
113 | ||
5b43368d DB |
114 | Also note that (some of) the gcc developers believe this is not a bug or |
115 | not a bug they should fix: | |
116 | @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203}. | |
117 | Then again, some of them do not know the difference between an undecidable | |
118 | problem and an NP-hard problem... | |
a28d9122 | 119 | |
d485fed4 DB |
120 | @chapter Usage |
121 | ||
831ec935 | 122 | @section ffmpeg does not work; what is wrong? |
d485fed4 | 123 | |
4f1ab3ce | 124 | Try a @code{make distclean} in the ffmpeg source directory before the build. If this does not help see |
d485fed4 DB |
125 | (@url{http://ffmpeg.org/bugreports.html}). |
126 | ||
831ec935 | 127 | @section How do I encode single pictures into movies? |
7ff56c72 | 128 | |
1fee8b3a VP |
129 | First, rename your pictures to follow a numerical sequence. |
130 | For example, img1.jpg, img2.jpg, img3.jpg,... | |
131 | Then you may run: | |
7ff56c72 FB |
132 | |
133 | @example | |
a9d21e78 | 134 | ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg |
7ff56c72 FB |
135 | @end example |
136 | ||
1fee8b3a | 137 | Notice that @samp{%d} is replaced by the image number. |
7ff56c72 | 138 | |
1fee8b3a | 139 | @file{img%03d.jpg} means the sequence @file{img001.jpg}, @file{img002.jpg}, etc... |
7ff56c72 | 140 | |
49f64022 JVS |
141 | If you have large number of pictures to rename, you can use the |
142 | following command to ease the burden. The command, using the bourne | |
143 | shell syntax, symbolically links all files in the current directory | |
144 | that match @code{*jpg} to the @file{/tmp} directory in the sequence of | |
145 | @file{img001.jpg}, @file{img002.jpg} and so on. | |
146 | ||
147 | @example | |
148 | x=1; for i in *jpg; do counter=$(printf %03d $x); ln "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done | |
149 | @end example | |
150 | ||
151 | If you want to sequence them by oldest modified first, substitute | |
152 | @code{$(ls -r -t *jpg)} in place of @code{*jpg}. | |
153 | ||
154 | Then run: | |
155 | ||
156 | @example | |
157 | ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg | |
158 | @end example | |
159 | ||
1fee8b3a | 160 | The same logic is used for any image format that ffmpeg reads. |
7ff56c72 | 161 | |
5965e1a9 | 162 | @section How do I encode movie to single pictures? |
a9d21e78 | 163 | |
3c88ea24 | 164 | Use: |
ad21ad45 | 165 | |
ad21ad45 | 166 | @example |
3c88ea24 | 167 | ffmpeg -i movie.mpg movie%d.jpg |
ad21ad45 VP |
168 | @end example |
169 | ||
3c88ea24 BC |
170 | The @file{movie.mpg} used as input will be converted to |
171 | @file{movie1.jpg}, @file{movie2.jpg}, etc... | |
ad21ad45 VP |
172 | |
173 | Instead of relying on file format self-recognition, you may also use | |
174 | @table @option | |
175 | @item -vcodec ppm | |
176 | @item -vcodec png | |
177 | @item -vcodec mjpeg | |
178 | @end table | |
179 | to force the encoding. | |
180 | ||
181 | Applying that to the previous example: | |
182 | @example | |
3c88ea24 | 183 | ffmpeg -i movie.mpg -f image2 -vcodec mjpeg menu%d.jpg |
ad21ad45 VP |
184 | @end example |
185 | ||
186 | Beware that there is no "jpeg" codec. Use "mjpeg" instead. | |
187 | ||
5965e1a9 | 188 | @section Why do I see a slight quality degradation with multithreaded MPEG* encoding? |
f2fe8752 RS |
189 | |
190 | For multithreaded MPEG* encoding, the encoded slices must be independent, | |
cacf7199 MM |
191 | otherwise thread n would practically have to wait for n-1 to finish, so it's |
192 | quite logical that there is a small reduction of quality. This is not a bug. | |
f2fe8752 | 193 | |
5965e1a9 | 194 | @section How can I read from the standard input or write to the standard output? |
47d944d2 | 195 | |
831ec935 | 196 | Use @file{-} as file name. |
47d944d2 | 197 | |
9ba42958 | 198 | @section Why does the chrominance data seem to be sampled at a different time from the luminance data on bt8x8 captures on Linux? |
7c0dc383 | 199 | |
115329f1 | 200 | This is a well-known bug in the bt8x8 driver. For 2.4.26 there is a patch at |
0fa5f24c | 201 | (@url{http://svn.ffmpeg.org/michael/trunk/patches/bttv-420-2.4.26.patch?view=co}). This may also |
cacf7199 | 202 | apply cleanly to other 2.4-series kernels. |
7c0dc383 | 203 | |
87759af9 | 204 | @section How do I avoid the ugly aliasing artifacts in bt8x8 captures on Linux? |
7c0dc383 | 205 | |
cacf7199 | 206 | Pass 'combfilter=1 lumafilter=1' to the bttv driver. Note though that 'combfilter=1' |
0fa5f24c DB |
207 | will cause somewhat too strong filtering. A fix is to apply (@url{http://svn.ffmpeg.org/michael/trunk/patches/bttv-comb-2.4.26.patch?view=co}) |
208 | or (@url{http://svn.ffmpeg.org/michael/trunk/patches/bttv-comb-2.6.6.patch?view=co}) | |
cacf7199 | 209 | and pass 'combfilter=2'. |
7c0dc383 | 210 | |
9ba42958 | 211 | @section -f jpeg doesn't work. |
fc3e9202 | 212 | |
a9d21e78 | 213 | Try '-f image2 test%d.jpg'. |
fc3e9202 | 214 | |
cacf7199 | 215 | @section Why can I not change the framerate? |
73468318 | 216 | |
9ba42958 | 217 | Some codecs, like MPEG-1/2, only allow a small number of fixed framerates. |
cacf7199 | 218 | Choose a different codec with the -vcodec command line option. |
73468318 | 219 | |
842eabc5 | 220 | @section How do I encode Xvid or DivX video with ffmpeg? |
f62e9435 | 221 | |
842eabc5 | 222 | Both Xvid and DivX (version 4+) are implementations of the ISO MPEG-4 |
f62e9435 | 223 | standard (note that there are many other coding formats that use this |
831ec935 | 224 | same standard). Thus, use '-vcodec mpeg4' to encode in these formats. The |
c9a08db9 | 225 | default fourcc stored in an MPEG-4-coded file will be 'FMP4'. If you want |
115329f1 DB |
226 | a different fourcc, use the '-vtag' option. E.g., '-vtag xvid' will |
227 | force the fourcc 'xvid' to be stored as the video fourcc rather than the | |
f62e9435 MM |
228 | default. |
229 | ||
18e7d87c | 230 | @section How do I encode videos which play on the iPod? |
b4aead58 MN |
231 | |
232 | @table @option | |
18e7d87c | 233 | @item needed stuff |
095247b1 | 234 | -acodec libfaac -vcodec mpeg4 width<=320 height<=240 |
18e7d87c | 235 | @item working stuff |
b4aead58 | 236 | 4mv, title |
18e7d87c DB |
237 | @item non-working stuff |
238 | B-frames | |
b4aead58 | 239 | @item example command line |
9c16add6 | 240 | ffmpeg -i input -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv -trellis 2 -aic 2 -cmp 2 -subcmp 2 -s 320x180 -metadata title=X output.mp4 |
b4aead58 MN |
241 | @end table |
242 | ||
18e7d87c | 243 | @section How do I encode videos which play on the PSP? |
b4aead58 MN |
244 | |
245 | @table @option | |
18e7d87c | 246 | @item needed stuff |
095247b1 | 247 | -acodec libfaac -vcodec mpeg4 width*height<=76800 width%16=0 height%16=0 -ar 24000 -r 30000/1001 or 15000/1001 -f psp |
18e7d87c | 248 | @item working stuff |
b4aead58 | 249 | 4mv, title |
18e7d87c DB |
250 | @item non-working stuff |
251 | B-frames | |
b4aead58 | 252 | @item example command line |
9c16add6 | 253 | ffmpeg -i input -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -ar 24000 -mbd 2 -flags +4mv -trellis 2 -aic 2 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -metadata title=X -f psp output.mp4 |
f7709b1a | 254 | @item needed stuff for H.264 |
b96e074d | 255 | -acodec libfaac -vcodec libx264 width*height<=76800 width%16=0? height%16=0? -ar 48000 -coder 1 -r 30000/1001 or 15000/1001 -f psp |
f7709b1a MN |
256 | @item working stuff for H.264 |
257 | title, loop filter | |
258 | @item non-working stuff for H.264 | |
259 | CAVLC | |
260 | @item example command line | |
9c16add6 | 261 | ffmpeg -i input -acodec libfaac -ab 128kb -vcodec libx264 -b 1200kb -ar 48000 -mbd 2 -coder 1 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -metadata title=X -f psp -flags loop -trellis 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 output.mp4 |
084cadab DS |
262 | @item higher resolution for newer PSP firmwares, width<=480, height<=272 |
263 | -vcodec libx264 -level 21 -coder 1 -f psp | |
264 | @item example command line | |
265 | ffmpeg -i input -acodec libfaac -ab 128kb -ac 2 -ar 48000 -vcodec libx264 -level 21 -b 640kb -coder 1 -f psp -flags +loop -trellis 2 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -g 250 -s 480x272 output.mp4 | |
b4aead58 MN |
266 | @end table |
267 | ||
16ab894e | 268 | @section Which are good parameters for encoding high quality MPEG-4? |
c62997a5 | 269 | |
cd0e37d3 | 270 | '-mbd rd -flags +4mv+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2', |
16ab894e | 271 | things to try: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'. |
c62997a5 | 272 | |
16ab894e | 273 | @section Which are good parameters for encoding high quality MPEG-1/MPEG-2? |
c62997a5 | 274 | |
cd0e37d3 | 275 | '-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2' |
16ab894e DB |
276 | but beware the '-g 100' might cause problems with some decoders. |
277 | Things to try: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd. | |
c62997a5 | 278 | |
f278709c | 279 | @section Interlaced video looks very bad when encoded with ffmpeg, what is wrong? |
c62997a5 | 280 | |
16ab894e DB |
281 | You should use '-flags +ilme+ildct' and maybe '-flags +alt' for interlaced |
282 | material, and try '-top 0/1' if the result looks really messed-up. | |
c62997a5 | 283 | |
99f6278e | 284 | @section How can I read DirectShow files? |
2c29781d | 285 | |
99f6278e DB |
286 | If you have built FFmpeg with @code{./configure --enable-avisynth} |
287 | (only possible on MinGW/Cygwin platforms), | |
288 | then you may use any file that DirectShow can read as input. | |
289 | (Be aware that this feature has been recently added, | |
290 | so you will need to help yourself in case of problems.) | |
2c29781d VP |
291 | |
292 | Just create an "input.avs" text file with this single line ... | |
293 | @example | |
294 | DirectShowSource("C:\path to your file\yourfile.asf") | |
295 | @end example | |
99f6278e | 296 | ... and then feed that text file to FFmpeg: |
2c29781d VP |
297 | @example |
298 | ffmpeg -i input.avs | |
299 | @end example | |
300 | ||
301 | For ANY other help on Avisynth, please visit @url{http://www.avisynth.org/}. | |
302 | ||
f7994861 VP |
303 | @section How can I join video files? |
304 | ||
5449190f | 305 | A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow to join video files by |
f7994861 VP |
306 | merely concatenating them. |
307 | ||
308 | Hence you may concatenate your multimedia files by first transcoding them to | |
309 | these privileged formats, then using the humble @code{cat} command (or the | |
5449190f | 310 | equally humble @code{copy} under Windows), and finally transcoding back to your |
f7994861 VP |
311 | format of choice. |
312 | ||
313 | @example | |
314 | ffmpeg -i input1.avi -sameq intermediate1.mpg | |
315 | ffmpeg -i input2.avi -sameq intermediate2.mpg | |
316 | cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg | |
317 | ffmpeg -i intermediate_all.mpg -sameq output.avi | |
318 | @end example | |
319 | ||
320 | Notice that you should either use @code{-sameq} or set a reasonably high | |
321 | bitrate for your intermediate and output files, if you want to preserve | |
322 | video quality. | |
323 | ||
5449190f | 324 | Also notice that you may avoid the huge intermediate files by taking advantage |
f7994861 VP |
325 | of named pipes, should your platform support it: |
326 | ||
327 | @example | |
328 | mkfifo intermediate1.mpg | |
329 | mkfifo intermediate2.mpg | |
330 | ffmpeg -i input1.avi -sameq -y intermediate1.mpg < /dev/null & | |
331 | ffmpeg -i input2.avi -sameq -y intermediate2.mpg < /dev/null & | |
332 | cat intermediate1.mpg intermediate2.mpg |\ | |
095247b1 | 333 | ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 -acodec libmp3lame output.avi |
f7994861 VP |
334 | @end example |
335 | ||
336 | Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also | |
337 | allow concatenation, and the transcoding step is almost lossless. | |
76597127 JVS |
338 | When using multiple yuv4mpegpipe(s), the first line needs to be discarded |
339 | from all but the first stream. This can be accomplished by piping through | |
340 | @code{tail} as seen below. Note that when piping through @code{tail} you | |
341 | must use command grouping, @code{@{ ;@}}, to background properly. | |
342 | ||
f7994861 VP |
343 | For example, let's say we want to join two FLV files into an output.flv file: |
344 | ||
345 | @example | |
346 | mkfifo temp1.a | |
347 | mkfifo temp1.v | |
348 | mkfifo temp2.a | |
349 | mkfifo temp2.v | |
350 | mkfifo all.a | |
351 | mkfifo all.v | |
352 | ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null & | |
353 | ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null & | |
354 | ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null & | |
76597127 | 355 | @{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; @} & |
f7994861 VP |
356 | cat temp1.a temp2.a > all.a & |
357 | cat temp1.v temp2.v > all.v & | |
358 | ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \ | |
359 | -f yuv4mpegpipe -i all.v \ | |
360 | -sameq -y output.flv | |
361 | rm temp[12].[av] all.[av] | |
362 | @end example | |
363 | ||
fa78d895 | 364 | @section FFmpeg does not adhere to the -maxrate setting, some frames are bigger than maxrate/fps. |
3b36389a | 365 | |
fa78d895 | 366 | Read the MPEG spec about video buffer verifier. |
3b36389a | 367 | |
fa78d895 | 368 | @section I want CBR, but no matter what I do frame sizes differ. |
3b36389a | 369 | |
fa78d895 DB |
370 | You do not understand what CBR is, please read the MPEG spec. |
371 | Read about video buffer verifier and constant bitrate. | |
372 | The one sentence summary is that there is a buffer and the input rate is | |
3b36389a MN |
373 | constant, the output can vary as needed. |
374 | ||
fa78d895 | 375 | @section How do I check if a stream is CBR? |
3b36389a MN |
376 | |
377 | To quote the MPEG-2 spec: | |
378 | "There is no way to tell that a bitstream is constant bitrate without | |
379 | examining all of the vbv_delay values and making complicated computations." | |
380 | ||
86852499 | 381 | |
7ff56c72 FB |
382 | @chapter Development |
383 | ||
5965e1a9 | 384 | @section Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat? |
a93b9dba | 385 | |
cacf7199 | 386 | Yes. Read the Developers Guide of the FFmpeg documentation. Alternatively, |
115329f1 | 387 | examine the source code for one of the many open source projects that |
831ec935 | 388 | already incorporate FFmpeg at (@url{projects.html}). |
a93b9dba | 389 | |
5965e1a9 | 390 | @section Can you support my C compiler XXX? |
7ff56c72 | 391 | |
e867d9b9 DB |
392 | It depends. If your compiler is C99-compliant, then patches to support |
393 | it are likely to be welcome if they do not pollute the source code | |
394 | with @code{#ifdef}s related to the compiler. | |
7ff56c72 | 395 | |
a9d5a448 | 396 | @section Is Microsoft Visual C++ supported? |
2f0b8fbb | 397 | |
a9d5a448 DB |
398 | No. Microsoft Visual C++ is not compliant to the C99 standard and does |
399 | not - among other things - support the inline assembly used in FFmpeg. | |
19671d3f | 400 | If you wish to use MSVC++ for your |
c1989552 | 401 | project then you can link the MSVC++ code with libav* as long as |
2f0b8fbb | 402 | you compile the latter with a working C compiler. For more information, see |
c1989552 RP |
403 | the @emph{Microsoft Visual C++ compatibility} section in the FFmpeg |
404 | documentation. | |
2f0b8fbb | 405 | |
c1989552 | 406 | There have been efforts to make FFmpeg compatible with MSVC++ in the |
2f0b8fbb | 407 | past. However, they have all been rejected as too intrusive, especially |
a9d5a448 | 408 | since MinGW does the job adequately. None of the core developers |
c1989552 | 409 | work with MSVC++ and thus this item is low priority. Should you find |
2f0b8fbb DB |
410 | the silver bullet that solves this problem, feel free to shoot it at us. |
411 | ||
19671d3f RP |
412 | We strongly recommend you to move over from MSVC++ to MinGW tools. |
413 | ||
5965e1a9 | 414 | @section Can I use FFmpeg or libavcodec under Windows? |
7ff56c72 | 415 | |
c1989552 RP |
416 | Yes, but the Cygwin or MinGW tools @emph{must} be used to compile FFmpeg. |
417 | Read the @emph{Windows} section in the FFmpeg documentation to find more | |
418 | information. | |
7ff56c72 | 419 | |
46a845d0 | 420 | To get help and instructions for building FFmpeg under Windows, check out |
e2ef53fc | 421 | the FFmpeg Windows Help Forum at |
ab5ce4ae | 422 | @url{http://ffmpeg.arrozcru.org/}. |
e2ef53fc | 423 | |
5965e1a9 | 424 | @section Can you add automake, libtool or autoconf support? |
7ff56c72 | 425 | |
e867d9b9 | 426 | No. These tools are too bloated and they complicate the build. |
7ff56c72 | 427 | |
5965e1a9 | 428 | @section Why not rewrite ffmpeg in object-oriented C++? |
fbf33e4f | 429 | |
831ec935 | 430 | FFmpeg is already organized in a highly modular manner and does not need to |
115329f1 | 431 | be rewritten in a formal object language. Further, many of the developers |
cacf7199 | 432 | favor straight C; it works for them. For more arguments on this matter, |
bc155732 | 433 | read "Programming Religion" at (@url{http://www.tux.org/lkml/#s15}). |
cacf7199 | 434 | |
5965e1a9 | 435 | @section Why are the ffmpeg programs devoid of debugging symbols? |
cacf7199 MM |
436 | |
437 | The build process creates ffmpeg_g, ffplay_g, etc. which contain full debug | |
831ec935 | 438 | information. Those binaries are stripped to create ffmpeg, ffplay, etc. If |
cacf7199 | 439 | you need the debug information, used the *_g versions. |
fbf33e4f | 440 | |
5965e1a9 | 441 | @section I do not like the LGPL, can I contribute code under the GPL instead? |
61a1e081 | 442 | |
e180129f | 443 | Yes, as long as the code is optional and can easily and cleanly be placed |
b250f9c6 | 444 | under #if CONFIG_GPL without breaking anything. So for example a new codec |
831ec935 | 445 | or filter would be OK under GPL while a bug fix to LGPL code would not. |
61a1e081 | 446 | |
e180129f | 447 | @section I want to compile xyz.c alone but my compiler produced many errors. |
61a1e081 | 448 | |
e180129f DB |
449 | Common code is in its own files in libav* and is used by the individual |
450 | codecs. They will not work without the common parts, you have to compile | |
451 | the whole libav*. If you wish, disable some parts with configure switches. | |
452 | You can also try to hack it and remove more, but if you had problems fixing | |
453 | the compilation failure then you are probably not qualified for this. | |
61a1e081 | 454 | |
4cb3aa09 PI |
455 | @section I'm using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available. |
456 | ||
457 | FFmpeg is a pure C project, so to use the libraries within your C++ application | |
458 | you need to explicitly state that you are using a C library. You can do this by | |
459 | encompassing your FFmpeg includes using @code{extern "C"}. | |
460 | ||
461 | See @url{http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3} | |
462 | ||
2cab6401 | 463 | @section I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat? |
f994f61e | 464 | |
1c1b5a40 DB |
465 | You have to implement a URLProtocol, see libavformat/file.c in FFmpeg |
466 | and libmpdemux/demux_lavf.c in MPlayer sources. | |
f994f61e | 467 | |
e9766450 RP |
468 | @section I get "No compatible shell script interpreter found." in MSys. |
469 | ||
470 | The standard MSys bash (2.04) is broken. You need to install 2.05 or later. | |
471 | ||
e75f8997 RP |
472 | @section I get "./configure: line <xxx>: pr: command not found" in MSys. |
473 | ||
474 | The standard MSys install doesn't come with pr. You need to get it from the coreutils package. | |
475 | ||
5c159f40 | 476 | @section I tried to pass RTP packets into a decoder, but it doesn't work. |
b72ad042 | 477 | |
241fb0c4 LB |
478 | RTP is a container format like any other, you must first depacketize the |
479 | codec frames/samples stored in RTP and then feed to the decoder. | |
b72ad042 | 480 | |
7c1ebf17 | 481 | @section Where can I find libav* headers for Pascal/Delphi? |
04704a78 MN |
482 | |
483 | see @url{http://www.iversenit.dk/dev/ffmpeg-headers/} | |
484 | ||
7c1ebf17 | 485 | @section Where is the documentation about ffv1, msmpeg4, asv1, 4xm? |
afe28f7c | 486 | |
0fa5f24c | 487 | see @url{http://svn.ffmpeg.org/michael/trunk/docs/} |
afe28f7c | 488 | |
29569571 | 489 | @section How do I feed H.263-RTP (and other codecs in RTP) to libavcodec? |
8749180c | 490 | |
241fb0c4 | 491 | Even if peculiar since it is network oriented, RTP is a container like any |
33ed2d84 LB |
492 | other. You have to @emph{demux} RTP before feeding the payload to libavcodec. |
493 | In this specific case please look at RFC 4629 to see how it should be done. | |
8749180c | 494 | |
29569571 | 495 | @section AVStream.r_frame_rate is wrong, it is much larger than the framerate. |
70fd3975 MN |
496 | |
497 | r_frame_rate is NOT the average framerate, it is the smallest framerate | |
29569571 DB |
498 | that can accurately represent all timestamps. So no, it is not |
499 | wrong if it is larger than the average! | |
500 | For example, if you have mixed 25 and 30 fps content, then r_frame_rate | |
70fd3975 MN |
501 | will be 150. |
502 | ||
7ff56c72 | 503 | @bye |