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 Requires: openjpeg-devel >= 1.5
203 Requires: schroedinger-devel
204 Requires: speex-devel >= 1:1.2-rc1
205 Requires: twolame-devel
206 Requires: vo-aacenc-devel
207 Requires: vo-amrwbenc-devel
208 %{?with_ilbc:Requires: webrtc-libilbc-devel}
210 Requires: xorg-lib-libXext-devel
211 Requires: xorg-lib-libXfixes-devel
212 Requires: xvid-devel >= 1:1.1.0
214 Obsoletes: libpostproc-devel
219 %description devel -l pl.UTF-8
220 Pliki nagłówkowe ffmpeg.
223 Summary: ffmpeg static libraries
224 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
225 Group: Development/Libraries
226 Requires: %{name}-devel = %{version}-%{release}
229 ffmpeg static libraries (libavcodec and libavformat).
231 %description static -l pl.UTF-8
232 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
235 Summary: FFplay - SDL-based media player
236 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
237 Group: Applications/Multimedia
238 Requires: %{name}-libs = %{version}-%{release}
241 FFplay is a very simple and portable media player using the FFmpeg
242 libraries and the SDL library. It is mostly used as a test bench for
243 the various APIs of FFmpeg.
245 %description ffplay -l pl.UTF-8
246 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
247 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
248 testowania różnych API FFmpeg.
251 Summary: FFserver video server
252 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
254 Requires(post,preun): /sbin/chkconfig
255 Requires: %{name}-libs = %{version}-%{release}
256 Requires: rc-scripts >= 0.4.0.10
258 %description ffserver
259 FFserver is a streaming server for both audio and video. It supports
260 several live feeds, streaming from files and time shifting on live
261 feeds (you can seek to positions in the past on each live feed,
262 provided you specify a big enough feed storage in ffserver.conf).
264 %description ffserver -l pl.UTF-8
265 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
266 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
267 czasie dla źródeł na żywo (można przeskakiwać na położenia w
268 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
269 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
277 # package the grep result for mplayer, the result formatted as ./mplayer/configure
278 cat <<EOF > ffmpeg-avconfig
280 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
281 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
282 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
283 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
284 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
285 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
286 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
288 cat <<'EOF' >> ffmpeg-avconfig
292 echo $_libavdecoders_all
295 echo $_libavencoders_all
298 echo $_libavparsers_all
304 echo $_libavdemuxers_all
307 echo $_libavmuxers_all
310 echo $_libavprotocols_all
332 # - it's not autoconf configure
333 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
335 --arch=%{_target_base_arch} \
336 --prefix=%{_prefix} \
337 --libdir=%{_libdir} \
338 --shlibdir=%{_libdir} \
339 --mandir=%{_mandir} \
340 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
341 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
344 --disable-optimizations \
345 --disable-stripping \
347 --enable-avresample \
351 --enable-fontconfig \
352 %{?with_frei0r:--enable-frei0r} \
353 %{?with_aacplus:--enable-libaacplus} \
356 %{?with_libcaca:--enable-libcaca} \
360 %{?with_fdk_aac:--enable-libfdk-aac} \
361 %{?with_flite:--enable-libflite} \
362 --enable-libfreetype \
364 --enable-libiec61883 \
365 %{?with_ilbc:--enable-libilbc} \
366 --enable-libmodplug \
367 --enable-libmp3lame \
369 --enable-libopencore-amrnb \
370 --enable-libopencore-amrwb \
371 %{?with_opencv:--enable-libopencv} \
372 --enable-libopenjpeg \
374 %{?with_pulseaudio:--enable-libpulse} \
376 --enable-libschroedinger \
379 --enable-libtwolame \
380 %{?with_utvideo:--enable-libutvideo} \
382 --enable-libvo-aacenc \
383 --enable-libvo-amrwbenc \
385 %{?with_vpx:--enable-libvpx} \
386 %{?with_x264:--enable-libx264} \
389 %{?with_openal:--enable-openal} \
394 %{?with_va:--enable-vaapi} \
397 %ifnarch %{ix86} %{x8664}
407 --enable-runtime-cpudetect
409 # force oldscaler build
410 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
415 # CC_O to add -c to commandline. makefile should be patched
416 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
419 rm -rf $RPM_BUILD_ROOT
420 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
421 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
422 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
425 DESTDIR=$RPM_BUILD_ROOT \
428 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
429 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
430 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
431 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
432 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
433 for a in libavutil/*/bswap.h; do
434 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
436 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
437 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
438 # for lim-omx ffmpeg components
439 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
441 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
442 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
443 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
444 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
445 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
447 # install as ffmpeg-avconfig to avoid with possible programs looking for
448 # ffmpeg-config and expecting --libs output from it which is not implemented
449 # simple to do (by querying pkgconfig), but why?
450 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
453 rm -rf $RPM_BUILD_ROOT
455 %post libs -p /sbin/ldconfig
456 %postun libs -p /sbin/ldconfig
459 %groupadd -g 167 ffserver
460 %useradd -g ffserver -u 167 ffserver
463 /sbin/chkconfig --add ffserver
464 %service ffserver restart
467 if [ "$1" = 0 ]; then
468 %service ffserver stop
469 /sbin/chkconfig --del ffserver
473 if [ "$1" = 0 ]; then
475 %groupremove ffserver
479 %defattr(644,root,root,755)
480 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
481 %attr(755,root,root) %{_bindir}/ffmpeg
482 %attr(755,root,root) %{_bindir}/ffprobe
483 %attr(755,root,root) %{_bindir}/qt-faststart
484 %dir %{_datadir}/ffmpeg
485 %{_datadir}/ffmpeg/*.ffpreset
486 %{_datadir}/ffmpeg/ffprobe.xsd
487 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
488 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
491 %defattr(644,root,root,755)
492 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
493 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.54
494 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
495 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.54
496 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
497 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.3
498 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
499 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.54
500 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
501 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.0
502 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
503 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
504 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
505 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
506 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
507 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
508 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
509 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
512 %defattr(644,root,root,755)
513 %doc doc/optimization.txt
514 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
515 %attr(755,root,root) %{_libdir}/libavcodec.so
516 %attr(755,root,root) %{_libdir}/libavdevice.so
517 %attr(755,root,root) %{_libdir}/libavfilter.so
518 %attr(755,root,root) %{_libdir}/libavformat.so
519 %attr(755,root,root) %{_libdir}/libavresample.so
520 %attr(755,root,root) %{_libdir}/libavutil.so
521 %attr(755,root,root) %{_libdir}/libpostproc.so
522 %attr(755,root,root) %{_libdir}/libswresample.so
523 %attr(755,root,root) %{_libdir}/libswscale.so
524 %{_includedir}/ffmpeg
525 %{_includedir}/libavcodec
526 %{_includedir}/libavdevice
527 %{_includedir}/libavfilter
528 %{_includedir}/libavformat
529 %{_includedir}/libavresample
530 %{_includedir}/libavutil
531 %{_includedir}/libpostproc
532 %{_includedir}/libswresample
533 %{_includedir}/libswscale
534 %{_pkgconfigdir}/libavcodec.pc
535 %{_pkgconfigdir}/libavdevice.pc
536 %{_pkgconfigdir}/libavfilter.pc
537 %{_pkgconfigdir}/libavformat.pc
538 %{_pkgconfigdir}/libavresample.pc
539 %{_pkgconfigdir}/libavutil.pc
540 %{_pkgconfigdir}/libpostproc.pc
541 %{_pkgconfigdir}/libswresample.pc
542 %{_pkgconfigdir}/libswscale.pc
545 %defattr(644,root,root,755)
546 %{_libdir}/libavcodec.a
547 %{_libdir}/libavdevice.a
548 %{_libdir}/libavfilter.a
549 %{_libdir}/libavformat.a
550 %{_libdir}/libavresample.a
551 %{_libdir}/libavutil.a
552 %{_libdir}/libpostproc.a
553 %{_libdir}/libswresample.a
554 %{_libdir}/libswscale.a
557 %defattr(644,root,root,755)
558 %attr(755,root,root) %{_bindir}/ffplay
559 %{?with_doc:%{_mandir}/man1/ffplay.1*}
562 %defattr(644,root,root,755)
563 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
564 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
565 %attr(755,root,root) %{_sbindir}/ffserver
566 %attr(754,root,root) /etc/rc.d/init.d/ffserver
567 %{?with_doc:%{_mandir}/man1/ffserver.1*}
568 %dir %attr(770,root,ffserver) /var/cache/ffserver
569 %dir %attr(770,root,ffserver) /var/log/ffserver