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: 101e1092582bbfca8f2a204cbcecb8fc
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 \
325 --enable-fontconfig \
326 %{?with_frei0r:--enable-frei0r} \
327 %{?with_aacplus:--enable-libaacplus} \
333 --enable-libfreetype \
335 --enable-libmodplug \
336 --enable-libmp3lame \
338 --enable-libopencore-amrnb \
339 --enable-libopencore-amrwb \
340 %{?with_opencv:--enable-libopencv} \
341 --enable-libopenjpeg \
342 %{?with_pulseaudio:--enable-libpulse} \
344 --enable-libschroedinger \
347 %{?with_utvideo:--enable-libutvideo} \
349 --enable-libvo-aacenc \
350 --enable-libvo-amrwbenc \
352 %{?with_vpx:--enable-libvpx} \
353 %{?with_x264:--enable-libx264} \
356 %{?with_openal:--enable-openal} \
363 %ifnarch %{ix86} %{x8664}
373 --enable-runtime-cpudetect
375 # force oldscaler build
376 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
381 # CC_O to add -c to commandline. makefile should be patched
382 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
385 rm -rf $RPM_BUILD_ROOT
386 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
387 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
388 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
391 DESTDIR=$RPM_BUILD_ROOT \
394 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
395 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
396 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
397 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
398 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
399 for a in libavutil/*/bswap.h; do
400 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
402 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
403 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
404 # for lim-omx ffmpeg components
405 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
407 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
408 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
409 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
410 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
411 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
413 # install as ffmpeg-avconfig to avoid with possible programs looking for
414 # ffmpeg-config and expecting --libs output from it which is not implemented
415 # simple to do (by querying pkgconfig), but why?
416 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
419 rm -rf $RPM_BUILD_ROOT
421 %post libs -p /sbin/ldconfig
422 %postun libs -p /sbin/ldconfig
425 %groupadd -g 167 ffserver
426 %useradd -g ffserver -u 167 ffserver
429 /sbin/chkconfig --add ffserver
430 %service ffserver restart
433 if [ "$1" = 0 ]; then
434 %service ffserver stop
435 /sbin/chkconfig --del ffserver
439 if [ "$1" = 0 ]; then
441 %groupremove ffserver
445 %defattr(644,root,root,755)
446 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
447 %attr(755,root,root) %{_bindir}/ffmpeg
448 %attr(755,root,root) %{_bindir}/ffprobe
449 %attr(755,root,root) %{_bindir}/qt-faststart
450 %dir %{_datadir}/ffmpeg
451 %{_datadir}/ffmpeg/*.ffpreset
452 %{_datadir}/ffmpeg/ffprobe.xsd
453 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
454 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
457 %defattr(644,root,root,755)
458 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
459 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.54
460 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
461 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.54
462 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
463 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
464 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
465 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.54
466 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
467 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.0
468 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
469 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
470 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
471 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
472 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
473 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
474 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
475 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
478 %defattr(644,root,root,755)
479 %doc doc/optimization.txt
480 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
481 %attr(755,root,root) %{_libdir}/libavcodec.so
482 %attr(755,root,root) %{_libdir}/libavdevice.so
483 %attr(755,root,root) %{_libdir}/libavfilter.so
484 %attr(755,root,root) %{_libdir}/libavformat.so
485 %attr(755,root,root) %{_libdir}/libavresample.so
486 %attr(755,root,root) %{_libdir}/libavutil.so
487 %attr(755,root,root) %{_libdir}/libpostproc.so
488 %attr(755,root,root) %{_libdir}/libswresample.so
489 %attr(755,root,root) %{_libdir}/libswscale.so
490 %{_includedir}/ffmpeg
491 %{_includedir}/libavcodec
492 %{_includedir}/libavdevice
493 %{_includedir}/libavfilter
494 %{_includedir}/libavformat
495 %{_includedir}/libavresample
496 %{_includedir}/libavutil
497 %{_includedir}/libpostproc
498 %{_includedir}/libswresample
499 %{_includedir}/libswscale
500 %{_pkgconfigdir}/libavcodec.pc
501 %{_pkgconfigdir}/libavdevice.pc
502 %{_pkgconfigdir}/libavfilter.pc
503 %{_pkgconfigdir}/libavformat.pc
504 %{_pkgconfigdir}/libavresample.pc
505 %{_pkgconfigdir}/libavutil.pc
506 %{_pkgconfigdir}/libpostproc.pc
507 %{_pkgconfigdir}/libswresample.pc
508 %{_pkgconfigdir}/libswscale.pc
511 %defattr(644,root,root,755)
512 %{_libdir}/libavcodec.a
513 %{_libdir}/libavdevice.a
514 %{_libdir}/libavfilter.a
515 %{_libdir}/libavformat.a
516 %{_libdir}/libavresample.a
517 %{_libdir}/libavutil.a
518 %{_libdir}/libpostproc.a
519 %{_libdir}/libswresample.a
520 %{_libdir}/libswscale.a
523 %defattr(644,root,root,755)
524 %attr(755,root,root) %{_bindir}/ffplay
525 %{?with_doc:%{_mandir}/man1/ffplay.1*}
528 %defattr(644,root,root,755)
529 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
530 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
531 %attr(755,root,root) %{_sbindir}/ffserver
532 %attr(754,root,root) /etc/rc.d/init.d/ffserver
533 %{?with_doc:%{_mandir}/man1/ffserver.1*}
534 %dir %attr(770,root,ffserver) /var/cache/ffserver
535 %dir %attr(770,root,ffserver) /var/log/ffserver