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: dbbb88ce5525dea22b24aaa098a9bcc2
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 Patch3: %{name}-cdio-paranoia.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-paranoia-devel >= 0.90-2
69 BuildRequires: libdc1394-devel >= 2
70 BuildRequires: libgsm-devel
71 BuildRequires: libiec61883-devel
72 BuildRequires: libmodplug-devel
73 BuildRequires: libnut-devel
74 BuildRequires: libraw1394-devel >= 2
75 BuildRequires: librtmp-devel
76 BuildRequires: libtheora-devel >= 1.0-0.beta3
77 BuildRequires: libtool >= 2:1.4d-3
78 BuildRequires: libv4l-devel
79 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
80 BuildRequires: libvdpau-devel >= 0.2
81 BuildRequires: libvorbis-devel
82 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
84 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245}
90 BuildRequires: opencore-amr-devel
91 %{?with_opencv:BuildRequires: opencv-devel}
92 BuildRequires: openjpeg-devel >= 1.5
93 BuildRequires: opus-devel
94 BuildRequires: perl-Encode
95 BuildRequires: perl-tools-pod
96 BuildRequires: pkgconfig
97 %{?with_pulseaudio:BuildRequires: pulseaudio-devel}
98 BuildRequires: rpmbuild(macros) >= 1.470
99 BuildRequires: schroedinger-devel
100 BuildRequires: speex-devel >= 1:1.2-rc1
101 %{?with_doc:BuildRequires: tetex}
102 %{?with_doc:BuildRequires: texi2html}
103 %{?with_doc:BuildRequires: texinfo}
104 BuildRequires: twolame-devel
105 %{?with_utvideo:BuildRequires: utvideo-devel}
106 BuildRequires: vo-aacenc-devel
107 BuildRequires: vo-amrwbenc-devel
108 %{?with_ilbc:BuildRequires: webrtc-libilbc-devel}
109 BuildRequires: xavs-devel
110 BuildRequires: xorg-lib-libXext-devel
111 BuildRequires: xorg-lib-libXfixes-devel
112 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 %{?with_ilbc:Requires: webrtc-libilbc}
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 >= 1.4}
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-paranoia-devel >= 0.90-2
191 Requires: libdc1394-devel >= 2
192 Requires: libgsm-devel
193 Requires: libiec61883-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 %{?with_opencv:Requires: opencv-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
211 %{?with_ilbc:Requires: webrtc-libilbc-devel}
213 Requires: xorg-lib-libXext-devel
214 Requires: xorg-lib-libXfixes-devel
215 Requires: xvid-devel >= 1:1.1.0
217 Obsoletes: libpostproc-devel
222 %description devel -l pl.UTF-8
223 Pliki nagłówkowe ffmpeg.
226 Summary: ffmpeg static libraries
227 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
228 Group: Development/Libraries
229 Requires: %{name}-devel = %{version}-%{release}
232 ffmpeg static libraries (libavcodec and libavformat).
234 %description static -l pl.UTF-8
235 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
238 Summary: FFplay - SDL-based media player
239 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
240 Group: Applications/Multimedia
241 Requires: %{name}-libs = %{version}-%{release}
244 FFplay is a very simple and portable media player using the FFmpeg
245 libraries and the SDL library. It is mostly used as a test bench for
246 the various APIs of FFmpeg.
248 %description ffplay -l pl.UTF-8
249 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
250 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
251 testowania różnych API FFmpeg.
254 Summary: FFserver video server
255 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
257 Requires(post,preun): /sbin/chkconfig
258 Requires: %{name}-libs = %{version}-%{release}
259 Requires: rc-scripts >= 0.4.0.10
261 %description ffserver
262 FFserver is a streaming server for both audio and video. It supports
263 several live feeds, streaming from files and time shifting on live
264 feeds (you can seek to positions in the past on each live feed,
265 provided you specify a big enough feed storage in ffserver.conf).
267 %description ffserver -l pl.UTF-8
268 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
269 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
270 czasie dla źródeł na żywo (można przeskakiwać na położenia w
271 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
272 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
281 # package the grep result for mplayer, the result formatted as ./mplayer/configure
282 cat <<EOF > ffmpeg-avconfig
284 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
285 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
286 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
287 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
288 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
289 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
290 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
292 cat <<'EOF' >> ffmpeg-avconfig
296 echo $_libavdecoders_all
299 echo $_libavencoders_all
302 echo $_libavparsers_all
308 echo $_libavdemuxers_all
311 echo $_libavmuxers_all
314 echo $_libavprotocols_all
336 # - it's not autoconf configure
337 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
339 --arch=%{_target_base_arch} \
340 --prefix=%{_prefix} \
341 --libdir=%{_libdir} \
342 --shlibdir=%{_libdir} \
343 --mandir=%{_mandir} \
344 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
345 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
348 --disable-optimizations \
349 --disable-stripping \
351 --enable-avresample \
355 --enable-fontconfig \
356 %{?with_frei0r:--enable-frei0r} \
357 %{?with_aacplus:--enable-libaacplus} \
360 %{?with_libcaca:--enable-libcaca} \
364 %{?with_fdk_aac:--enable-libfdk-aac} \
365 %{?with_flite:--enable-libflite} \
366 --enable-libfreetype \
368 --enable-libiec61883 \
369 %{?with_ilbc:--enable-libilbc} \
370 --enable-libmodplug \
371 --enable-libmp3lame \
373 --enable-libopencore-amrnb \
374 --enable-libopencore-amrwb \
375 %{?with_opencv:--enable-libopencv} \
376 --enable-libopenjpeg \
378 %{?with_pulseaudio:--enable-libpulse} \
380 --enable-libschroedinger \
383 --enable-libtwolame \
384 %{?with_utvideo:--enable-libutvideo} \
386 --enable-libvo-aacenc \
387 --enable-libvo-amrwbenc \
389 %{?with_vpx:--enable-libvpx} \
390 %{?with_x264:--enable-libx264} \
393 %{?with_openal:--enable-openal} \
398 %{?with_va:--enable-vaapi} \
401 %ifnarch %{ix86} %{x8664}
411 --enable-runtime-cpudetect
413 # force oldscaler build
414 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
419 # CC_O to add -c to commandline. makefile should be patched
420 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
423 rm -rf $RPM_BUILD_ROOT
424 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
425 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
426 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
429 DESTDIR=$RPM_BUILD_ROOT \
432 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
433 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
434 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
435 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
436 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
437 for a in libavutil/*/bswap.h; do
438 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
440 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
441 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
442 # for lim-omx ffmpeg components
443 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
445 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
446 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
447 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
448 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
449 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
451 # install as ffmpeg-avconfig to avoid with possible programs looking for
452 # ffmpeg-config and expecting --libs output from it which is not implemented
453 # simple to do (by querying pkgconfig), but why?
454 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
457 rm -rf $RPM_BUILD_ROOT
459 %post libs -p /sbin/ldconfig
460 %postun libs -p /sbin/ldconfig
463 %groupadd -g 167 ffserver
464 %useradd -g ffserver -u 167 ffserver
467 /sbin/chkconfig --add ffserver
468 %service ffserver restart
471 if [ "$1" = 0 ]; then
472 %service ffserver stop
473 /sbin/chkconfig --del ffserver
477 if [ "$1" = 0 ]; then
479 %groupremove ffserver
483 %defattr(644,root,root,755)
484 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
485 %attr(755,root,root) %{_bindir}/ffmpeg
486 %attr(755,root,root) %{_bindir}/ffprobe
487 %attr(755,root,root) %{_bindir}/qt-faststart
488 %dir %{_datadir}/ffmpeg
489 %{_datadir}/ffmpeg/*.ffpreset
490 %{_datadir}/ffmpeg/ffprobe.xsd
491 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
492 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
495 %defattr(644,root,root,755)
496 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
497 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.54
498 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
499 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.54
500 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
501 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.3
502 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
503 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.54
504 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
505 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.0
506 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
507 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
508 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
509 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
510 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
511 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
512 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
513 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
516 %defattr(644,root,root,755)
517 %doc doc/optimization.txt
518 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
519 %attr(755,root,root) %{_libdir}/libavcodec.so
520 %attr(755,root,root) %{_libdir}/libavdevice.so
521 %attr(755,root,root) %{_libdir}/libavfilter.so
522 %attr(755,root,root) %{_libdir}/libavformat.so
523 %attr(755,root,root) %{_libdir}/libavresample.so
524 %attr(755,root,root) %{_libdir}/libavutil.so
525 %attr(755,root,root) %{_libdir}/libpostproc.so
526 %attr(755,root,root) %{_libdir}/libswresample.so
527 %attr(755,root,root) %{_libdir}/libswscale.so
528 %{_includedir}/ffmpeg
529 %{_includedir}/libavcodec
530 %{_includedir}/libavdevice
531 %{_includedir}/libavfilter
532 %{_includedir}/libavformat
533 %{_includedir}/libavresample
534 %{_includedir}/libavutil
535 %{_includedir}/libpostproc
536 %{_includedir}/libswresample
537 %{_includedir}/libswscale
538 %{_pkgconfigdir}/libavcodec.pc
539 %{_pkgconfigdir}/libavdevice.pc
540 %{_pkgconfigdir}/libavfilter.pc
541 %{_pkgconfigdir}/libavformat.pc
542 %{_pkgconfigdir}/libavresample.pc
543 %{_pkgconfigdir}/libavutil.pc
544 %{_pkgconfigdir}/libpostproc.pc
545 %{_pkgconfigdir}/libswresample.pc
546 %{_pkgconfigdir}/libswscale.pc
549 %defattr(644,root,root,755)
550 %{_libdir}/libavcodec.a
551 %{_libdir}/libavdevice.a
552 %{_libdir}/libavfilter.a
553 %{_libdir}/libavformat.a
554 %{_libdir}/libavresample.a
555 %{_libdir}/libavutil.a
556 %{_libdir}/libpostproc.a
557 %{_libdir}/libswresample.a
558 %{_libdir}/libswscale.a
561 %defattr(644,root,root,755)
562 %attr(755,root,root) %{_bindir}/ffplay
563 %{?with_doc:%{_mandir}/man1/ffplay.1*}
566 %defattr(644,root,root,755)
567 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
568 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
569 %attr(755,root,root) %{_sbindir}/ffserver
570 %attr(754,root,root) /etc/rc.d/init.d/ffserver
571 %{?with_doc:%{_mandir}/man1/ffserver.1*}
572 %dir %attr(770,root,ffserver) /var/cache/ffserver
573 %dir %attr(770,root,ffserver) /var/log/ffserver