2 # - libnut enabled no (http://www.nut-container.org/)
5 %bcond_with nonfree # non free options of package
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: FFmpeg is a very fast video and audio converter
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 v3+ with LGPL v3+ parts
17 Group: Applications/Multimedia
18 Source0: http://ffmpeg.mplayerhq.hu/releases/%{name}-%{version}.tar.bz2
19 # Source0-md5: d6142a9a5821d6a6262a6edb903faa24
20 Source1: ffserver.init
21 Source2: ffserver.sysconfig
22 Source3: ffserver.conf
23 Patch0: %{name}-bug-803.patch
24 Patch1: %{name}-gsm.patch
25 Patch2: faadbin-libfaadname.patch
26 # vhook is gone. this patch needs different approach
27 #PatchX: imagewidth.patch
28 # http://webm.googlecode.com/files/ffmpeg-0.6_libvpx-0.9.1.diff.gz
29 Patch3: ffmpeg-0.6_libvpx-0.9.1.diff
30 URL: http://www.ffmpeg.org/
31 BuildRequires: SDL-devel
32 BuildRequires: dirac-devel >= 1.0.0
33 BuildRequires: faac-devel
34 BuildRequires: faad2-devel
35 BuildRequires: freetype-devel
37 # require version with altivec support fixed
38 BuildRequires: gcc >= 5:3.3.2-3
40 %{?with_imlib2:BuildRequires: imlib2-devel >= 1.3.0}
41 BuildRequires: lame-libs-devel
42 BuildRequires: libdc1394-devel
43 BuildRequires: libgsm-devel
44 BuildRequires: libraw1394-devel
45 BuildRequires: libtheora-devel >= 1.0-0.beta3
46 BuildRequires: libtool >= 2:1.4d-3
47 BuildRequires: libva-devel >= 1.0.3
48 BuildRequires: libvdpau-devel
49 BuildRequires: libvorbis-devel
50 BuildRequires: libvpx-devel >= 0.9.1
52 BuildRequires: libx264-devel >= 0.1.3-1.20100424_2245.1
53 BuildRequires: opencore-amr-devel
54 BuildRequires: openjpeg-devel >= 1.3-2
55 BuildRequires: speex-devel >= 1:1.2-rc1
61 BuildRequires: perl-Encode
62 BuildRequires: perl-tools-pod
63 BuildRequires: pkgconfig
64 BuildRequires: rpmbuild(macros) >= 1.470
65 BuildRequires: schroedinger-devel
67 BuildRequires: texi2html
68 BuildRequires: texinfo
69 BuildRequires: xvid-devel >= 1:1.1.0
70 BuildRequires: zlib-devel
71 %{?with_autoreqdep:BuildConflicts: libpostproc}
72 Requires: %{name}-libs = %{version}-%{release}
73 Requires: xvid >= 1:1.1.0
74 Obsoletes: libpostproc
75 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
77 %define _noautoreqdep libGL.so.1 libGLU.so.1
79 %define specflags -fno-strict-aliasing
81 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
82 %define specflags_ia32 -fomit-frame-pointer
83 # -mmmx is needed to enable <mmintrin.h> code.
84 %define specflags_i586 -mmmx
85 %define specflags_i686 -mmmx
86 %define specflags_ppc -fPIC
89 FFmpeg is a complete solution to record, convert and stream audio and
90 video. It is a command line tool to convert one video file format to
91 another. It also supports grabbing and encoding in real time from a TV
94 %description -l pl.UTF-8
95 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
96 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
97 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
98 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
99 jest kompresowany do strumienia MPEG audio layer 2 lub używając
100 strumienia kompatybilnego z AC3.
103 Summary: ffmpeg libraries
104 Summary(pl.UTF-8): Biblioteki ffmpeg
108 This package contains:
109 - the codec library from the ffmpeg project. It supports most existing
110 encoding formats (MPEG, DivX, MPEG4, AC3, DV...),
111 - demuxer library from the ffmpeg project. It supports most existing
112 file formats (AVI, MPEG, OGG, Matroska, ASF...),
113 - video postprocessing library from the ffmpeg project.
115 %description libs -l pl.UTF-8
116 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
119 Summary: ffmpeg header files
120 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
121 Group: Development/Libraries
122 Requires: %{name}-libs = %{version}-%{release}
124 Requires: dirac-devel
126 Requires: faad2-devel
127 Requires: lame-libs-devel
128 Requires: libgsm-devel
129 Requires: libraw1394-devel
130 Requires: libtheora-devel >= 1.0-0.alpha7
131 Requires: libvorbis-devel
132 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
133 Requires: xvid-devel >= 1:1.1.0
135 Obsoletes: libpostproc-devel
140 %description devel -l pl.UTF-8
141 Pliki nagłówkowe ffmpeg.
144 Summary: ffmpeg static libraries
145 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
146 Group: Development/Libraries
147 Requires: %{name}-devel = %{version}-%{release}
150 ffmpeg static libraries (libavcodec and libavformat).
152 %description static -l pl.UTF-8
153 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
156 Summary: FFplay - SDL-based media player
157 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
158 Group: Applications/Multimedia
159 Requires: %{name}-libs = %{version}-%{release}
162 FFplay is a very simple and portable media player using the FFmpeg
163 libraries and the SDL library. It is mostly used as a test bench for
164 the various APIs of FFmpeg.
166 %description ffplay -l pl.UTF-8
167 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
168 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
169 testowania różnych API FFmpeg.
172 Summary: FFserver video server
173 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
175 Requires(post,preun): /sbin/chkconfig
176 Requires: %{name}-libs = %{version}-%{release}
177 Requires: rc-scripts >= 0.4.0.10
179 %description ffserver
180 FFserver is a streaming server for both audio and video. It supports
181 several live feeds, streaming from files and time shifting on live
182 feeds (you can seek to positions in the past on each live feed,
183 provided you specify a big enough feed storage in ffserver.conf).
185 %description ffserver -l pl.UTF-8
186 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
187 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
188 czasie dla źródeł na żywo (można przeskakiwać na położenia w
189 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
190 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
199 # package the grep result for mplayer, the result formatted as ./mplayer/configure
200 cat <<EOF > ffmpeg-avconfig
202 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
203 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
204 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
205 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
206 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
207 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
208 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
210 cat <<'EOF' >> ffmpeg-avconfig
214 echo $_libavdecoders_all
217 echo $_libavencoders_all
220 echo $_libavparsers_all
226 echo $_libavdemuxers_all
229 echo $_libavmuxers_all
232 echo $_libavprotocols_all
254 # - it's not autoconf configure
255 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
257 --arch=%{_target_base_arch} \
258 --prefix=%{_prefix} \
259 --libdir=%{_libdir} \
260 --shlibdir=%{_libdir} \
261 --mandir=%{_mandir} \
263 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
264 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
266 --disable-optimizations \
267 --disable-stripping \
275 --enable-libmp3lame \
276 --enable-libschroedinger \
283 --enable-libopencore-amrnb \
284 --enable-libopencore-amrwb \
285 --enable-libopenjpeg \
292 %ifnarch %{ix86} %{x8664}
302 --enable-runtime-cpudetect
304 # force oldscaler build
305 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
310 rm -rf $RPM_BUILD_ROOT
311 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
312 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
313 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
316 DESTDIR=$RPM_BUILD_ROOT
318 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
319 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
320 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
321 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 for a in libavutil/*/bswap.h; do
324 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
326 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
327 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
329 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
330 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
331 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
332 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
334 # install as ffmpeg-avconfig to avoid with possible programs looking for
335 # ffmpeg-config and expecting --libs output from it which is not implemented
336 # simple to do (by querying pkgconfig), but why?
337 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
340 rm -rf $RPM_BUILD_ROOT
342 %post libs -p /sbin/ldconfig
343 %postun libs -p /sbin/ldconfig
346 %groupadd -g 167 ffserver
347 %useradd -g ffserver -u 167 ffserver
350 /sbin/chkconfig --add ffserver
351 %service ffserver restart
354 if [ "$1" = 0 ]; then
355 %service ffserver stop
356 /sbin/chkconfig --del ffserver
360 if [ "$1" = 0 ]; then
362 %groupremove ffserver
366 %defattr(644,root,root,755)
367 %doc Changelog README doc/*.html doc/TODO
368 %attr(755,root,root) %{_bindir}/ffmpeg
369 %attr(755,root,root) %{_bindir}/ffprobe
370 %dir %{_datadir}/ffmpeg
371 %{_datadir}/ffmpeg/*.ffpreset
372 %{_mandir}/man1/ffmpeg.1*
373 %{_mandir}/man1/ffprobe.1*
376 %defattr(644,root,root,755)
377 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
378 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
379 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
380 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
381 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
382 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
383 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
384 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
385 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
386 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
387 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
388 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
389 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
390 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
393 %defattr(644,root,root,755)
394 %doc doc/optimization.txt
395 %attr(755,root,root) %{_libdir}/libavcodec.so
396 %attr(755,root,root) %{_libdir}/libavdevice.so
397 %attr(755,root,root) %{_libdir}/libavfilter.so
398 %attr(755,root,root) %{_libdir}/libavformat.so
399 %attr(755,root,root) %{_libdir}/libavutil.so
400 %attr(755,root,root) %{_libdir}/libpostproc.so
401 %attr(755,root,root) %{_libdir}/libswscale.so
402 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
403 %{_includedir}/ffmpeg
404 %{_includedir}/libavcodec
405 %{_includedir}/libavdevice
406 %{_includedir}/libavfilter
407 %{_includedir}/libavformat
408 %{_includedir}/libavutil
409 %{_includedir}/libpostproc
410 %{_includedir}/libswscale
411 %{_pkgconfigdir}/*.pc
414 %defattr(644,root,root,755)
418 %defattr(644,root,root,755)
419 %attr(755,root,root) %{_bindir}/ffplay
420 %{_mandir}/man1/ffplay.1*
423 %defattr(644,root,root,755)
424 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
425 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
426 %attr(755,root,root) %{_sbindir}/ffserver
427 %attr(754,root,root) /etc/rc.d/init.d/ffserver
428 %{_mandir}/man1/ffserver.1*
429 %dir %attr(770,root,ffserver) /var/cache/ffserver
430 %dir %attr(770,root,ffserver) /var/log/ffserver