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