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-08-22
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: 573ff56bb619391fbc13ecde23389b45
24 Source1: ffserver.init
25 Source2: ffserver.sysconfig
26 Source3: ffserver.conf
27 Patch0: %{name}-img_convert_symbol.patch
28 URL: http://ffmpeg.mplayerhq.hu/
29 BuildRequires: SDL-devel
31 BuildRequires: amrnb-devel >= 6.1.0.4
32 BuildRequires: amrwb-devel >= 7.0.0.1
34 BuildRequires: dirac-devel
35 BuildRequires: faac-devel
36 BuildRequires: faad2-devel
37 BuildRequires: freetype-devel
39 # require version with altivec support fixed
40 BuildRequires: gcc >= 5:3.3.2-3
42 BuildRequires: a52dec-libs-devel
43 %{?with_imlib2:BuildRequires: imlib2-devel >= 1.3.0}
44 BuildRequires: lame-libs-devel
45 BuildRequires: libdc1394-devel
46 BuildRequires: libgsm-devel
47 BuildRequires: libraw1394-devel
48 BuildRequires: libtheora-devel >= 1.0-0.alpha7
49 BuildRequires: libtool >= 2:1.4d-3
50 BuildRequires: libvorbis-devel
51 BuildRequires: libx264-devel >= 0.1.2-1.20080801
57 BuildRequires: perl-tools-pod
58 BuildRequires: rpmbuild(macros) >= 1.470
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
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
117 Requires: faad2-devel
118 Requires: lame-libs-devel
119 Requires: libgsm-devel
120 Requires: libtheora-devel >= 1.0-0.alpha7
121 Requires: libvorbis-devel
122 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
123 Requires: xvid-devel >= 1:1.1.0
125 Obsoletes: libpostproc-devel
130 %description devel -l pl.UTF-8
131 Pliki nagłówkowe ffmpeg.
134 Summary: ffmpeg static libraries
135 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
136 Group: Development/Libraries
137 Requires: %{name}-devel = %{version}-%{release}
140 ffmpeg static libraries (libavcodec and libavformat).
142 %description static -l pl.UTF-8
143 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
146 Summary: FFplay - SDL-based media player
147 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
148 Group: Applications/Multimedia
149 Requires: %{name}-libs = %{version}-%{release}
152 FFplay is a very simple and portable media player using the FFmpeg
153 libraries and the SDL library. It is mostly used as a test bench for
154 the various APIs of FFmpeg.
156 %description ffplay -l pl.UTF-8
157 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
158 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
159 testowania różnych API FFmpeg.
161 %package vhook-imlib2
162 Summary: imlib2 based hook
163 Summary(pl.UTF-8): Moduł przejściowy oparty o imlib2
165 Requires: %{name}-libs = %{version}-%{release}
167 %description vhook-imlib2
168 This module implements a text overlay for a video image. Currently it
169 supports a fixed overlay or reading the text from a file. The string
170 is passed through strftime so that it is easy to imprint the date and
173 %description vhook-imlib2 -l pl.UTF-8
174 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
175 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
176 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
180 Summary: FFserver video server
181 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
183 Requires(post,preun): /sbin/chkconfig
184 Requires: %{name}-libs = %{version}-%{release}
185 Requires: rc-scripts >= 0.4.0.10
187 %description ffserver
188 FFserver is a streaming server for both audio and video. It supports
189 several live feeds, streaming from files and time shifting on live
190 feeds (you can seek to positions in the past on each live feed,
191 provided you specify a big enough feed storage in ffserver.conf).
193 %description ffserver -l pl.UTF-8
194 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
195 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
196 czasie dla źródeł na żywo (można przeskakiwać na położenia w
197 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
198 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
201 %setup -q -n %{name}-export-%{_snap}
204 # package the grep result for mplayer, the result formatted as mplayer/configure
205 cat <<EOF > ffmpeg-config
207 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
208 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
209 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
210 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
211 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
212 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
213 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
215 cat <<'EOF' >> ffmpeg-config
219 echo $_libavdecoders_all
222 echo $_libavencoders_all
225 echo $_libavparsers_all
231 echo $_libavdemuxers_all
234 echo $_libavmuxers_all
237 echo $_libavprotocols_all
259 # - it's not autoconf configure
260 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
262 --arch=%{_target_base_arch} \
263 --prefix=%{_prefix} \
264 --libdir=%{_libdir} \
265 --shlibdir=%{_libdir} \
266 --mandir=%{_mandir} \
267 --disable-stripping \
272 --enable-libfaadbin \
278 --enable-libmp3lame \
286 %ifnarch %{ix86} %{x8664}
298 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
299 --extra-ldflags="%{rpmldflags}" \
301 --disable-optimizations \
306 rm -rf $RPM_BUILD_ROOT
307 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
308 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
309 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
312 DESTDIR=$RPM_BUILD_ROOT
314 install config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
315 install libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
316 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
317 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
318 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
319 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
321 # install as ffmpeg-avconfig to avoid with possible programs looking for
322 # ffmpeg-config and expecting --libs output from it which is not implemented
323 # simple to do (by querying pkgconfig), but why?
324 install ffmpeg-config $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
327 rm -rf $RPM_BUILD_ROOT
329 %post libs -p /sbin/ldconfig
330 %postun libs -p /sbin/ldconfig
333 %groupadd -g 167 ffserver
334 %useradd -g ffserver -u 167 ffserver
337 /sbin/chkconfig --add ffserver
338 %service ffserver restart
341 if [ "$1" = 0 ]; then
342 %service ffserver stop
343 /sbin/chkconfig --del ffserver
347 if [ "$1" = 0 ]; then
349 %groupremove ffserver
353 %defattr(644,root,root,755)
354 %doc Changelog README doc/*.html doc/TODO
355 %attr(755,root,root) %{_bindir}/ffmpeg
356 %{_mandir}/man1/ffmpeg.1*
359 %defattr(644,root,root,755)
360 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
361 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
362 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
363 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
364 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
365 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
366 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.51
367 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
368 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
369 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.49
370 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
371 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
372 %dir %{_libdir}/vhook
373 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
374 %attr(755,root,root) %{_libdir}/vhook/fish.so
375 %attr(755,root,root) %{_libdir}/vhook/null.so
376 %attr(755,root,root) %{_libdir}/vhook/ppm.so
377 %attr(755,root,root) %{_libdir}/vhook/watermark.so
380 %defattr(644,root,root,755)
381 %doc doc/optimization.txt
382 %attr(755,root,root) %{_libdir}/libavcodec.so
383 %attr(755,root,root) %{_libdir}/libavdevice.so
384 %attr(755,root,root) %{_libdir}/libavformat.so
385 %attr(755,root,root) %{_libdir}/libavutil.so
386 %attr(755,root,root) %{_libdir}/libpostproc.so
387 %attr(755,root,root) %{_libdir}/libswscale.so
388 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
389 %{_includedir}/ffmpeg
390 %{_includedir}/libavcodec
391 %{_includedir}/libavdevice
392 %{_includedir}/libavformat
393 %{_includedir}/libavutil
394 %{_includedir}/libpostproc
395 %{_includedir}/libswscale
396 %{_pkgconfigdir}/*.pc
399 %defattr(644,root,root,755)
403 %defattr(644,root,root,755)
404 %attr(755,root,root) %{_bindir}/ffplay
405 %{_mandir}/man1/ffplay.1*
409 %defattr(644,root,root,755)
410 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
414 %defattr(644,root,root,755)
415 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
416 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
417 %attr(755,root,root) %{_sbindir}/ffserver
418 %attr(754,root,root) /etc/rc.d/init.d/ffserver
419 %{_mandir}/man1/ffserver.1*
420 %dir %attr(770,root,ffserver) /var/cache/ffserver
421 %dir %attr(770,root,ffserver) /var/log/ffserver