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 va # VAAPI (Video Acceleration API)
8 %bcond_without vpx # VP8, a high-quality video codec
9 %bcond_without doc # don't build docs
11 Summary: FFmpeg is a very fast video and audio converter
12 Summary(pl.UTF-8): Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
16 # LGPL or GPL, chosen at configure time (GPL version is more featured)
17 # (postprocessing, ac3, xvid, x264, faad)
18 License: GPL v3+ with LGPL v3+ parts
19 Group: Applications/Multimedia
20 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
21 # Source0-md5: 4f5d732d25eedfb072251b5314ba2093
22 Source1: ffserver.init
23 Source2: ffserver.sysconfig
24 Source3: ffserver.conf
25 Patch0: %{name}-bug-803.patch
26 Patch1: %{name}-gsm.patch
27 Patch2: faadbin-libfaadname.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 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 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
47 BuildRequires: libvdpau-devel
48 BuildRequires: libvorbis-devel
49 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.1}
51 BuildRequires: libx264-devel >= 0.1.3-1.20100424_2245.1
52 BuildRequires: opencore-amr-devel
53 BuildRequires: openjpeg-devel >= 1.3-2
54 BuildRequires: speex-devel >= 1:1.2-rc1
60 BuildRequires: perl-Encode
61 BuildRequires: perl-tools-pod
62 BuildRequires: pkgconfig
63 BuildRequires: rpmbuild(macros) >= 1.470
64 BuildRequires: schroedinger-devel
65 %{?with_doc:BuildRequires: tetex}
66 %{?with_doc:BuildRequires: texi2html}
67 %{?with_doc:BuildRequires: texinfo}
68 BuildRequires: xvid-devel >= 1:1.1.0
69 BuildRequires: zlib-devel
70 %{?with_autoreqdep:BuildConflicts: libpostproc}
71 Requires: %{name}-libs = %{version}-%{release}
72 Requires: xvid >= 1:1.1.0
73 Obsoletes: libpostproc
74 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
76 %define _noautoreqdep libGL.so.1 libGLU.so.1
78 %define specflags -fno-strict-aliasing
80 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
81 %define specflags_ia32 -fomit-frame-pointer
82 # -mmmx is needed to enable <mmintrin.h> code.
83 %define specflags_i586 -mmmx
84 %define specflags_i686 -mmmx
85 %define specflags_ppc -fPIC
88 FFmpeg is a complete solution to record, convert and stream audio and
89 video. It is a command line tool to convert one video file format to
90 another. It also supports grabbing and encoding in real time from a TV
93 %description -l pl.UTF-8
94 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
95 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
96 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
97 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
98 jest kompresowany do strumienia MPEG audio layer 2 lub używając
99 strumienia kompatybilnego z AC3.
102 Summary: ffmpeg libraries
103 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 \
274 --enable-libfaadbin \
276 --enable-libmp3lame \
277 --enable-libschroedinger \
281 %{?with_vpx:--enable-libvpx} \
284 --enable-libopencore-amrnb \
285 --enable-libopencore-amrwb \
286 --enable-libopenjpeg \
293 %ifnarch %{ix86} %{x8664}
303 --enable-runtime-cpudetect
305 # force oldscaler build
306 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 \
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 LICENSE README %{?with_doc:doc/*.html} doc/TODO
371 %attr(755,root,root) %{_bindir}/ffmpeg
372 %attr(755,root,root) %{_bindir}/ffprobe
373 %dir %{_datadir}/ffmpeg
374 %{_datadir}/ffmpeg/*.ffpreset
375 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
376 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
379 %defattr(644,root,root,755)
380 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
381 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
382 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
383 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
384 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
385 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
386 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
387 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
388 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
389 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
390 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
391 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
392 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
393 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
396 %defattr(644,root,root,755)
397 %doc doc/optimization.txt
398 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
399 %attr(755,root,root) %{_libdir}/libavcodec.so
400 %attr(755,root,root) %{_libdir}/libavdevice.so
401 %attr(755,root,root) %{_libdir}/libavfilter.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 %{_includedir}/ffmpeg
407 %{_includedir}/libavcodec
408 %{_includedir}/libavdevice
409 %{_includedir}/libavfilter
410 %{_includedir}/libavformat
411 %{_includedir}/libavutil
412 %{_includedir}/libpostproc
413 %{_includedir}/libswscale
414 %{_pkgconfigdir}/libavcodec.pc
415 %{_pkgconfigdir}/libavdevice.pc
416 %{_pkgconfigdir}/libavfilter.pc
417 %{_pkgconfigdir}/libavformat.pc
418 %{_pkgconfigdir}/libavutil.pc
419 %{_pkgconfigdir}/libpostproc.pc
420 %{_pkgconfigdir}/libswscale.pc
423 %defattr(644,root,root,755)
424 %{_libdir}/libavcodec.a
425 %{_libdir}/libavdevice.a
426 %{_libdir}/libavfilter.a
427 %{_libdir}/libavformat.a
428 %{_libdir}/libavutil.a
429 %{_libdir}/libpostproc.a
430 %{_libdir}/libswscale.a
433 %defattr(644,root,root,755)
434 %attr(755,root,root) %{_bindir}/ffplay
435 %{?with_doc:%{_mandir}/man1/ffplay.1*}
438 %defattr(644,root,root,755)
439 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
440 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
441 %attr(755,root,root) %{_sbindir}/ffserver
442 %attr(754,root,root) /etc/rc.d/init.d/ffserver
443 %{?with_doc:%{_mandir}/man1/ffserver.1*}
444 %dir %attr(770,root,ffserver) /var/cache/ffserver
445 %dir %attr(770,root,ffserver) /var/log/ffserver