2 # - is bug803 patch still needed? the code changed somehow
5 %bcond_with nonfree # non free options of package (currently: faac)
6 %bcond_without autoreqdep # don't care about package name deps generated by rpm
7 %bcond_without frei0r # build without frei0r video filtering
8 %bcond_without va # VAAPI (Video Acceleration API)
9 %bcond_without vpx # VP8, a high-quality video codec
10 %bcond_without doc # don't build docs
12 Summary: FFmpeg - a very fast video and audio converter
13 Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
17 # LGPL or GPL, chosen at configure time (GPL version is more featured)
18 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
19 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
20 License: GPL v3+ with LGPL v3+ parts
21 Group: Applications/Multimedia
22 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
23 # Source0-md5: 556870ccfd6c9c0426c7dd86dd5beb62
24 Source1: ffserver.init
25 Source2: ffserver.sysconfig
26 Source3: ffserver.conf
27 Patch0: %{name}-bug-803.patch
28 Patch1: %{name}-gsm.patch
29 URL: http://www.ffmpeg.org/
30 BuildRequires: SDL-devel
31 BuildRequires: alsa-lib-devel
32 BuildRequires: bzip2-devel
33 BuildRequires: celt-devel
34 BuildRequires: dirac-devel >= 1.0.0
35 %{?with_nonfree:BuildRequires: faac-devel}
36 BuildRequires: freetype-devel
37 %{?with_frei0r:BuildRequires: frei0r-devel}
39 # require version with altivec support fixed
40 BuildRequires: gcc >= 5:3.3.2-3
42 BuildRequires: jack-audio-connection-kit-devel
43 BuildRequires: lame-libs-devel >= 3.98.3
44 BuildRequires: libdc1394-devel
45 BuildRequires: libgsm-devel
46 BuildRequires: libnut-devel
47 BuildRequires: libraw1394-devel
48 BuildRequires: librtmp-devel
49 BuildRequires: libtheora-devel >= 1.0-0.beta3
50 BuildRequires: libtool >= 2:1.4d-3
51 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
52 BuildRequires: libvdpau-devel
53 BuildRequires: libvorbis-devel
54 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
56 BuildRequires: libx264-devel >= 0.1.3-1.20110625_2245
57 BuildRequires: opencore-amr-devel
58 BuildRequires: openjpeg-devel >= 1.3-2
59 BuildRequires: speex-devel >= 1:1.2-rc1
65 BuildRequires: perl-Encode
66 BuildRequires: perl-tools-pod
67 BuildRequires: pkgconfig
68 BuildRequires: rpmbuild(macros) >= 1.470
69 BuildRequires: schroedinger-devel
70 %{?with_doc:BuildRequires: tetex}
71 %{?with_doc:BuildRequires: texi2html}
72 %{?with_doc:BuildRequires: texinfo}
73 BuildRequires: vo-aacenc-devel
74 BuildRequires: vo-amrwbenc-devel
75 BuildRequires: xavs-devel
76 BuildRequires: xorg-lib-libXext-devel
77 BuildRequires: xorg-lib-libXfixes-devel
78 BuildRequires: xvid-devel >= 1:1.1.0
79 BuildRequires: zlib-devel
80 %{?with_autoreqdep:BuildConflicts: libpostproc}
81 Requires: %{name}-libs = %{version}-%{release}
82 Requires: xvid >= 1:1.1.0
83 Obsoletes: libpostproc
84 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
86 %define _noautoreqdep libGL.so.1 libGLU.so.1
88 %define specflags -fno-strict-aliasing
90 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
91 %define specflags_ia32 -fomit-frame-pointer
92 # -mmmx is needed to enable <mmintrin.h> code.
93 %define specflags_i586 -mmmx
94 %define specflags_i686 -mmmx
95 %define specflags_ppc -fPIC
98 FFmpeg is a complete solution to record, convert and stream audio and
99 video. It is a command line tool to convert one video file format to
100 another. It also supports grabbing and encoding in real time from a TV
103 %description -l pl.UTF-8
104 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
105 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
106 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
107 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
111 Summary: ffmpeg libraries
112 Summary(pl.UTF-8): Biblioteki ffmpeg
116 This package contains the ffmpeg shared libraries:
117 - the codec library (libavcodec). It supports most existing encoding
118 formats (MPEG, DivX, MPEG4, AC3, DV...),
119 - demuxer library (libavformat). It supports most existing file
120 formats (AVI, MPEG, OGG, Matroska, ASF...),
121 - video postprocessing library (libpostproc).
123 %description libs -l pl.UTF-8
124 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
125 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
126 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
127 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
128 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
129 - bibliotekę postprocessingu (libpostproc).
132 Summary: ffmpeg header files
133 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
134 Group: Development/Libraries
135 Requires: %{name}-libs = %{version}-%{release}
136 # Libs.private from *.pc (unreasonably they are all the same)
138 Requires: alsa-lib-devel
139 Requires: bzip2-devel
141 Requires: dirac-devel >= 1.0.0
142 %{?with_nonfree:Requires: faac-devel}
143 Requires: jack-audio-connection-kit-devel
144 Requires: lame-libs-devel >= 3.98.3
145 Requires: libdc1394-devel
146 Requires: libgsm-devel
147 Requires: libnut-devel
148 Requires: libraw1394-devel
149 Requires: librtmp-devel
150 Requires: libtheora-devel >= 1.0-0.beta3
151 %{?with_va:Requires: libva-devel >= 1.0.3}
152 Requires: libvorbis-devel
153 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
154 Requires: libx264-devel >= 0.1.3-1.20110625_2245
155 Requires: opencore-amr-devel
156 Requires: openjpeg-devel >= 1.3-2
157 Requires: schroedinger-devel
158 Requires: speex-devel >= 1:1.2-rc1
159 Requires: vo-aacenc-devel
160 Requires: vo-amrwbenc-devel
162 Requires: xorg-lib-libXext-devel
163 Requires: xorg-lib-libXfixes-devel
164 Requires: xvid-devel >= 1:1.1.0
166 Obsoletes: libpostproc-devel
171 %description devel -l pl.UTF-8
172 Pliki nagłówkowe ffmpeg.
175 Summary: ffmpeg static libraries
176 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
177 Group: Development/Libraries
178 Requires: %{name}-devel = %{version}-%{release}
181 ffmpeg static libraries (libavcodec and libavformat).
183 %description static -l pl.UTF-8
184 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
187 Summary: FFplay - SDL-based media player
188 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
189 Group: Applications/Multimedia
190 Requires: %{name}-libs = %{version}-%{release}
193 FFplay is a very simple and portable media player using the FFmpeg
194 libraries and the SDL library. It is mostly used as a test bench for
195 the various APIs of FFmpeg.
197 %description ffplay -l pl.UTF-8
198 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
199 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
200 testowania różnych API FFmpeg.
203 Summary: FFserver video server
204 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
206 Requires(post,preun): /sbin/chkconfig
207 Requires: %{name}-libs = %{version}-%{release}
208 Requires: rc-scripts >= 0.4.0.10
210 %description ffserver
211 FFserver is a streaming server for both audio and video. It supports
212 several live feeds, streaming from files and time shifting on live
213 feeds (you can seek to positions in the past on each live feed,
214 provided you specify a big enough feed storage in ffserver.conf).
216 %description ffserver -l pl.UTF-8
217 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
218 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
219 czasie dla źródeł na żywo (można przeskakiwać na położenia w
220 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
221 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
228 # package the grep result for mplayer, the result formatted as ./mplayer/configure
229 cat <<EOF > ffmpeg-avconfig
231 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
232 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
233 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
234 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
235 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
236 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
237 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
239 cat <<'EOF' >> ffmpeg-avconfig
243 echo $_libavdecoders_all
246 echo $_libavencoders_all
249 echo $_libavparsers_all
255 echo $_libavdemuxers_all
258 echo $_libavmuxers_all
261 echo $_libavprotocols_all
283 # - it's not autoconf configure
284 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
286 --arch=%{_target_base_arch} \
287 --prefix=%{_prefix} \
288 --libdir=%{_libdir} \
289 --shlibdir=%{_libdir} \
290 --mandir=%{_mandir} \
292 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
293 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
295 --disable-optimizations \
296 --disable-stripping \
300 %{?with_frei0r:--enable-frei0r} \
305 --enable-libmp3lame \
307 --enable-libopencore-amrnb \
308 --enable-libopencore-amrwb \
309 --enable-libopenjpeg \
311 --enable-libschroedinger \
314 --enable-libvo-aacenc \
315 --enable-libvo-amrwbenc \
317 %{?with_vpx:--enable-libvpx} \
327 %ifnarch %{ix86} %{x8664}
337 --enable-runtime-cpudetect
339 # --enable-libopencv would cause dependency loop
341 # force oldscaler build
342 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
347 # CC_O to add -c to commandline. makefile should be patched
348 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
351 rm -rf $RPM_BUILD_ROOT
352 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
353 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
354 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
357 DESTDIR=$RPM_BUILD_ROOT \
360 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
361 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
362 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
363 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
364 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
365 for a in libavutil/*/bswap.h; do
366 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
368 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
369 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
371 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
372 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
373 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
374 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
375 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
377 # install as ffmpeg-avconfig to avoid with possible programs looking for
378 # ffmpeg-config and expecting --libs output from it which is not implemented
379 # simple to do (by querying pkgconfig), but why?
380 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
383 rm -rf $RPM_BUILD_ROOT
385 %post libs -p /sbin/ldconfig
386 %postun libs -p /sbin/ldconfig
389 %groupadd -g 167 ffserver
390 %useradd -g ffserver -u 167 ffserver
393 /sbin/chkconfig --add ffserver
394 %service ffserver restart
397 if [ "$1" = 0 ]; then
398 %service ffserver stop
399 /sbin/chkconfig --del ffserver
403 if [ "$1" = 0 ]; then
405 %groupremove ffserver
409 %defattr(644,root,root,755)
410 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES,TODO} %{?with_doc:doc/*.html}
411 %attr(755,root,root) %{_bindir}/ffmpeg
412 %attr(755,root,root) %{_bindir}/ffprobe
413 %attr(755,root,root) %{_bindir}/qt-faststart
414 %dir %{_datadir}/ffmpeg
415 %{_datadir}/ffmpeg/*.ffpreset
416 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
417 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
420 %defattr(644,root,root,755)
421 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
422 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
423 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
424 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
425 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
426 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
427 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
428 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
429 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
430 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
431 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
432 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
433 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
434 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
437 %defattr(644,root,root,755)
438 %doc doc/optimization.txt
439 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
440 %attr(755,root,root) %{_libdir}/libavcodec.so
441 %attr(755,root,root) %{_libdir}/libavdevice.so
442 %attr(755,root,root) %{_libdir}/libavfilter.so
443 %attr(755,root,root) %{_libdir}/libavformat.so
444 %attr(755,root,root) %{_libdir}/libavutil.so
445 %attr(755,root,root) %{_libdir}/libpostproc.so
446 %attr(755,root,root) %{_libdir}/libswscale.so
447 %{_includedir}/ffmpeg
448 %{_includedir}/libavcodec
449 %{_includedir}/libavdevice
450 %{_includedir}/libavfilter
451 %{_includedir}/libavformat
452 %{_includedir}/libavutil
453 %{_includedir}/libpostproc
454 %{_includedir}/libswscale
455 %{_pkgconfigdir}/libavcodec.pc
456 %{_pkgconfigdir}/libavdevice.pc
457 %{_pkgconfigdir}/libavfilter.pc
458 %{_pkgconfigdir}/libavformat.pc
459 %{_pkgconfigdir}/libavutil.pc
460 %{_pkgconfigdir}/libpostproc.pc
461 %{_pkgconfigdir}/libswscale.pc
464 %defattr(644,root,root,755)
465 %{_libdir}/libavcodec.a
466 %{_libdir}/libavdevice.a
467 %{_libdir}/libavfilter.a
468 %{_libdir}/libavformat.a
469 %{_libdir}/libavutil.a
470 %{_libdir}/libpostproc.a
471 %{_libdir}/libswscale.a
474 %defattr(644,root,root,755)
475 %attr(755,root,root) %{_bindir}/ffplay
476 %{?with_doc:%{_mandir}/man1/ffplay.1*}
479 %defattr(644,root,root,755)
480 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
481 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
482 %attr(755,root,root) %{_sbindir}/ffserver
483 %attr(754,root,root) /etc/rc.d/init.d/ffserver
484 %{?with_doc:%{_mandir}/man1/ffserver.1*}
485 %dir %attr(770,root,ffserver) /var/cache/ffserver
486 %dir %attr(770,root,ffserver) /var/log/ffserver