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 Patch1: %{name}-bug-803.patch
25 URL: http://ffmpeg.mplayerhq.hu/
26 BuildRequires: SDL-devel
28 BuildRequires: amrnb-devel >= 6.1.0.4
29 BuildRequires: amrwb-devel >= 7.0.0.1
31 BuildRequires: dirac-devel >= 1.0.0
32 BuildRequires: faac-devel
33 BuildRequires: faad2-devel
34 BuildRequires: freetype-devel
36 # require version with altivec support fixed
37 BuildRequires: gcc >= 5:3.3.2-3
39 %{?with_imlib2:BuildRequires: imlib2-devel >= 1.3.0}
40 BuildRequires: lame-libs-devel
41 BuildRequires: libdc1394-devel
42 BuildRequires: libgsm-devel
43 BuildRequires: libraw1394-devel
44 BuildRequires: libtheora-devel >= 1.0-0.beta3
45 BuildRequires: libtool >= 2:1.4d-3
46 BuildRequires: libvorbis-devel
47 BuildRequires: libx264-devel >= 0.1.2-1.20081023
48 BuildRequires: speex-devel
54 BuildRequires: perl-tools-pod
55 BuildRequires: pkgconfig
56 BuildRequires: rpmbuild(macros) >= 1.470
57 BuildRequires: schroedinger-devel
59 BuildRequires: texi2html
60 BuildRequires: texinfo
61 %{?with_amr:BuildRequires: unzip}
62 BuildRequires: xvid-devel >= 1:1.1.0
63 BuildRequires: zlib-devel
64 %{?with_autoreqdep:BuildConflicts: libpostproc}
65 Requires: %{name}-libs = %{version}-%{release}
66 Requires: xvid >= 1:1.1.0
67 Obsoletes: libpostproc
68 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
70 %define _noautoreqdep libGL.so.1 libGLU.so.1
72 %define specflags -fno-strict-aliasing
74 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
75 %define specflags_ia32 -fomit-frame-pointer
76 # -mmmx is needed to enable <mmintrin.h> code.
77 %define specflags_i586 -mmmx
78 %define specflags_i686 -mmmx
79 %define specflags_ppc -fPIC
82 ffmpeg is a hyper fast realtime audio/video encoder and streaming
83 server. It can grab from a standard Video4Linux video source and
84 convert it into several file formats based on DCT/motion compensation
85 encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
88 %description -l pl.UTF-8
89 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
90 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
91 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
92 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
93 jest kompresowany do strumienia MPEG audio layer 2 lub używając
94 strumienia kompatybilnego z AC3.
97 Summary: ffmpeg libraries
98 Summary(pl.UTF-8): Biblioteki ffmpeg
102 This package contains ffmpeg shared libraries.
104 %description libs -l pl.UTF-8
105 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
108 Summary: ffmpeg header files
109 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
110 Group: Development/Libraries
111 Requires: %{name}-libs = %{version}-%{release}
114 Requires: amrnb-devel
115 Requires: amrwb-devel >= 5.3.0
117 Requires: dirac-devel
119 Requires: faad2-devel
120 Requires: lame-libs-devel
121 Requires: libgsm-devel
122 Requires: libraw1394-devel
123 Requires: libtheora-devel >= 1.0-0.alpha7
124 Requires: libvorbis-devel
125 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
126 Requires: xvid-devel >= 1:1.1.0
128 Obsoletes: libpostproc-devel
133 %description devel -l pl.UTF-8
134 Pliki nagłówkowe ffmpeg.
137 Summary: ffmpeg static libraries
138 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
139 Group: Development/Libraries
140 Requires: %{name}-devel = %{version}-%{release}
143 ffmpeg static libraries (libavcodec and libavformat).
145 %description static -l pl.UTF-8
146 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
149 Summary: FFplay - SDL-based media player
150 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
151 Group: Applications/Multimedia
152 Requires: %{name}-libs = %{version}-%{release}
155 FFplay is a very simple and portable media player using the FFmpeg
156 libraries and the SDL library. It is mostly used as a test bench for
157 the various APIs of FFmpeg.
159 %description ffplay -l pl.UTF-8
160 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
161 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
162 testowania różnych API FFmpeg.
164 %package vhook-imlib2
165 Summary: imlib2 based hook
166 Summary(pl.UTF-8): Moduł przejściowy oparty o imlib2
168 Requires: %{name}-libs = %{version}-%{release}
170 %description vhook-imlib2
171 This module implements a text overlay for a video image. Currently it
172 supports a fixed overlay or reading the text from a file. The string
173 is passed through strftime so that it is easy to imprint the date and
176 %description vhook-imlib2 -l pl.UTF-8
177 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
178 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
179 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
183 Summary: FFserver video server
184 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
186 Requires(post,preun): /sbin/chkconfig
187 Requires: %{name}-libs = %{version}-%{release}
188 Requires: rc-scripts >= 0.4.0.10
190 %description ffserver
191 FFserver is a streaming server for both audio and video. It supports
192 several live feeds, streaming from files and time shifting on live
193 feeds (you can seek to positions in the past on each live feed,
194 provided you specify a big enough feed storage in ffserver.conf).
196 %description ffserver -l pl.UTF-8
197 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
198 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
199 czasie dla źródeł na żywo (można przeskakiwać na położenia w
200 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
201 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
208 # package the grep result for mplayer, the result formatted as ./mplayer/configure
209 cat <<EOF > ffmpeg-avconfig
211 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
212 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
213 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
214 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
215 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
216 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
217 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
219 cat <<'EOF' >> ffmpeg-avconfig
223 echo $_libavdecoders_all
226 echo $_libavencoders_all
229 echo $_libavparsers_all
235 echo $_libavdemuxers_all
238 echo $_libavmuxers_all
241 echo $_libavprotocols_all
263 # - it's not autoconf configure
264 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
266 --arch=%{_target_base_arch} \
267 --prefix=%{_prefix} \
268 --libdir=%{_libdir} \
269 --shlibdir=%{_libdir} \
270 --mandir=%{_mandir} \
272 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags} -I/usr/include/libavcodec -I/usr/include/libswscale" \
273 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
275 --disable-optimizations \
276 --disable-stripping \
280 --enable-libfaadbin \
284 --enable-libmp3lame \
285 --enable-libschroedinger \
295 %ifnarch %{ix86} %{x8664}
307 # force oldscaler build
308 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
313 rm -rf $RPM_BUILD_ROOT
314 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
315 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
316 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
319 DESTDIR=$RPM_BUILD_ROOT
321 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
322 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
324 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
325 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
326 for a in libavutil/*/bswap.h; do
327 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
329 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
330 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
332 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
333 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
334 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
335 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
337 # install as ffmpeg-avconfig to avoid with possible programs looking for
338 # ffmpeg-config and expecting --libs output from it which is not implemented
339 # simple to do (by querying pkgconfig), but why?
340 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
343 rm -rf $RPM_BUILD_ROOT
345 %post libs -p /sbin/ldconfig
346 %postun libs -p /sbin/ldconfig
349 %groupadd -g 167 ffserver
350 %useradd -g ffserver -u 167 ffserver
353 /sbin/chkconfig --add ffserver
354 %service ffserver restart
357 if [ "$1" = 0 ]; then
358 %service ffserver stop
359 /sbin/chkconfig --del ffserver
363 if [ "$1" = 0 ]; then
365 %groupremove ffserver
369 %defattr(644,root,root,755)
370 %doc Changelog README doc/*.html doc/TODO
371 %attr(755,root,root) %{_bindir}/ffmpeg
372 %dir %{_datadir}/ffmpeg
373 %{_datadir}/ffmpeg/*.ffpreset
374 %{_mandir}/man1/ffmpeg.1*
377 %defattr(644,root,root,755)
378 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
379 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
380 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
381 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
382 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
383 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
384 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.[0-9][0-9]
385 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.[0-9][0-9]
386 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.[0-9][0-9]
387 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.[0-9][0-9]
388 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.[0-9][0-9]
389 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.[0-9]
390 %dir %{_libdir}/vhook
391 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
392 %attr(755,root,root) %{_libdir}/vhook/fish.so
393 %attr(755,root,root) %{_libdir}/vhook/null.so
394 %attr(755,root,root) %{_libdir}/vhook/ppm.so
395 %attr(755,root,root) %{_libdir}/vhook/watermark.so
398 %defattr(644,root,root,755)
399 %doc doc/optimization.txt
400 %attr(755,root,root) %{_libdir}/libavcodec.so
401 %attr(755,root,root) %{_libdir}/libavdevice.so
402 %attr(755,root,root) %{_libdir}/libavformat.so
403 %attr(755,root,root) %{_libdir}/libavutil.so
404 %attr(755,root,root) %{_libdir}/libpostproc.so
405 %attr(755,root,root) %{_libdir}/libswscale.so
406 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
407 %{_includedir}/ffmpeg
408 %{_includedir}/libavcodec
409 %{_includedir}/libavdevice
410 %{_includedir}/libavformat
411 %{_includedir}/libavutil
412 %{_includedir}/libpostproc
413 %{_includedir}/libswscale
414 %{_pkgconfigdir}/*.pc
417 %defattr(644,root,root,755)
421 %defattr(644,root,root,755)
422 %attr(755,root,root) %{_bindir}/ffplay
423 %{_mandir}/man1/ffplay.1*
427 %defattr(644,root,root,755)
428 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
432 %defattr(644,root,root,755)
433 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
434 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
435 %attr(755,root,root) %{_sbindir}/ffserver
436 %attr(754,root,root) /etc/rc.d/init.d/ffserver
437 %{_mandir}/man1/ffserver.1*
438 %dir %attr(770,root,ffserver) /var/cache/ffserver
439 %dir %attr(770,root,ffserver) /var/log/ffserver