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 # vhook is gone. this patch needs different approach
29 #PatchX: imagewidth.patch
30 # http://webm.googlecode.com/files/ffmpeg-0.6_libvpx-0.9.1.diff.gz
31 Patch3: ffmpeg-0.6_libvpx-0.9.1.diff
32 URL: http://www.ffmpeg.org/
33 BuildRequires: SDL-devel
34 BuildRequires: dirac-devel >= 1.0.0
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: lame-libs-devel
43 BuildRequires: libdc1394-devel
44 BuildRequires: libgsm-devel
45 BuildRequires: libraw1394-devel
46 BuildRequires: libtheora-devel >= 1.0-0.beta3
47 BuildRequires: libtool >= 2:1.4d-3
48 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
49 BuildRequires: libvdpau-devel
50 BuildRequires: libvorbis-devel
51 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.1}
53 BuildRequires: libx264-devel >= 0.1.3-1.20100424_2245.1
54 BuildRequires: opencore-amr-devel
55 BuildRequires: openjpeg-devel >= 1.3-2
56 BuildRequires: speex-devel >= 1:1.2-rc1
62 BuildRequires: perl-Encode
63 BuildRequires: perl-tools-pod
64 BuildRequires: pkgconfig
65 BuildRequires: rpmbuild(macros) >= 1.470
66 BuildRequires: schroedinger-devel
67 %{?with_doc:BuildRequires: tetex}
68 %{?with_doc:BuildRequires: texi2html}
69 %{?with_doc:BuildRequires: texinfo}
70 BuildRequires: xvid-devel >= 1:1.1.0
71 BuildRequires: zlib-devel
72 %{?with_autoreqdep:BuildConflicts: libpostproc}
73 Requires: %{name}-libs = %{version}-%{release}
74 Requires: xvid >= 1:1.1.0
75 Obsoletes: libpostproc
76 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
78 %define _noautoreqdep libGL.so.1 libGLU.so.1
80 %define specflags -fno-strict-aliasing
82 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
83 %define specflags_ia32 -fomit-frame-pointer
84 # -mmmx is needed to enable <mmintrin.h> code.
85 %define specflags_i586 -mmmx
86 %define specflags_i686 -mmmx
87 %define specflags_ppc -fPIC
90 FFmpeg is a complete solution to record, convert and stream audio and
91 video. It is a command line tool to convert one video file format to
92 another. It also supports grabbing and encoding in real time from a TV
95 %description -l pl.UTF-8
96 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
97 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
98 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
99 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
100 jest kompresowany do strumienia MPEG audio layer 2 lub używając
101 strumienia kompatybilnego z AC3.
104 Summary: ffmpeg libraries
105 Summary(pl.UTF-8): Biblioteki ffmpeg
110 This package contains:
111 - the codec library from the ffmpeg project. It supports most existing
112 encoding formats (MPEG, DivX, MPEG4, AC3, DV...),
113 - demuxer library from the ffmpeg project. It supports most existing
114 file formats (AVI, MPEG, OGG, Matroska, ASF...),
115 - video postprocessing library from the ffmpeg project.
117 %description libs -l pl.UTF-8
118 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
121 Summary: ffmpeg header files
122 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
123 Group: Development/Libraries
124 Requires: %{name}-libs = %{version}-%{release}
126 Requires: dirac-devel
128 Requires: faad2-devel
129 Requires: lame-libs-devel
130 Requires: libgsm-devel
131 Requires: libraw1394-devel
132 Requires: libtheora-devel >= 1.0-0.alpha7
133 Requires: libvorbis-devel
134 Requires: libx264-devel >= 0.1.2-1.20060828_2245.1
135 Requires: xvid-devel >= 1:1.1.0
137 Obsoletes: libpostproc-devel
142 %description devel -l pl.UTF-8
143 Pliki nagłówkowe ffmpeg.
146 Summary: ffmpeg static libraries
147 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
148 Group: Development/Libraries
149 Requires: %{name}-devel = %{version}-%{release}
152 ffmpeg static libraries (libavcodec and libavformat).
154 %description static -l pl.UTF-8
155 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
158 Summary: FFplay - SDL-based media player
159 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
160 Group: Applications/Multimedia
161 Requires: %{name}-libs = %{version}-%{release}
164 FFplay is a very simple and portable media player using the FFmpeg
165 libraries and the SDL library. It is mostly used as a test bench for
166 the various APIs of FFmpeg.
168 %description ffplay -l pl.UTF-8
169 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
170 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
171 testowania różnych API FFmpeg.
174 Summary: FFserver video server
175 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
177 Requires(post,preun): /sbin/chkconfig
178 Requires: %{name}-libs = %{version}-%{release}
179 Requires: rc-scripts >= 0.4.0.10
181 %description ffserver
182 FFserver is a streaming server for both audio and video. It supports
183 several live feeds, streaming from files and time shifting on live
184 feeds (you can seek to positions in the past on each live feed,
185 provided you specify a big enough feed storage in ffserver.conf).
187 %description ffserver -l pl.UTF-8
188 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
189 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
190 czasie dla źródeł na żywo (można przeskakiwać na położenia w
191 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
192 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
201 # package the grep result for mplayer, the result formatted as ./mplayer/configure
202 cat <<EOF > ffmpeg-avconfig
204 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
205 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
206 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
207 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
208 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
209 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
210 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
212 cat <<'EOF' >> ffmpeg-avconfig
216 echo $_libavdecoders_all
219 echo $_libavencoders_all
222 echo $_libavparsers_all
228 echo $_libavdemuxers_all
231 echo $_libavmuxers_all
234 echo $_libavprotocols_all
256 # - it's not autoconf configure
257 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
259 --arch=%{_target_base_arch} \
260 --prefix=%{_prefix} \
261 --libdir=%{_libdir} \
262 --shlibdir=%{_libdir} \
263 --mandir=%{_mandir} \
265 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
266 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
268 --disable-optimizations \
269 --disable-stripping \
276 --enable-libfaadbin \
278 --enable-libmp3lame \
279 --enable-libschroedinger \
283 %{?with_vpx:--enable-libvpx} \
286 --enable-libopencore-amrnb \
287 --enable-libopencore-amrwb \
288 --enable-libopenjpeg \
295 %ifnarch %{ix86} %{x8664}
305 --enable-runtime-cpudetect
307 # force oldscaler build
308 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
314 rm -rf $RPM_BUILD_ROOT
315 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
316 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
317 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
320 DESTDIR=$RPM_BUILD_ROOT \
323 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
324 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
325 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
326 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
327 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
328 for a in libavutil/*/bswap.h; do
329 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
331 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
332 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
334 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
335 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
336 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
337 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
339 # install as ffmpeg-avconfig to avoid with possible programs looking for
340 # ffmpeg-config and expecting --libs output from it which is not implemented
341 # simple to do (by querying pkgconfig), but why?
342 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
345 rm -rf $RPM_BUILD_ROOT
347 %post libs -p /sbin/ldconfig
348 %postun libs -p /sbin/ldconfig
351 %groupadd -g 167 ffserver
352 %useradd -g ffserver -u 167 ffserver
355 /sbin/chkconfig --add ffserver
356 %service ffserver restart
359 if [ "$1" = 0 ]; then
360 %service ffserver stop
361 /sbin/chkconfig --del ffserver
365 if [ "$1" = 0 ]; then
367 %groupremove ffserver
371 %defattr(644,root,root,755)
372 %doc Changelog LICENSE README %{?with_doc:doc/*.html} doc/TODO
373 %attr(755,root,root) %{_bindir}/ffmpeg
374 %attr(755,root,root) %{_bindir}/ffprobe
375 %dir %{_datadir}/ffmpeg
376 %{_datadir}/ffmpeg/*.ffpreset
377 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
378 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
381 %defattr(644,root,root,755)
382 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
383 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.52
384 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
385 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.52
386 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
387 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.1
388 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
389 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.52
390 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
391 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.50
392 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
393 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
394 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
395 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.0
398 %defattr(644,root,root,755)
399 %doc doc/optimization.txt
400 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
401 %attr(755,root,root) %{_libdir}/libavcodec.so
402 %attr(755,root,root) %{_libdir}/libavdevice.so
403 %attr(755,root,root) %{_libdir}/libavfilter.so
404 %attr(755,root,root) %{_libdir}/libavformat.so
405 %attr(755,root,root) %{_libdir}/libavutil.so
406 %attr(755,root,root) %{_libdir}/libpostproc.so
407 %attr(755,root,root) %{_libdir}/libswscale.so
408 %{_includedir}/ffmpeg
409 %{_includedir}/libavcodec
410 %{_includedir}/libavdevice
411 %{_includedir}/libavfilter
412 %{_includedir}/libavformat
413 %{_includedir}/libavutil
414 %{_includedir}/libpostproc
415 %{_includedir}/libswscale
416 %{_pkgconfigdir}/libavcodec.pc
417 %{_pkgconfigdir}/libavdevice.pc
418 %{_pkgconfigdir}/libavfilter.pc
419 %{_pkgconfigdir}/libavformat.pc
420 %{_pkgconfigdir}/libavutil.pc
421 %{_pkgconfigdir}/libpostproc.pc
422 %{_pkgconfigdir}/libswscale.pc
425 %defattr(644,root,root,755)
426 %{_libdir}/libavcodec.a
427 %{_libdir}/libavdevice.a
428 %{_libdir}/libavfilter.a
429 %{_libdir}/libavformat.a
430 %{_libdir}/libavutil.a
431 %{_libdir}/libpostproc.a
432 %{_libdir}/libswscale.a
435 %defattr(644,root,root,755)
436 %attr(755,root,root) %{_bindir}/ffplay
437 %{?with_doc:%{_mandir}/man1/ffplay.1*}
440 %defattr(644,root,root,755)
441 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
442 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
443 %attr(755,root,root) %{_sbindir}/ffserver
444 %attr(754,root,root) /etc/rc.d/init.d/ffserver
445 %{?with_doc:%{_mandir}/man1/ffserver.1*}
446 %dir %attr(770,root,ffserver) /var/cache/ffserver
447 %dir %attr(770,root,ffserver) /var/log/ffserver