2 # - libnut enabled no (http://www.nut-container.org/)
5 %bcond_with amr # 3GPP Adaptive Multi Rate (AMR) codec support; makes package non-distributable
6 %bcond_without autoreqdep # don't care about package name deps generated by rpm
7 %bcond_without imlib2 # don't build imlib2 vhook module
9 Summary: Realtime audio/video encoder and streaming server
10 Summary(pl.UTF-8): Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
14 # LGPL or GPL, chosen at configure time (GPL version is more featured)
15 # (postprocessing, ac3, xvid, x264, faad)
16 License: GPL v2+ with LGPL v2.1+ parts
17 Group: Applications/Multimedia
18 Source0: http://ffmpeg.mplayerhq.hu/releases/%{name}-%{version}.tar.bz2
19 # Source0-md5: be8503f15c3b81ba00eb8379ca8dcf33
20 Source1: ffserver.init
21 Source2: ffserver.sysconfig
22 Source3: ffserver.conf
23 Patch0: %{name}-x264.patch
24 URL: http://ffmpeg.mplayerhq.hu/
25 BuildRequires: SDL-devel
27 BuildRequires: amrnb-devel >= 6.1.0.4
28 BuildRequires: amrwb-devel >= 7.0.0.1
30 BuildRequires: dirac-devel >= 1.0.0
31 BuildRequires: faac-devel
32 BuildRequires: faad2-devel
33 BuildRequires: freetype-devel
35 # require version with altivec support fixed
36 BuildRequires: gcc >= 5:3.3.2-3
38 %{?with_imlib2:BuildRequires: imlib2-devel >= 1.3.0}
39 BuildRequires: lame-libs-devel
40 BuildRequires: libdc1394-devel
41 BuildRequires: libgsm-devel
42 BuildRequires: libraw1394-devel
43 BuildRequires: libtheora-devel >= 1.0-0.beta3
44 BuildRequires: libtool >= 2:1.4d-3
45 BuildRequires: libvorbis-devel
46 BuildRequires: libx264-devel >= 0.1.2-1.20081023
47 BuildRequires: speex-devel
53 BuildRequires: perl-tools-pod
54 BuildRequires: pkgconfig
55 BuildRequires: rpmbuild(macros) >= 1.470
56 BuildRequires: schroedinger-devel
58 BuildRequires: texi2html
59 BuildRequires: texinfo
60 %{?with_amr:BuildRequires: unzip}
61 BuildRequires: xvid-devel >= 1:1.1.0
62 BuildRequires: zlib-devel
63 %{?with_autoreqdep:BuildConflicts: libpostproc}
64 Requires: %{name}-libs = %{version}-%{release}
65 Requires: xvid >= 1:1.1.0
66 Obsoletes: libpostproc
67 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
69 %define _noautoreqdep libGL.so.1 libGLU.so.1
71 %define specflags -fno-strict-aliasing
73 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
74 %define specflags_ia32 -fomit-frame-pointer
75 # -mmmx is needed to enable <mmintrin.h> code.
76 %define specflags_i586 -mmmx
77 %define specflags_i686 -mmmx
78 %define specflags_ppc -fPIC
81 ffmpeg is a hyper fast realtime audio/video encoder and streaming
82 server. It can grab from a standard Video4Linux video source and
83 convert it into several file formats based on DCT/motion compensation
84 encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
87 %description -l pl.UTF-8
88 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
89 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
90 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
91 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
92 jest kompresowany do strumienia MPEG audio layer 2 lub używając
93 strumienia kompatybilnego z AC3.
96 Summary: ffmpeg libraries
97 Summary(pl.UTF-8): Biblioteki ffmpeg
101 This package contains ffmpeg shared libraries.
103 %description libs -l pl.UTF-8
104 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
107 Summary: ffmpeg header files
108 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
109 Group: Development/Libraries
110 Requires: %{name}-libs = %{version}-%{release}
113 Requires: amrnb-devel
114 Requires: amrwb-devel >= 5.3.0
116 Requires: dirac-devel
118 Requires: faad2-devel
119 Requires: lame-libs-devel
120 Requires: libgsm-devel
121 Requires: libraw1394-devel
122 Requires: libtheora-devel >= 1.0-0.alpha7
123 Requires: libvorbis-devel
124 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
125 Requires: xvid-devel >= 1:1.1.0
127 Obsoletes: libpostproc-devel
132 %description devel -l pl.UTF-8
133 Pliki nagłówkowe ffmpeg.
136 Summary: ffmpeg static libraries
137 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
138 Group: Development/Libraries
139 Requires: %{name}-devel = %{version}-%{release}
142 ffmpeg static libraries (libavcodec and libavformat).
144 %description static -l pl.UTF-8
145 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
148 Summary: FFplay - SDL-based media player
149 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
150 Group: Applications/Multimedia
151 Requires: %{name}-libs = %{version}-%{release}
154 FFplay is a very simple and portable media player using the FFmpeg
155 libraries and the SDL library. It is mostly used as a test bench for
156 the various APIs of FFmpeg.
158 %description ffplay -l pl.UTF-8
159 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
160 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
161 testowania różnych API FFmpeg.
163 %package vhook-imlib2
164 Summary: imlib2 based hook
165 Summary(pl.UTF-8): Moduł przejściowy oparty o imlib2
167 Requires: %{name}-libs = %{version}-%{release}
169 %description vhook-imlib2
170 This module implements a text overlay for a video image. Currently it
171 supports a fixed overlay or reading the text from a file. The string
172 is passed through strftime so that it is easy to imprint the date and
175 %description vhook-imlib2 -l pl.UTF-8
176 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
177 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
178 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
182 Summary: FFserver video server
183 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
185 Requires(post,preun): /sbin/chkconfig
186 Requires: %{name}-libs = %{version}-%{release}
187 Requires: rc-scripts >= 0.4.0.10
189 %description ffserver
190 FFserver is a streaming server for both audio and video. It supports
191 several live feeds, streaming from files and time shifting on live
192 feeds (you can seek to positions in the past on each live feed,
193 provided you specify a big enough feed storage in ffserver.conf).
195 %description ffserver -l pl.UTF-8
196 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
197 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
198 czasie dla źródeł na żywo (można przeskakiwać na położenia w
199 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
200 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
206 # package the grep result for mplayer, the result formatted as ./mplayer/configure
207 cat <<EOF > ffmpeg-avconfig
209 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
210 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
211 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
212 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
213 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
214 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
215 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
217 cat <<'EOF' >> ffmpeg-avconfig
221 echo $_libavdecoders_all
224 echo $_libavencoders_all
227 echo $_libavparsers_all
233 echo $_libavdemuxers_all
236 echo $_libavmuxers_all
239 echo $_libavprotocols_all
261 # - it's not autoconf configure
262 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
264 --arch=%{_target_base_arch} \
265 --prefix=%{_prefix} \
266 --libdir=%{_libdir} \
267 --shlibdir=%{_libdir} \
268 --mandir=%{_mandir} \
270 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags} -I/usr/include/libavcodec -I/usr/include/libswscale" \
271 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
273 --disable-optimizations \
274 --disable-stripping \
278 --enable-libfaadbin \
282 --enable-libmp3lame \
283 --enable-libschroedinger \
293 %ifnarch %{ix86} %{x8664}
305 # force oldscaler build
306 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
311 rm -rf $RPM_BUILD_ROOT
312 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
313 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
314 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
317 DESTDIR=$RPM_BUILD_ROOT
319 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
320 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
321 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
324 for a in libavutil/*/bswap.h; do
325 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
327 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
328 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
330 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
331 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
332 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
333 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
335 # install as ffmpeg-avconfig to avoid with possible programs looking for
336 # ffmpeg-config and expecting --libs output from it which is not implemented
337 # simple to do (by querying pkgconfig), but why?
338 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
341 rm -rf $RPM_BUILD_ROOT
343 %post libs -p /sbin/ldconfig
344 %postun libs -p /sbin/ldconfig
347 %groupadd -g 167 ffserver
348 %useradd -g ffserver -u 167 ffserver
351 /sbin/chkconfig --add ffserver
352 %service ffserver restart
355 if [ "$1" = 0 ]; then
356 %service ffserver stop
357 /sbin/chkconfig --del ffserver
361 if [ "$1" = 0 ]; then
363 %groupremove ffserver
367 %defattr(644,root,root,755)
368 %doc Changelog README doc/*.html doc/TODO
369 %attr(755,root,root) %{_bindir}/ffmpeg
370 %dir %{_datadir}/ffmpeg
371 %{_datadir}/ffmpeg/*.ffpreset
372 %{_mandir}/man1/ffmpeg.1*
375 %defattr(644,root,root,755)
376 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
377 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
378 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
379 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
380 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
381 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
382 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.[0-9][0-9]
383 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.[0-9][0-9]
384 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.[0-9][0-9]
385 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.[0-9][0-9]
386 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.[0-9][0-9]
387 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.[0-9]
388 %dir %{_libdir}/vhook
389 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
390 %attr(755,root,root) %{_libdir}/vhook/fish.so
391 %attr(755,root,root) %{_libdir}/vhook/null.so
392 %attr(755,root,root) %{_libdir}/vhook/ppm.so
393 %attr(755,root,root) %{_libdir}/vhook/watermark.so
396 %defattr(644,root,root,755)
397 %doc doc/optimization.txt
398 %attr(755,root,root) %{_libdir}/libavcodec.so
399 %attr(755,root,root) %{_libdir}/libavdevice.so
400 %attr(755,root,root) %{_libdir}/libavformat.so
401 %attr(755,root,root) %{_libdir}/libavutil.so
402 %attr(755,root,root) %{_libdir}/libpostproc.so
403 %attr(755,root,root) %{_libdir}/libswscale.so
404 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
405 %{_includedir}/ffmpeg
406 %{_includedir}/libavcodec
407 %{_includedir}/libavdevice
408 %{_includedir}/libavformat
409 %{_includedir}/libavutil
410 %{_includedir}/libpostproc
411 %{_includedir}/libswscale
412 %{_pkgconfigdir}/*.pc
415 %defattr(644,root,root,755)
419 %defattr(644,root,root,755)
420 %attr(755,root,root) %{_bindir}/ffplay
421 %{_mandir}/man1/ffplay.1*
425 %defattr(644,root,root,755)
426 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
430 %defattr(644,root,root,755)
431 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
432 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
433 %attr(755,root,root) %{_sbindir}/ffserver
434 %attr(754,root,root) /etc/rc.d/init.d/ffserver
435 %{_mandir}/man1/ffserver.1*
436 %dir %attr(770,root,ffserver) /var/cache/ffserver
437 %dir %attr(770,root,ffserver) /var/log/ffserver