2 # How to deal with ffmpeg/opencv checken-egg problem:
3 # 1. make-request -r --without opencv ffmpeg.spec
4 # 2. make-request -r opencv.spec
5 # 3. bump release of ffmpeg.spec
6 # 4. make-request -r ffmpeg.spec
9 %bcond_with nonfree # non free options of package (currently: faac)
10 %bcond_with aacplus # AAC+ encoding via libaacplus (requires nonfree)
11 %bcond_with fdk_aac # AAC encoding via libfdk_aac (requires nonfree)
12 %bcond_without caca # textual display using libcaca
13 %bcond_without flite # flite voice synthesis support
14 %bcond_without frei0r # frei0r video filtering
15 %bcond_without ilbc # iLBC de/encoding via WebRTC libilbc
16 %bcond_without openal # OpenAL 1.1 capture support
17 %bcond_without opencv # OpenCV video filtering
18 %bcond_without pulseaudio # PulseAudio input support
19 %bcond_without x264 # x264 encoder
20 %bcond_without utvideo # Ut Video decoder
21 %bcond_without va # VAAPI (Video Acceleration API)
22 %bcond_without vpx # VP8, a high-quality video codec
23 %bcond_without doc # don't build docs
25 Summary: FFmpeg - a very fast video and audio converter
26 Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
30 # LGPL or GPL, chosen at configure time (GPL version is more featured)
31 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
32 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
33 License: GPL v3+ with LGPL v3+ parts
34 Group: Applications/Multimedia
35 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
36 # Source0-md5: 3ed526cea20c1bffb5a37f7730f710bd
37 Source1: ffserver.init
38 Source2: ffserver.sysconfig
39 Source3: ffserver.conf
40 Patch0: %{name}-gsm.patch
41 Patch1: %{name}-opencv24.patch
42 Patch2: %{name}-openjpeg.patch
43 URL: http://www.ffmpeg.org/
44 %{?with_openal:BuildRequires: OpenAL-devel}
45 BuildRequires: SDL-devel >= 1.2.1
46 BuildRequires: alsa-lib-devel
47 BuildRequires: bzip2-devel
48 BuildRequires: celt-devel >= 0.11.0
49 %{?with_nonfree:BuildRequires: faac-devel}
50 %{?with_fdk_aac:BuildRequires: fdk-aac-devel}
51 %{?with_flite:BuildRequires: flite-devel >= 1.4}
52 BuildRequires: fontconfig-devel
53 BuildRequires: freetype-devel
54 %{?with_frei0r:BuildRequires: frei0r-devel}
56 # require version with altivec support fixed
57 BuildRequires: gcc >= 5:3.3.2-3
59 BuildRequires: gnutls-devel
60 BuildRequires: jack-audio-connection-kit-devel
61 BuildRequires: lame-libs-devel >= 3.98.3
62 %{?with_aacplus:BuildRequires: libaacplus-devel >= 2.0.0}
63 BuildRequires: libass-devel
64 BuildRequires: libavc1394-devel
65 BuildRequires: libbluray-devel
66 %{?with_caca:BuildRequires: libcaca-devel}
67 BuildRequires: libcdio-devel
68 BuildRequires: libdc1394-devel >= 2
69 BuildRequires: libgsm-devel
70 BuildRequires: libiec61883-devel
71 BuildRequires: libmodplug-devel
72 BuildRequires: libnut-devel
73 BuildRequires: libraw1394-devel >= 2
74 BuildRequires: librtmp-devel
75 BuildRequires: libtheora-devel >= 1.0-0.beta3
76 BuildRequires: libtool >= 2:1.4d-3
77 BuildRequires: libv4l-devel
78 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
79 BuildRequires: libvdpau-devel >= 0.2
80 BuildRequires: libvorbis-devel
81 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
83 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245}
89 BuildRequires: opencore-amr-devel
90 %{?with_opencv:BuildRequires: opencv-devel}
91 BuildRequires: openjpeg-devel >= 1.5
92 BuildRequires: opus-devel
93 BuildRequires: perl-Encode
94 BuildRequires: perl-tools-pod
95 BuildRequires: pkgconfig
96 %{?with_pulseaudio:BuildRequires: pulseaudio-devel}
97 BuildRequires: rpmbuild(macros) >= 1.470
98 BuildRequires: schroedinger-devel
99 BuildRequires: speex-devel >= 1:1.2-rc1
100 %{?with_doc:BuildRequires: tetex}
101 %{?with_doc:BuildRequires: texi2html}
102 %{?with_doc:BuildRequires: texinfo}
103 BuildRequires: twolame-devel
104 %{?with_utvideo:BuildRequires: utvideo-devel}
105 BuildRequires: vo-aacenc-devel
106 BuildRequires: vo-amrwbenc-devel
107 %{?with_ilbc:BuildRequires: webrtc-libilbc-devel}
108 BuildRequires: xavs-devel
109 BuildRequires: xorg-lib-libXext-devel
110 BuildRequires: xorg-lib-libXfixes-devel
111 BuildRequires: xvid-devel >= 1:1.1.0
113 BuildRequires: zlib-devel
114 %{?with_autoreqdep:BuildConflicts: libpostproc}
115 # overflows maximum hash table size
116 BuildConflicts: pdksh < 5.2.14-57
117 Requires: %{name}-libs = %{version}-%{release}
118 Requires: xvid >= 1:1.1.0
119 Obsoletes: libpostproc
120 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
122 %define _noautoreqdep libGL.so.1 libGLU.so.1
124 %define specflags -fno-strict-aliasing
126 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
127 %define specflags_ia32 -fomit-frame-pointer
128 # -mmmx is needed to enable <mmintrin.h> code.
129 %define specflags_i586 -mmmx
130 %define specflags_i686 -mmmx
131 %define specflags_ppc -fPIC
134 FFmpeg is a complete solution to record, convert and stream audio and
135 video. It is a command line tool to convert one video file format to
136 another. It also supports grabbing and encoding in real time from a TV
139 %description -l pl.UTF-8
140 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
141 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
142 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
143 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
147 Summary: ffmpeg libraries
148 Summary(pl.UTF-8): Biblioteki ffmpeg
152 This package contains the ffmpeg shared libraries:
153 - the codec library (libavcodec). It supports most existing encoding
154 formats (MPEG, DivX, MPEG4, AC3, DV...),
155 - demuxer library (libavformat). It supports most existing file
156 formats (AVI, MPEG, OGG, Matroska, ASF...),
157 - video postprocessing library (libpostproc).
159 %description libs -l pl.UTF-8
160 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
161 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
162 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
163 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
164 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
165 - bibliotekę postprocessingu (libpostproc).
168 Summary: ffmpeg header files
169 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
170 Group: Development/Libraries
171 Requires: %{name}-libs = %{version}-%{release}
172 # Libs.private from *.pc (unreasonably they are all the same)
173 Requires: SDL-devel >= 1.2.1
174 Requires: alsa-lib-devel
175 Requires: bzip2-devel
176 Requires: celt-devel >= 0.11.0
177 %{?with_nonfree:Requires: faac-devel}
178 %{?with_fdk_aac:Requires: fdk-aac-devel}
179 Requires: fontconfig-devel
180 Requires: freetype-devel
181 Requires: jack-audio-connection-kit-devel
182 %{?with_flite:Requires: flite-devel >= 1.4}
183 Requires: lame-libs-devel >= 3.98.3
184 %{?with_aacplus:Requires: libaacplus-devel >= 2.0.0}
185 Requires: libass-devel
186 Requires: libavc1394-devel
187 Requires: libbluray-devel
188 Requires: libcdio-devel
189 Requires: libdc1394-devel >= 2
190 Requires: libgsm-devel
191 Requires: libiec61883-devel
192 Requires: libmodplug-devel
193 Requires: libnut-devel
194 Requires: libraw1394-devel >= 2
195 Requires: librtmp-devel
196 Requires: libtheora-devel >= 1.0-0.beta3
197 %{?with_va:Requires: libva-devel >= 1.0.3}
198 Requires: libvorbis-devel
199 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
200 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
201 Requires: opencore-amr-devel
202 %{?with_opencv:Requires: opencv-devel}
203 Requires: openjpeg-devel >= 1.5
204 Requires: schroedinger-devel
205 Requires: speex-devel >= 1:1.2-rc1
206 Requires: twolame-devel
207 Requires: vo-aacenc-devel
208 Requires: vo-amrwbenc-devel
209 %{?with_ilbc:Requires: webrtc-libilbc-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