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 %define _snap 2008-09-30
10 %define snap %(echo %{_snap} | tr -d -)
12 Summary: Realtime audio/video encoder and streaming server
13 Summary(pl.UTF-8): Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
16 Release: 4.%{snap}.%{rel}
17 # LGPL or GPL, chosen at configure time (GPL version is more featured)
18 # (postprocessing, ac3, xvid, x264, faad)
19 License: GPL v2+ with LGPL v2.1+ parts
20 Group: Applications/Multimedia
21 #Source0: http://dl.sourceforge.net/ffmpeg/%{name}-%{version}-pre1.tar.gz
22 Source0: http://ffmpeg.mplayerhq.hu/%{name}-export-snapshot.tar.bz2
23 # Source0-md5: d85a173fa0843706e4f943b84046db84
24 Source1: ffserver.init
25 Source2: ffserver.sysconfig
26 Source3: ffserver.conf
27 Patch0: %{name}-img_convert_symbol.patch
28 Patch1: %{name}-x264.patch
29 URL: http://ffmpeg.mplayerhq.hu/
30 BuildRequires: SDL-devel
32 BuildRequires: amrnb-devel >= 6.1.0.4
33 BuildRequires: amrwb-devel >= 7.0.0.1
35 BuildRequires: dirac-devel
36 BuildRequires: faac-devel
37 BuildRequires: faad2-devel
38 BuildRequires: freetype-devel
40 # require version with altivec support fixed
41 BuildRequires: gcc >= 5:3.3.2-3
43 BuildRequires: a52dec-libs-devel
44 %{?with_imlib2:BuildRequires: imlib2-devel >= 1.3.0}
45 BuildRequires: lame-libs-devel
46 BuildRequires: libdc1394-devel
47 BuildRequires: libgsm-devel
48 BuildRequires: libraw1394-devel
49 BuildRequires: libtheora-devel >= 1.0-0.beta3
50 BuildRequires: libtool >= 2:1.4d-3
51 BuildRequires: libvorbis-devel
52 BuildRequires: libx264-devel >= 0.1.2-1.20080801
58 BuildRequires: perl-tools-pod
59 BuildRequires: pkgconfig
60 BuildRequires: rpmbuild(macros) >= 1.470
61 BuildRequires: schroedinger-devel
63 BuildRequires: texinfo
64 %{?with_amr:BuildRequires: unzip}
65 BuildRequires: xvid-devel >= 1:1.1.0
66 BuildRequires: zlib-devel
67 %{?with_autoreqdep:BuildConflicts: libpostproc}
68 Requires: %{name}-libs = %{version}-%{release}
69 Requires: xvid >= 1:1.1.0
70 Obsoletes: libpostproc
71 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
73 %define _noautoreqdep libGL.so.1 libGLU.so.1
75 %define specflags -fno-strict-aliasing
77 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
78 %define specflags_ia32 -fomit-frame-pointer
79 # -mmmx is needed to enable <mmintrin.h> code.
80 %define specflags_i586 -mmmx
81 %define specflags_i686 -mmmx
84 ffmpeg is a hyper fast realtime audio/video encoder and streaming
85 server. It can grab from a standard Video4Linux video source and
86 convert it into several file formats based on DCT/motion compensation
87 encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
90 %description -l pl.UTF-8
91 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
92 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
93 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
94 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
95 jest kompresowany do strumienia MPEG audio layer 2 lub używając
96 strumienia kompatybilnego z AC3.
99 Summary: ffmpeg libraries
100 Summary(pl.UTF-8): Biblioteki ffmpeg
104 This package contains ffmpeg shared libraries.
106 %description libs -l pl.UTF-8
107 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
110 Summary: ffmpeg header files
111 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
112 Group: Development/Libraries
113 Requires: %{name}-libs = %{version}-%{release}
116 Requires: amrnb-devel
117 Requires: amrwb-devel >= 5.3.0
119 Requires: dirac-devel
121 Requires: faad2-devel
122 Requires: lame-libs-devel
123 Requires: libgsm-devel
124 Requires: libtheora-devel >= 1.0-0.alpha7
125 Requires: libvorbis-devel
126 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
127 Requires: xvid-devel >= 1:1.1.0
129 Obsoletes: libpostproc-devel
134 %description devel -l pl.UTF-8
135 Pliki nagłówkowe ffmpeg.
138 Summary: ffmpeg static libraries
139 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
140 Group: Development/Libraries
141 Requires: %{name}-devel = %{version}-%{release}
144 ffmpeg static libraries (libavcodec and libavformat).
146 %description static -l pl.UTF-8
147 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
150 Summary: FFplay - SDL-based media player
151 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
152 Group: Applications/Multimedia
153 Requires: %{name}-libs = %{version}-%{release}
156 FFplay is a very simple and portable media player using the FFmpeg
157 libraries and the SDL library. It is mostly used as a test bench for
158 the various APIs of FFmpeg.
160 %description ffplay -l pl.UTF-8
161 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
162 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
163 testowania różnych API FFmpeg.
165 %package vhook-imlib2
166 Summary: imlib2 based hook
167 Summary(pl.UTF-8): Moduł przejściowy oparty o imlib2
169 Requires: %{name}-libs = %{version}-%{release}
171 %description vhook-imlib2
172 This module implements a text overlay for a video image. Currently it
173 supports a fixed overlay or reading the text from a file. The string
174 is passed through strftime so that it is easy to imprint the date and
177 %description vhook-imlib2 -l pl.UTF-8
178 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
179 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
180 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
184 Summary: FFserver video server
185 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
187 Requires(post,preun): /sbin/chkconfig
188 Requires: %{name}-libs = %{version}-%{release}
189 Requires: rc-scripts >= 0.4.0.10
191 %description ffserver
192 FFserver is a streaming server for both audio and video. It supports
193 several live feeds, streaming from files and time shifting on live
194 feeds (you can seek to positions in the past on each live feed,
195 provided you specify a big enough feed storage in ffserver.conf).
197 %description ffserver -l pl.UTF-8
198 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
199 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
200 czasie dla źródeł na żywo (można przeskakiwać na położenia w
201 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
202 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
205 %setup -q -n %{name}-export-%{_snap}
209 # package the grep result for mplayer, the result formatted as mplayer/configure
210 cat <<EOF > ffmpeg-config
212 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
213 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
214 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
215 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
216 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
217 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
218 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
220 cat <<'EOF' >> ffmpeg-config
224 echo $_libavdecoders_all
227 echo $_libavencoders_all
230 echo $_libavparsers_all
236 echo $_libavdemuxers_all
239 echo $_libavmuxers_all
242 echo $_libavprotocols_all
264 # - it's not autoconf configure
265 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
267 --arch=%{_target_base_arch} \
268 --prefix=%{_prefix} \
269 --libdir=%{_libdir} \
270 --shlibdir=%{_libdir} \
271 --mandir=%{_mandir} \
273 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
274 --extra-ldflags="%{rpmldflags}" \
276 --disable-optimizations \
277 --disable-stripping \
283 --enable-libfaadbin \
287 --enable-libmp3lame \
288 --enable-libschroedinger \
297 %ifnarch %{ix86} %{x8664}
312 rm -rf $RPM_BUILD_ROOT
313 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
314 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
315 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
318 DESTDIR=$RPM_BUILD_ROOT
320 install config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
321 install libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
323 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
324 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
325 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
327 # install as ffmpeg-avconfig to avoid with possible programs looking for
328 # ffmpeg-config and expecting --libs output from it which is not implemented
329 # simple to do (by querying pkgconfig), but why?
330 install ffmpeg-config $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
333 rm -rf $RPM_BUILD_ROOT
335 %post libs -p /sbin/ldconfig
336 %postun libs -p /sbin/ldconfig
339 %groupadd -g 167 ffserver
340 %useradd -g ffserver -u 167 ffserver
343 /sbin/chkconfig --add ffserver
344 %service ffserver restart
347 if [ "$1" = 0 ]; then
348 %service ffserver stop
349 /sbin/chkconfig --del ffserver
353 if [ "$1" = 0 ]; then
355 %groupremove ffserver
359 %defattr(644,root,root,755)
360 %doc Changelog README doc/*.html doc/TODO
361 %attr(755,root,root) %{_bindir}/ffmpeg
362 %{_mandir}/man1/ffmpeg.1*
365 %defattr(644,root,root,755)
366 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
367 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
368 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
369 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
370 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
371 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
372 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.[0-9][0-9]
373 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.[0-9][0-9]
374 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.[0-9][0-9]
375 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.[0-9][0-9]
376 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.[0-9][0-9]
377 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.[0-9]
378 %dir %{_libdir}/vhook
379 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
380 %attr(755,root,root) %{_libdir}/vhook/fish.so
381 %attr(755,root,root) %{_libdir}/vhook/null.so
382 %attr(755,root,root) %{_libdir}/vhook/ppm.so
383 %attr(755,root,root) %{_libdir}/vhook/watermark.so
386 %defattr(644,root,root,755)
387 %doc doc/optimization.txt
388 %attr(755,root,root) %{_libdir}/libavcodec.so
389 %attr(755,root,root) %{_libdir}/libavdevice.so
390 %attr(755,root,root) %{_libdir}/libavformat.so
391 %attr(755,root,root) %{_libdir}/libavutil.so
392 %attr(755,root,root) %{_libdir}/libpostproc.so
393 %attr(755,root,root) %{_libdir}/libswscale.so
394 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
395 %{_includedir}/ffmpeg
396 %{_includedir}/libavcodec
397 %{_includedir}/libavdevice
398 %{_includedir}/libavformat
399 %{_includedir}/libavutil
400 %{_includedir}/libpostproc
401 %{_includedir}/libswscale
402 %{_pkgconfigdir}/*.pc
405 %defattr(644,root,root,755)
409 %defattr(644,root,root,755)
410 %attr(755,root,root) %{_bindir}/ffplay
411 %{_mandir}/man1/ffplay.1*
415 %defattr(644,root,root,755)
416 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
420 %defattr(644,root,root,755)
421 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
422 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
423 %attr(755,root,root) %{_sbindir}/ffserver
424 %attr(754,root,root) /etc/rc.d/init.d/ffserver
425 %{_mandir}/man1/ffserver.1*
426 %dir %attr(770,root,ffserver) /var/cache/ffserver
427 %dir %attr(770,root,ffserver) /var/log/ffserver