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_without autoreqdep # don't care about package name deps generated by rpm
12 %bcond_without frei0r # build without frei0r video filtering
13 %bcond_without openal # build without OpenAL 1.1 capture support
14 %bcond_without opencv # build without opencv video filtering
15 %bcond_without pulseaudio # build without PulseAudio input support
16 %bcond_without x264 # build without x264 encoder
17 %bcond_without utvideo # build without Ut Video decoder
18 %bcond_without va # VAAPI (Video Acceleration API)
19 %bcond_without vpx # VP8, a high-quality video codec
20 %bcond_without doc # don't build docs
22 Summary: FFmpeg - a very fast video and audio converter
23 Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
27 # LGPL or GPL, chosen at configure time (GPL version is more featured)
28 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
29 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
30 License: GPL v3+ with LGPL v3+ parts
31 Group: Applications/Multimedia
32 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
33 # Source0-md5: ff8cb914f657e164dd60ea1008b555a8
34 Source1: ffserver.init
35 Source2: ffserver.sysconfig
36 Source3: ffserver.conf
37 Patch0: %{name}-gsm.patch
38 URL: http://www.ffmpeg.org/
39 %{?with_openal:BuildRequires: OpenAL-devel}
40 BuildRequires: SDL-devel >= 1.2.1
41 BuildRequires: alsa-lib-devel
42 BuildRequires: bzip2-devel
43 BuildRequires: celt-devel >= 0.11.0
44 %{?with_nonfree:BuildRequires: faac-devel}
45 BuildRequires: fontconfig-devel
46 BuildRequires: freetype-devel
47 %{?with_frei0r:BuildRequires: frei0r-devel}
49 # require version with altivec support fixed
50 BuildRequires: gcc >= 5:3.3.2-3
52 BuildRequires: gnutls-devel
53 BuildRequires: jack-audio-connection-kit-devel
54 BuildRequires: lame-libs-devel >= 3.98.3
55 %{?with_aacplus:BuildRequires: libaacplus-devel >= 2.0.0}
56 BuildRequires: libass-devel
57 BuildRequires: libbluray-devel
58 BuildRequires: libcdio-devel
59 BuildRequires: libdc1394-devel >= 2
60 BuildRequires: libgsm-devel
61 BuildRequires: libmodplug-devel
62 BuildRequires: libnut-devel
63 BuildRequires: libraw1394-devel >= 2
64 BuildRequires: librtmp-devel
65 BuildRequires: libtheora-devel >= 1.0-0.beta3
66 BuildRequires: libtool >= 2:1.4d-3
67 BuildRequires: libv4l-devel
68 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
69 BuildRequires: libvdpau-devel >= 0.2
70 BuildRequires: libvorbis-devel
71 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
73 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245}
74 BuildRequires: opencore-amr-devel
75 %{?with_opencv:BuildRequires: opencv-devel}
76 BuildRequires: openjpeg-devel >= 1.3-2
77 %{?with_pulseaudio:BuildRequires: pulseaudio-devel}
78 BuildRequires: speex-devel >= 1:1.2-rc1
84 BuildRequires: perl-Encode
85 BuildRequires: perl-tools-pod
86 BuildRequires: pkgconfig
87 BuildRequires: rpmbuild(macros) >= 1.470
88 BuildRequires: schroedinger-devel
89 %{?with_doc:BuildRequires: tetex}
90 %{?with_doc:BuildRequires: texi2html}
91 %{?with_doc:BuildRequires: texinfo}
92 %{?with_utvideo:BuildRequires: utvideo-devel}
94 BuildRequires: vo-aacenc-devel
95 BuildRequires: vo-amrwbenc-devel
96 BuildRequires: xavs-devel
97 BuildRequires: xorg-lib-libXext-devel
98 BuildRequires: xorg-lib-libXfixes-devel
99 BuildRequires: xvid-devel >= 1:1.1.0
100 BuildRequires: zlib-devel
101 %{?with_autoreqdep:BuildConflicts: libpostproc}
102 # overflows maximum hash table size
103 BuildConflicts: pdksh < 5.2.14-57
104 Requires: %{name}-libs = %{version}-%{release}
105 Requires: xvid >= 1:1.1.0
106 Obsoletes: libpostproc
107 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
109 %define _noautoreqdep libGL.so.1 libGLU.so.1
111 %define specflags -fno-strict-aliasing
113 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
114 %define specflags_ia32 -fomit-frame-pointer
115 # -mmmx is needed to enable <mmintrin.h> code.
116 %define specflags_i586 -mmmx
117 %define specflags_i686 -mmmx
118 %define specflags_ppc -fPIC
121 FFmpeg is a complete solution to record, convert and stream audio and
122 video. It is a command line tool to convert one video file format to
123 another. It also supports grabbing and encoding in real time from a TV
126 %description -l pl.UTF-8
127 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
128 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
129 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
130 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
134 Summary: ffmpeg libraries
135 Summary(pl.UTF-8): Biblioteki ffmpeg
139 This package contains the ffmpeg shared libraries:
140 - the codec library (libavcodec). It supports most existing encoding
141 formats (MPEG, DivX, MPEG4, AC3, DV...),
142 - demuxer library (libavformat). It supports most existing file
143 formats (AVI, MPEG, OGG, Matroska, ASF...),
144 - video postprocessing library (libpostproc).
146 %description libs -l pl.UTF-8
147 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
148 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
149 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
150 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
151 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
152 - bibliotekę postprocessingu (libpostproc).
155 Summary: ffmpeg header files
156 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
157 Group: Development/Libraries
158 Requires: %{name}-libs = %{version}-%{release}
159 # Libs.private from *.pc (unreasonably they are all the same)
160 Requires: SDL-devel >= 1.2.1
161 Requires: alsa-lib-devel
162 Requires: bzip2-devel
163 Requires: celt-devel >= 0.11.0
164 %{?with_nonfree:Requires: faac-devel}
165 Requires: fontconfig-devel
166 Requires: freetype-devel
167 Requires: jack-audio-connection-kit-devel
168 Requires: lame-libs-devel >= 3.98.3
169 Requires: libbluray-devel
170 Requires: libdc1394-devel >= 2
171 Requires: libgsm-devel
172 Requires: libnut-devel
173 Requires: libraw1394-devel >= 2
174 Requires: librtmp-devel
175 Requires: libtheora-devel >= 1.0-0.beta3
176 %{?with_va:Requires: libva-devel >= 1.0.3}
177 Requires: libvorbis-devel
178 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
179 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
180 Requires: opencore-amr-devel
181 Requires: openjpeg-devel >= 1.3-2
182 Requires: schroedinger-devel
183 Requires: speex-devel >= 1:1.2-rc1
184 Requires: vo-aacenc-devel
185 Requires: vo-amrwbenc-devel
187 Requires: xorg-lib-libXext-devel
188 Requires: xorg-lib-libXfixes-devel
189 Requires: xvid-devel >= 1:1.1.0
191 Obsoletes: libpostproc-devel
196 %description devel -l pl.UTF-8
197 Pliki nagłówkowe ffmpeg.
200 Summary: ffmpeg static libraries
201 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
202 Group: Development/Libraries
203 Requires: %{name}-devel = %{version}-%{release}
206 ffmpeg static libraries (libavcodec and libavformat).
208 %description static -l pl.UTF-8
209 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
212 Summary: FFplay - SDL-based media player
213 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
214 Group: Applications/Multimedia
215 Requires: %{name}-libs = %{version}-%{release}
218 FFplay is a very simple and portable media player using the FFmpeg
219 libraries and the SDL library. It is mostly used as a test bench for
220 the various APIs of FFmpeg.
222 %description ffplay -l pl.UTF-8
223 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
224 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
225 testowania różnych API FFmpeg.
228 Summary: FFserver video server
229 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
231 Requires(post,preun): /sbin/chkconfig
232 Requires: %{name}-libs = %{version}-%{release}
233 Requires: rc-scripts >= 0.4.0.10
235 %description ffserver
236 FFserver is a streaming server for both audio and video. It supports
237 several live feeds, streaming from files and time shifting on live
238 feeds (you can seek to positions in the past on each live feed,
239 provided you specify a big enough feed storage in ffserver.conf).
241 %description ffserver -l pl.UTF-8
242 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
243 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
244 czasie dla źródeł na żywo (można przeskakiwać na położenia w
245 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
246 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
252 # package the grep result for mplayer, the result formatted as ./mplayer/configure
253 cat <<EOF > ffmpeg-avconfig
255 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
256 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
257 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
258 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
259 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
260 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
261 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
263 cat <<'EOF' >> ffmpeg-avconfig
267 echo $_libavdecoders_all
270 echo $_libavencoders_all
273 echo $_libavparsers_all
279 echo $_libavdemuxers_all
282 echo $_libavmuxers_all
285 echo $_libavprotocols_all
307 # - it's not autoconf configure
308 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
310 --arch=%{_target_base_arch} \
311 --prefix=%{_prefix} \
312 --libdir=%{_libdir} \
313 --shlibdir=%{_libdir} \
314 --mandir=%{_mandir} \
316 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
317 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
319 --disable-optimizations \
320 --disable-stripping \
322 --enable-avresample \
326 --enable-fontconfig \
327 %{?with_frei0r:--enable-frei0r} \
328 %{?with_aacplus:--enable-libaacplus} \
334 --enable-libfreetype \
336 --enable-libmodplug \
337 --enable-libmp3lame \
339 --enable-libopencore-amrnb \
340 --enable-libopencore-amrwb \
341 %{?with_opencv:--enable-libopencv} \
342 --enable-libopenjpeg \
343 %{?with_pulseaudio:--enable-libpulse} \
345 --enable-libschroedinger \
348 %{?with_utvideo:--enable-libutvideo} \
350 --enable-libvo-aacenc \
351 --enable-libvo-amrwbenc \
353 %{?with_vpx:--enable-libvpx} \
354 %{?with_x264:--enable-libx264} \
357 %{?with_openal:--enable-openal} \
364 %ifnarch %{ix86} %{x8664}
374 --enable-runtime-cpudetect
376 # force oldscaler build
377 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
382 # CC_O to add -c to commandline. makefile should be patched
383 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
386 rm -rf $RPM_BUILD_ROOT
387 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
388 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
389 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
392 DESTDIR=$RPM_BUILD_ROOT \
395 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
396 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
397 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
398 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
399 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
400 for a in libavutil/*/bswap.h; do
401 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
403 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
404 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
405 # for lim-omx ffmpeg components
406 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
408 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
409 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
410 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
411 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
412 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
414 # install as ffmpeg-avconfig to avoid with possible programs looking for
415 # ffmpeg-config and expecting --libs output from it which is not implemented
416 # simple to do (by querying pkgconfig), but why?
417 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
420 rm -rf $RPM_BUILD_ROOT
422 %post libs -p /sbin/ldconfig
423 %postun libs -p /sbin/ldconfig
426 %groupadd -g 167 ffserver
427 %useradd -g ffserver -u 167 ffserver
430 /sbin/chkconfig --add ffserver
431 %service ffserver restart
434 if [ "$1" = 0 ]; then
435 %service ffserver stop
436 /sbin/chkconfig --del ffserver
440 if [ "$1" = 0 ]; then
442 %groupremove ffserver
446 %defattr(644,root,root,755)
447 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
448 %attr(755,root,root) %{_bindir}/ffmpeg
449 %attr(755,root,root) %{_bindir}/ffprobe
450 %attr(755,root,root) %{_bindir}/qt-faststart
451 %dir %{_datadir}/ffmpeg
452 %{_datadir}/ffmpeg/*.ffpreset
453 %{_datadir}/ffmpeg/ffprobe.xsd
454 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
455 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
458 %defattr(644,root,root,755)
459 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
460 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.54
461 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
462 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.54
463 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
464 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
465 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
466 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.54
467 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
468 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.0
469 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
470 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
471 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
472 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
473 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
474 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
475 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
476 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
479 %defattr(644,root,root,755)
480 %doc doc/optimization.txt
481 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
482 %attr(755,root,root) %{_libdir}/libavcodec.so
483 %attr(755,root,root) %{_libdir}/libavdevice.so
484 %attr(755,root,root) %{_libdir}/libavfilter.so
485 %attr(755,root,root) %{_libdir}/libavformat.so
486 %attr(755,root,root) %{_libdir}/libavresample.so
487 %attr(755,root,root) %{_libdir}/libavutil.so
488 %attr(755,root,root) %{_libdir}/libpostproc.so
489 %attr(755,root,root) %{_libdir}/libswresample.so
490 %attr(755,root,root) %{_libdir}/libswscale.so
491 %{_includedir}/ffmpeg
492 %{_includedir}/libavcodec
493 %{_includedir}/libavdevice
494 %{_includedir}/libavfilter
495 %{_includedir}/libavformat
496 %{_includedir}/libavresample
497 %{_includedir}/libavutil
498 %{_includedir}/libpostproc
499 %{_includedir}/libswresample
500 %{_includedir}/libswscale
501 %{_pkgconfigdir}/libavcodec.pc
502 %{_pkgconfigdir}/libavdevice.pc
503 %{_pkgconfigdir}/libavfilter.pc
504 %{_pkgconfigdir}/libavformat.pc
505 %{_pkgconfigdir}/libavresample.pc
506 %{_pkgconfigdir}/libavutil.pc
507 %{_pkgconfigdir}/libpostproc.pc
508 %{_pkgconfigdir}/libswresample.pc
509 %{_pkgconfigdir}/libswscale.pc
512 %defattr(644,root,root,755)
513 %{_libdir}/libavcodec.a
514 %{_libdir}/libavdevice.a
515 %{_libdir}/libavfilter.a
516 %{_libdir}/libavformat.a
517 %{_libdir}/libavresample.a
518 %{_libdir}/libavutil.a
519 %{_libdir}/libpostproc.a
520 %{_libdir}/libswresample.a
521 %{_libdir}/libswscale.a
524 %defattr(644,root,root,755)
525 %attr(755,root,root) %{_bindir}/ffplay
526 %{?with_doc:%{_mandir}/man1/ffplay.1*}
529 %defattr(644,root,root,755)
530 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
531 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
532 %attr(755,root,root) %{_sbindir}/ffserver
533 %attr(754,root,root) /etc/rc.d/init.d/ffserver
534 %{?with_doc:%{_mandir}/man1/ffserver.1*}
535 %dir %attr(770,root,ffserver) /var/cache/ffserver
536 %dir %attr(770,root,ffserver) /var/log/ffserver