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: 4f5d732d25eedfb072251b5314ba2093
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
109 This package contains:
110 - the codec library from the ffmpeg project. It supports most existing
111 encoding formats (MPEG, DivX, MPEG4, AC3, DV...),
112 - demuxer library from the ffmpeg project. It supports most existing
113 file formats (AVI, MPEG, OGG, Matroska, ASF...),
114 - video postprocessing library from the ffmpeg project.
116 %description libs -l pl.UTF-8
117 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
120 Summary: ffmpeg header files
121 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
122 Group: Development/Libraries
123 Requires: %{name}-libs = %{version}-%{release}
125 Requires: dirac-devel
127 Requires: faad2-devel
128 Requires: lame-libs-devel
129 Requires: libgsm-devel
130 Requires: libraw1394-devel
131 Requires: libtheora-devel >= 1.0-0.alpha7
132 Requires: libvorbis-devel
133 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
134 Requires: xvid-devel >= 1:1.1.0
136 Obsoletes: libpostproc-devel
141 %description devel -l pl.UTF-8
142 Pliki nagłówkowe ffmpeg.
145 Summary: ffmpeg static libraries
146 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
147 Group: Development/Libraries
148 Requires: %{name}-devel = %{version}-%{release}
151 ffmpeg static libraries (libavcodec and libavformat).
153 %description static -l pl.UTF-8
154 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
157 Summary: FFplay - SDL-based media player
158 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
159 Group: Applications/Multimedia
160 Requires: %{name}-libs = %{version}-%{release}
163 FFplay is a very simple and portable media player using the FFmpeg
164 libraries and the SDL library. It is mostly used as a test bench for
165 the various APIs of FFmpeg.
167 %description ffplay -l pl.UTF-8
168 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
169 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
170 testowania różnych API FFmpeg.
173 Summary: FFserver video server
174 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
176 Requires(post,preun): /sbin/chkconfig
177 Requires: %{name}-libs = %{version}-%{release}
178 Requires: rc-scripts >= 0.4.0.10
180 %description ffserver
181 FFserver is a streaming server for both audio and video. It supports
182 several live feeds, streaming from files and time shifting on live
183 feeds (you can seek to positions in the past on each live feed,
184 provided you specify a big enough feed storage in ffserver.conf).
186 %description ffserver -l pl.UTF-8
187 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
188 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
189 czasie dla źródeł na żywo (można przeskakiwać na położenia w
190 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
191 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
200 # package the grep result for mplayer, the result formatted as ./mplayer/configure
201 cat <<EOF > ffmpeg-avconfig
203 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
204 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
205 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
206 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
207 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
208 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
209 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
211 cat <<'EOF' >> ffmpeg-avconfig
215 echo $_libavdecoders_all
218 echo $_libavencoders_all
221 echo $_libavparsers_all
227 echo $_libavdemuxers_all
230 echo $_libavmuxers_all
233 echo $_libavprotocols_all
255 # - it's not autoconf configure
256 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
258 --arch=%{_target_base_arch} \
259 --prefix=%{_prefix} \
260 --libdir=%{_libdir} \
261 --shlibdir=%{_libdir} \
262 --mandir=%{_mandir} \
264 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
265 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
267 --disable-optimizations \
268 --disable-stripping \
275 --enable-libfaadbin \
277 --enable-libmp3lame \
278 --enable-libschroedinger \
285 --enable-libopencore-amrnb \
286 --enable-libopencore-amrwb \
287 --enable-libopenjpeg \
294 %ifnarch %{ix86} %{x8664}
304 --enable-runtime-cpudetect
306 # force oldscaler build
307 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
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 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
321 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
323 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
324 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
325 for a in libavutil/*/bswap.h; do
326 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
328 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
329 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
331 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
332 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
333 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
334 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
336 # install as ffmpeg-avconfig to avoid with possible programs looking for
337 # ffmpeg-config and expecting --libs output from it which is not implemented
338 # simple to do (by querying pkgconfig), but why?
339 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
342 rm -rf $RPM_BUILD_ROOT
344 %post libs -p /sbin/ldconfig
345 %postun libs -p /sbin/ldconfig
348 %groupadd -g 167 ffserver
349 %useradd -g ffserver -u 167 ffserver
352 /sbin/chkconfig --add ffserver
353 %service ffserver restart
356 if [ "$1" = 0 ]; then
357 %service ffserver stop
358 /sbin/chkconfig --del ffserver
362 if [ "$1" = 0 ]; then
364 %groupremove ffserver
368 %defattr(644,root,root,755)
369 %doc Changelog README doc/*.html doc/TODO
370 %attr(755,root,root) %{_bindir}/ffmpeg
371 %attr(755,root,root) %{_bindir}/ffprobe
372 %dir %{_datadir}/ffmpeg
373 %{_datadir}/ffmpeg/*.ffpreset
374 %{_mandir}/man1/ffmpeg.1*
375 %{_mandir}/man1/ffprobe.1*
378 %defattr(644,root,root,755)
379 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
380 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
381 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
382 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
383 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
384 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
385 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
386 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
387 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
388 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
389 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
390 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
391 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
392 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
395 %defattr(644,root,root,755)
396 %doc doc/optimization.txt
397 %attr(755,root,root) %{_libdir}/libavcodec.so
398 %attr(755,root,root) %{_libdir}/libavdevice.so
399 %attr(755,root,root) %{_libdir}/libavfilter.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}/libavfilter
409 %{_includedir}/libavformat
410 %{_includedir}/libavutil
411 %{_includedir}/libpostproc
412 %{_includedir}/libswscale
413 %{_pkgconfigdir}/*.pc
416 %defattr(644,root,root,755)
420 %defattr(644,root,root,755)
421 %attr(755,root,root) %{_bindir}/ffplay
422 %{_mandir}/man1/ffplay.1*
425 %defattr(644,root,root,755)
426 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
427 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
428 %attr(755,root,root) %{_sbindir}/ffserver
429 %attr(754,root,root) /etc/rc.d/init.d/ffserver
430 %{_mandir}/man1/ffserver.1*
431 %dir %attr(770,root,ffserver) /var/cache/ffserver
432 %dir %attr(770,root,ffserver) /var/log/ffserver