1 # TODO: libilbc (requires webrtc.org version), flite (some additional voices required)
3 # How to deal with ffmpeg/opencv checken-egg problem:
4 # 1. make-request -r --without opencv ffmpeg.spec
5 # 2. make-request -r opencv.spec
6 # 3. bump release of ffmpeg.spec
7 # 4. make-request -r ffmpeg.spec
10 %bcond_with nonfree # non free options of package (currently: faac)
11 %bcond_with aacplus # AAC+ encoding via libaacplus (requires nonfree)
12 %bcond_with fdk_aac # AAC encoding via libfdk_aac (requires nonfree)
13 %bcond_without autoreqdep # don't care about package name deps generated by rpm
14 %bcond_without caca # textual display using libcaca
15 %bcond_with flite # flite voice synthesis support [ffmpeg expects more voices]
16 %bcond_without frei0r # build without frei0r video filtering
17 %bcond_with ilbc # iLBC de/encoding via libilbc
18 %bcond_without openal # build without OpenAL 1.1 capture support
19 %bcond_without opencv # build without opencv video filtering
20 %bcond_without pulseaudio # build without PulseAudio input support
21 %bcond_without x264 # build without x264 encoder
22 %bcond_without utvideo # build without Ut Video decoder
23 %bcond_without va # VAAPI (Video Acceleration API)
24 %bcond_without vpx # VP8, a high-quality video codec
25 %bcond_without doc # don't build docs
27 Summary: FFmpeg - a very fast video and audio converter
28 Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
32 # LGPL or GPL, chosen at configure time (GPL version is more featured)
33 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
34 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
35 License: GPL v3+ with LGPL v3+ parts
36 Group: Applications/Multimedia
37 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
38 # Source0-md5: 3ed526cea20c1bffb5a37f7730f710bd
39 Source1: ffserver.init
40 Source2: ffserver.sysconfig
41 Source3: ffserver.conf
42 Patch0: %{name}-gsm.patch
43 Patch1: %{name}-opencv24.patch
44 Patch2: %{name}-openjpeg.patch
45 URL: http://www.ffmpeg.org/
46 %{?with_openal:BuildRequires: OpenAL-devel}
47 BuildRequires: SDL-devel >= 1.2.1
48 BuildRequires: alsa-lib-devel
49 BuildRequires: bzip2-devel
50 BuildRequires: celt-devel >= 0.11.0
51 %{?with_nonfree:BuildRequires: faac-devel}
52 %{?with_fdk_aac:BuildRequires: fdk-aac-devel}
53 %{?with_flite:BuildRequires: flite-devel}
54 BuildRequires: fontconfig-devel
55 BuildRequires: freetype-devel
56 %{?with_frei0r:BuildRequires: frei0r-devel}
58 # require version with altivec support fixed
59 BuildRequires: gcc >= 5:3.3.2-3
61 BuildRequires: gnutls-devel
62 BuildRequires: jack-audio-connection-kit-devel
63 BuildRequires: lame-libs-devel >= 3.98.3
64 %{?with_aacplus:BuildRequires: libaacplus-devel >= 2.0.0}
65 BuildRequires: libass-devel
66 BuildRequires: libavc1394-devel
67 BuildRequires: libbluray-devel
68 %{?with_caca:BuildRequires: libcaca-devel}
69 BuildRequires: libcdio-devel
70 BuildRequires: libdc1394-devel >= 2
71 BuildRequires: libgsm-devel
72 BuildRequires: libiec61883-devel
73 %{?with_ilbc:BuildRequires: libilbc-devel}
74 BuildRequires: libmodplug-devel
75 BuildRequires: libnut-devel
76 BuildRequires: libraw1394-devel >= 2
77 BuildRequires: librtmp-devel
78 BuildRequires: libtheora-devel >= 1.0-0.beta3
79 BuildRequires: libtool >= 2:1.4d-3
80 BuildRequires: libv4l-devel
81 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
82 BuildRequires: libvdpau-devel >= 0.2
83 BuildRequires: libvorbis-devel
84 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
86 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245}
92 BuildRequires: opencore-amr-devel
93 %{?with_opencv:BuildRequires: opencv-devel}
94 BuildRequires: openjpeg-devel >= 1.5
95 BuildRequires: opus-devel
96 BuildRequires: perl-Encode
97 BuildRequires: perl-tools-pod
98 BuildRequires: pkgconfig
99 %{?with_pulseaudio:BuildRequires: pulseaudio-devel}
100 BuildRequires: rpmbuild(macros) >= 1.470
101 BuildRequires: schroedinger-devel
102 BuildRequires: speex-devel >= 1:1.2-rc1
103 %{?with_doc:BuildRequires: tetex}
104 %{?with_doc:BuildRequires: texi2html}
105 %{?with_doc:BuildRequires: texinfo}
106 BuildRequires: twolame-devel
107 %{?with_utvideo:BuildRequires: utvideo-devel}
109 BuildRequires: vo-aacenc-devel
110 BuildRequires: vo-amrwbenc-devel
111 BuildRequires: xavs-devel
112 BuildRequires: xorg-lib-libXext-devel
113 BuildRequires: xorg-lib-libXfixes-devel
114 BuildRequires: xvid-devel >= 1:1.1.0
115 BuildRequires: zlib-devel
116 %{?with_autoreqdep:BuildConflicts: libpostproc}
117 # overflows maximum hash table size
118 BuildConflicts: pdksh < 5.2.14-57
119 Requires: %{name}-libs = %{version}-%{release}
120 Requires: xvid >= 1:1.1.0
121 Obsoletes: libpostproc
122 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
124 %define _noautoreqdep libGL.so.1 libGLU.so.1
126 %define specflags -fno-strict-aliasing
128 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
129 %define specflags_ia32 -fomit-frame-pointer
130 # -mmmx is needed to enable <mmintrin.h> code.
131 %define specflags_i586 -mmmx
132 %define specflags_i686 -mmmx
133 %define specflags_ppc -fPIC
136 FFmpeg is a complete solution to record, convert and stream audio and
137 video. It is a command line tool to convert one video file format to
138 another. It also supports grabbing and encoding in real time from a TV
141 %description -l pl.UTF-8
142 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
143 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
144 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
145 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
149 Summary: ffmpeg libraries
150 Summary(pl.UTF-8): Biblioteki ffmpeg
154 This package contains the ffmpeg shared libraries:
155 - the codec library (libavcodec). It supports most existing encoding
156 formats (MPEG, DivX, MPEG4, AC3, DV...),
157 - demuxer library (libavformat). It supports most existing file
158 formats (AVI, MPEG, OGG, Matroska, ASF...),
159 - video postprocessing library (libpostproc).
161 %description libs -l pl.UTF-8
162 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
163 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
164 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
165 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
166 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
167 - bibliotekę postprocessingu (libpostproc).
170 Summary: ffmpeg header files
171 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
172 Group: Development/Libraries
173 Requires: %{name}-libs = %{version}-%{release}
174 # Libs.private from *.pc (unreasonably they are all the same)
175 Requires: SDL-devel >= 1.2.1
176 Requires: alsa-lib-devel
177 Requires: bzip2-devel
178 Requires: celt-devel >= 0.11.0
179 %{?with_nonfree:Requires: faac-devel}
180 %{?with_fdk_aac:Requires: fdk-aac-devel}
181 Requires: fontconfig-devel
182 Requires: freetype-devel
183 Requires: jack-audio-connection-kit-devel
184 %{?with_flite:Requires: flite-devel}
185 Requires: lame-libs-devel >= 3.98.3
186 %{?with_aacplus:Requires: libaacplus-devel >= 2.0.0}
187 Requires: libass-devel
188 Requires: libavc1394-devel
189 Requires: libbluray-devel
190 Requires: libcdio-devel
191 Requires: libdc1394-devel >= 2
192 Requires: libgsm-devel
193 Requires: libiec61883-devel
194 %{?with_ilbc:Requires: libilbc-devel}
195 Requires: libmodplug-devel
196 Requires: libnut-devel
197 Requires: libraw1394-devel >= 2
198 Requires: librtmp-devel
199 Requires: libtheora-devel >= 1.0-0.beta3
200 %{?with_va:Requires: libva-devel >= 1.0.3}
201 Requires: libvorbis-devel
202 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
203 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
204 Requires: opencore-amr-devel
205 Requires: openjpeg-devel >= 1.5
206 Requires: schroedinger-devel
207 Requires: speex-devel >= 1:1.2-rc1
208 Requires: twolame-devel
209 Requires: vo-aacenc-devel
210 Requires: vo-amrwbenc-devel
212 Requires: xorg-lib-libXext-devel
213 Requires: xorg-lib-libXfixes-devel
214 Requires: xvid-devel >= 1:1.1.0
216 Obsoletes: libpostproc-devel
221 %description devel -l pl.UTF-8
222 Pliki nagłówkowe ffmpeg.
225 Summary: ffmpeg static libraries
226 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
227 Group: Development/Libraries
228 Requires: %{name}-devel = %{version}-%{release}
231 ffmpeg static libraries (libavcodec and libavformat).
233 %description static -l pl.UTF-8
234 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
237 Summary: FFplay - SDL-based media player
238 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
239 Group: Applications/Multimedia
240 Requires: %{name}-libs = %{version}-%{release}
243 FFplay is a very simple and portable media player using the FFmpeg
244 libraries and the SDL library. It is mostly used as a test bench for
245 the various APIs of FFmpeg.
247 %description ffplay -l pl.UTF-8
248 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
249 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
250 testowania różnych API FFmpeg.
253 Summary: FFserver video server
254 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
256 Requires(post,preun): /sbin/chkconfig
257 Requires: %{name}-libs = %{version}-%{release}
258 Requires: rc-scripts >= 0.4.0.10
260 %description ffserver
261 FFserver is a streaming server for both audio and video. It supports
262 several live feeds, streaming from files and time shifting on live
263 feeds (you can seek to positions in the past on each live feed,
264 provided you specify a big enough feed storage in ffserver.conf).
266 %description ffserver -l pl.UTF-8
267 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
268 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
269 czasie dla źródeł na żywo (można przeskakiwać na położenia w
270 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
271 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
279 # package the grep result for mplayer, the result formatted as ./mplayer/configure
280 cat <<EOF > ffmpeg-avconfig
282 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
283 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
284 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
285 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
286 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
287 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
288 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
290 cat <<'EOF' >> ffmpeg-avconfig
294 echo $_libavdecoders_all
297 echo $_libavencoders_all
300 echo $_libavparsers_all
306 echo $_libavdemuxers_all
309 echo $_libavmuxers_all
312 echo $_libavprotocols_all
334 # - it's not autoconf configure
335 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
337 --arch=%{_target_base_arch} \
338 --prefix=%{_prefix} \
339 --libdir=%{_libdir} \
340 --shlibdir=%{_libdir} \
341 --mandir=%{_mandir} \
342 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
343 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
346 --disable-optimizations \
347 --disable-stripping \
349 --enable-avresample \
353 --enable-fontconfig \
354 %{?with_frei0r:--enable-frei0r} \
355 %{?with_aacplus:--enable-libaacplus} \
358 %{?with_libcaca:--enable-libcaca} \
362 %{?with_fdk_aac:--enable-libfdk-aac} \
363 %{?with_flite:--enable-libflite} \
364 --enable-libfreetype \
366 --enable-libiec61883 \
367 %{?with_ilbc:--enable-libilbc} \
368 --enable-libmodplug \
369 --enable-libmp3lame \
371 --enable-libopencore-amrnb \
372 --enable-libopencore-amrwb \
373 %{?with_opencv:--enable-libopencv} \
374 --enable-libopenjpeg \
376 %{?with_pulseaudio:--enable-libpulse} \
378 --enable-libschroedinger \
381 --enable-libtwolame \
382 %{?with_utvideo:--enable-libutvideo} \
384 --enable-libvo-aacenc \
385 --enable-libvo-amrwbenc \
387 %{?with_vpx:--enable-libvpx} \
388 %{?with_x264:--enable-libx264} \
391 %{?with_openal:--enable-openal} \
396 %{?with_va:--enable-vaapi} \
399 %ifnarch %{ix86} %{x8664}
409 --enable-runtime-cpudetect
411 # force oldscaler build
412 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
417 # CC_O to add -c to commandline. makefile should be patched
418 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
421 rm -rf $RPM_BUILD_ROOT
422 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
423 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
424 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
427 DESTDIR=$RPM_BUILD_ROOT \
430 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
431 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
432 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
433 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
434 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
435 for a in libavutil/*/bswap.h; do
436 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
438 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
439 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
440 # for lim-omx ffmpeg components
441 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
443 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
444 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
445 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
446 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
447 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
449 # install as ffmpeg-avconfig to avoid with possible programs looking for
450 # ffmpeg-config and expecting --libs output from it which is not implemented
451 # simple to do (by querying pkgconfig), but why?
452 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
455 rm -rf $RPM_BUILD_ROOT
457 %post libs -p /sbin/ldconfig
458 %postun libs -p /sbin/ldconfig
461 %groupadd -g 167 ffserver
462 %useradd -g ffserver -u 167 ffserver
465 /sbin/chkconfig --add ffserver
466 %service ffserver restart
469 if [ "$1" = 0 ]; then
470 %service ffserver stop
471 /sbin/chkconfig --del ffserver
475 if [ "$1" = 0 ]; then
477 %groupremove ffserver
481 %defattr(644,root,root,755)
482 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
483 %attr(755,root,root) %{_bindir}/ffmpeg
484 %attr(755,root,root) %{_bindir}/ffprobe
485 %attr(755,root,root) %{_bindir}/qt-faststart
486 %dir %{_datadir}/ffmpeg
487 %{_datadir}/ffmpeg/*.ffpreset
488 %{_datadir}/ffmpeg/ffprobe.xsd
489 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
490 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
493 %defattr(644,root,root,755)
494 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
495 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.54
496 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
497 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.54
498 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
499 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.3
500 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
501 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.54
502 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
503 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.0
504 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
505 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
506 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
507 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
508 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
509 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
510 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
511 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
514 %defattr(644,root,root,755)
515 %doc doc/optimization.txt
516 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
517 %attr(755,root,root) %{_libdir}/libavcodec.so
518 %attr(755,root,root) %{_libdir}/libavdevice.so
519 %attr(755,root,root) %{_libdir}/libavfilter.so
520 %attr(755,root,root) %{_libdir}/libavformat.so
521 %attr(755,root,root) %{_libdir}/libavresample.so
522 %attr(755,root,root) %{_libdir}/libavutil.so
523 %attr(755,root,root) %{_libdir}/libpostproc.so
524 %attr(755,root,root) %{_libdir}/libswresample.so
525 %attr(755,root,root) %{_libdir}/libswscale.so
526 %{_includedir}/ffmpeg
527 %{_includedir}/libavcodec
528 %{_includedir}/libavdevice
529 %{_includedir}/libavfilter
530 %{_includedir}/libavformat
531 %{_includedir}/libavresample
532 %{_includedir}/libavutil
533 %{_includedir}/libpostproc
534 %{_includedir}/libswresample
535 %{_includedir}/libswscale
536 %{_pkgconfigdir}/libavcodec.pc
537 %{_pkgconfigdir}/libavdevice.pc
538 %{_pkgconfigdir}/libavfilter.pc
539 %{_pkgconfigdir}/libavformat.pc
540 %{_pkgconfigdir}/libavresample.pc
541 %{_pkgconfigdir}/libavutil.pc
542 %{_pkgconfigdir}/libpostproc.pc
543 %{_pkgconfigdir}/libswresample.pc
544 %{_pkgconfigdir}/libswscale.pc
547 %defattr(644,root,root,755)
548 %{_libdir}/libavcodec.a
549 %{_libdir}/libavdevice.a
550 %{_libdir}/libavfilter.a
551 %{_libdir}/libavformat.a
552 %{_libdir}/libavresample.a
553 %{_libdir}/libavutil.a
554 %{_libdir}/libpostproc.a
555 %{_libdir}/libswresample.a
556 %{_libdir}/libswscale.a
559 %defattr(644,root,root,755)
560 %attr(755,root,root) %{_bindir}/ffplay
561 %{?with_doc:%{_mandir}/man1/ffplay.1*}
564 %defattr(644,root,root,755)
565 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
566 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
567 %attr(755,root,root) %{_sbindir}/ffserver
568 %attr(754,root,root) /etc/rc.d/init.d/ffserver
569 %{?with_doc:%{_mandir}/man1/ffserver.1*}
570 %dir %attr(770,root,ffserver) /var/cache/ffserver
571 %dir %attr(770,root,ffserver) /var/log/ffserver