2 # - is bug803 patch still needed? the code changed somehow
4 # Workaround ffmpeg.spec & opencv.spec updating:
6 # 1. make-request -r --without opencv ffmpeg.spec
7 # 2. make-request -r opencv.spec
8 # 3. bump release of ffmpeg.spec
9 # 4. make-request -r ffmpeg.spec
12 %bcond_with nonfree # non free options of package (currently: faac)
13 %bcond_with aacplus # AAC+ encoding via libaacplus (requires nonfree)
14 %bcond_without autoreqdep # don't care about package name deps generated by rpm
15 %bcond_without frei0r # build without frei0r video filtering
16 %bcond_without openal # build without OpenAL 1.1 capture support
17 %bcond_without opencv # build without opencv video filtering
18 %bcond_without pulseaudio # build without PulseAudio input support
19 %bcond_without x264 # build without x264 encoder
20 %bcond_without utvideo # build without Ut Video decoder
21 %bcond_without va # VAAPI (Video Acceleration API)
22 %bcond_without vpx # VP8, a high-quality video codec
23 %bcond_without doc # don't build docs
25 Summary: FFmpeg - a very fast video and audio converter
26 Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
30 # LGPL or GPL, chosen at configure time (GPL version is more featured)
31 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
32 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
33 License: GPL v3+ with LGPL v3+ parts
34 Group: Applications/Multimedia
35 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
36 # Source0-md5: 775d184933f71ff44a2fff4968e78b2b
37 Source1: ffserver.init
38 Source2: ffserver.sysconfig
39 Source3: ffserver.conf
40 Patch0: %{name}-bug-803.patch
41 Patch1: %{name}-gsm.patch
42 URL: http://www.ffmpeg.org/
43 %{?with_openal:BuildRequires: OpenAL-devel}
44 BuildRequires: SDL-devel
45 BuildRequires: alsa-lib-devel
46 BuildRequires: bzip2-devel
47 BuildRequires: celt-devel >= 0.11.0
48 BuildRequires: dirac-devel >= 1.0.0
49 %{?with_nonfree:BuildRequires: faac-devel}
50 BuildRequires: freetype-devel
51 %{?with_frei0r:BuildRequires: frei0r-devel}
53 # require version with altivec support fixed
54 BuildRequires: gcc >= 5:3.3.2-3
56 BuildRequires: gnutls-devel
57 BuildRequires: jack-audio-connection-kit-devel
58 BuildRequires: lame-libs-devel >= 3.98.3
59 %{?with_aacplus:BuildRequires: libaacplus-devel >= 2.0.0}
60 BuildRequires: libass-devel
61 BuildRequires: libcdio-devel
62 BuildRequires: libdc1394-devel >= 2
63 BuildRequires: libgsm-devel
64 BuildRequires: libmodplug-devel
65 BuildRequires: libnut-devel
66 BuildRequires: libraw1394-devel >= 2
67 BuildRequires: librtmp-devel
68 BuildRequires: libtheora-devel >= 1.0-0.beta3
69 BuildRequires: libtool >= 2:1.4d-3
70 BuildRequires: libv4l-devel
71 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
72 BuildRequires: libvdpau-devel >= 0.2
73 BuildRequires: libvorbis-devel
74 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
76 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245}
77 BuildRequires: opencore-amr-devel
78 %{?with_opencv:BuildRequires: opencv-devel}
79 BuildRequires: openjpeg-devel >= 1.3-2
80 %{?with_pulseaudio:BuildRequires: pulseaudio-devel}
81 BuildRequires: speex-devel >= 1:1.2-rc1
87 BuildRequires: perl-Encode
88 BuildRequires: perl-tools-pod
89 BuildRequires: pkgconfig
90 BuildRequires: rpmbuild(macros) >= 1.470
91 BuildRequires: schroedinger-devel
92 %{?with_doc:BuildRequires: tetex}
93 %{?with_doc:BuildRequires: texi2html}
94 %{?with_doc:BuildRequires: texinfo}
95 %{?with_utvideo:BuildRequires: utvideo-devel}
96 BuildRequires: vo-aacenc-devel
97 BuildRequires: vo-amrwbenc-devel
98 BuildRequires: xavs-devel
99 BuildRequires: xorg-lib-libXext-devel
100 BuildRequires: xorg-lib-libXfixes-devel
101 BuildRequires: xvid-devel >= 1:1.1.0
102 BuildRequires: zlib-devel
103 %{?with_autoreqdep:BuildConflicts: libpostproc}
104 # overflows maximum hash table size
105 BuildConflicts: pdksh < 5.2.14-57
106 Requires: %{name}-libs = %{version}-%{release}
107 Requires: xvid >= 1:1.1.0
108 Obsoletes: libpostproc
109 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
111 %define _noautoreqdep libGL.so.1 libGLU.so.1
113 %define specflags -fno-strict-aliasing
115 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
116 %define specflags_ia32 -fomit-frame-pointer
117 # -mmmx is needed to enable <mmintrin.h> code.
118 %define specflags_i586 -mmmx
119 %define specflags_i686 -mmmx
120 %define specflags_ppc -fPIC
123 FFmpeg is a complete solution to record, convert and stream audio and
124 video. It is a command line tool to convert one video file format to
125 another. It also supports grabbing and encoding in real time from a TV
128 %description -l pl.UTF-8
129 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
130 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
131 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
132 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
136 Summary: ffmpeg libraries
137 Summary(pl.UTF-8): Biblioteki ffmpeg
141 This package contains the ffmpeg shared libraries:
142 - the codec library (libavcodec). It supports most existing encoding
143 formats (MPEG, DivX, MPEG4, AC3, DV...),
144 - demuxer library (libavformat). It supports most existing file
145 formats (AVI, MPEG, OGG, Matroska, ASF...),
146 - video postprocessing library (libpostproc).
148 %description libs -l pl.UTF-8
149 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
150 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
151 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
152 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
153 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
154 - bibliotekę postprocessingu (libpostproc).
157 Summary: ffmpeg header files
158 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
159 Group: Development/Libraries
160 Requires: %{name}-libs = %{version}-%{release}
161 # Libs.private from *.pc (unreasonably they are all the same)
163 Requires: alsa-lib-devel
164 Requires: bzip2-devel
165 Requires: celt-devel >= 0.11.0
166 Requires: dirac-devel >= 1.0.0
167 %{?with_nonfree:Requires: faac-devel}
168 Requires: jack-audio-connection-kit-devel
169 Requires: lame-libs-devel >= 3.98.3
170 Requires: libdc1394-devel >= 2
171 Requires: libgsm-devel
172 Requires: libnut-devel
173 Requires: libraw1394-devel >= 2
174 Requires: librtmp-devel
175 Requires: libtheora-devel >= 1.0-0.beta3
176 %{?with_va:Requires: libva-devel >= 1.0.3}
177 Requires: libvorbis-devel
178 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
179 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
180 Requires: opencore-amr-devel
181 Requires: openjpeg-devel >= 1.3-2
182 Requires: schroedinger-devel
183 Requires: speex-devel >= 1:1.2-rc1
184 Requires: vo-aacenc-devel
185 Requires: vo-amrwbenc-devel
187 Requires: xorg-lib-libXext-devel
188 Requires: xorg-lib-libXfixes-devel
189 Requires: xvid-devel >= 1:1.1.0
191 Obsoletes: libpostproc-devel
196 %description devel -l pl.UTF-8
197 Pliki nagłówkowe ffmpeg.
200 Summary: ffmpeg static libraries
201 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
202 Group: Development/Libraries
203 Requires: %{name}-devel = %{version}-%{release}
206 ffmpeg static libraries (libavcodec and libavformat).
208 %description static -l pl.UTF-8
209 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
212 Summary: FFplay - SDL-based media player
213 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
214 Group: Applications/Multimedia
215 Requires: %{name}-libs = %{version}-%{release}
218 FFplay is a very simple and portable media player using the FFmpeg
219 libraries and the SDL library. It is mostly used as a test bench for
220 the various APIs of FFmpeg.
222 %description ffplay -l pl.UTF-8
223 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
224 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
225 testowania różnych API FFmpeg.
228 Summary: FFserver video server
229 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
231 Requires(post,preun): /sbin/chkconfig
232 Requires: %{name}-libs = %{version}-%{release}
233 Requires: rc-scripts >= 0.4.0.10
235 %description ffserver
236 FFserver is a streaming server for both audio and video. It supports
237 several live feeds, streaming from files and time shifting on live
238 feeds (you can seek to positions in the past on each live feed,
239 provided you specify a big enough feed storage in ffserver.conf).
241 %description ffserver -l pl.UTF-8
242 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
243 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
244 czasie dla źródeł na żywo (można przeskakiwać na położenia w
245 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
246 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
253 # package the grep result for mplayer, the result formatted as ./mplayer/configure
254 cat <<EOF > ffmpeg-avconfig
256 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
257 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
258 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
259 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
260 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
261 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
262 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
264 cat <<'EOF' >> ffmpeg-avconfig
268 echo $_libavdecoders_all
271 echo $_libavencoders_all
274 echo $_libavparsers_all
280 echo $_libavdemuxers_all
283 echo $_libavmuxers_all
286 echo $_libavprotocols_all
308 # - it's not autoconf configure
309 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
311 --arch=%{_target_base_arch} \
312 --prefix=%{_prefix} \
313 --libdir=%{_libdir} \
314 --shlibdir=%{_libdir} \
315 --mandir=%{_mandir} \
317 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
318 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
320 --disable-optimizations \
321 --disable-stripping \
326 %{?with_frei0r:--enable-frei0r} \
327 %{?with_aacplus:--enable-libaacplus} \
334 --enable-libmodplug \
335 --enable-libmp3lame \
337 --enable-libopencore-amrnb \
338 --enable-libopencore-amrwb \
339 %{?with_opencv:--enable-libopencv} \
340 --enable-libopenjpeg \
341 %{?with_pulseaudio:--enable-libpulse} \
343 --enable-libschroedinger \
346 %{?with_utvideo:--enable-libutvideo} \
348 --enable-libvo-aacenc \
349 --enable-libvo-amrwbenc \
351 %{?with_vpx:--enable-libvpx} \
352 %{?with_x264:--enable-libx264} \
355 %{?with_openal:--enable-openal} \
362 %ifnarch %{ix86} %{x8664}
372 --enable-runtime-cpudetect
374 # force oldscaler build
375 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
380 # CC_O to add -c to commandline. makefile should be patched
381 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
384 rm -rf $RPM_BUILD_ROOT
385 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
386 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
387 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
390 DESTDIR=$RPM_BUILD_ROOT \
393 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
394 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
395 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
396 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
397 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
398 for a in libavutil/*/bswap.h; do
399 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
401 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
402 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
403 # for lim-omx ffmpeg components
404 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
406 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
407 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
408 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
409 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
410 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
412 # install as ffmpeg-avconfig to avoid with possible programs looking for
413 # ffmpeg-config and expecting --libs output from it which is not implemented
414 # simple to do (by querying pkgconfig), but why?
415 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
418 rm -rf $RPM_BUILD_ROOT
420 %post libs -p /sbin/ldconfig
421 %postun libs -p /sbin/ldconfig
424 %groupadd -g 167 ffserver
425 %useradd -g ffserver -u 167 ffserver
428 /sbin/chkconfig --add ffserver
429 %service ffserver restart
432 if [ "$1" = 0 ]; then
433 %service ffserver stop
434 /sbin/chkconfig --del ffserver
438 if [ "$1" = 0 ]; then
440 %groupremove ffserver
444 %defattr(644,root,root,755)
445 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
446 %attr(755,root,root) %{_bindir}/ffmpeg
447 %attr(755,root,root) %{_bindir}/ffprobe
448 %attr(755,root,root) %{_bindir}/qt-faststart
449 %dir %{_datadir}/ffmpeg
450 %{_datadir}/ffmpeg/*.ffpreset
451 %{_datadir}/ffmpeg/ffprobe.xsd
452 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
453 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
456 %defattr(644,root,root,755)
457 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
458 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
459 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
460 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
461 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
462 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
463 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
464 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
465 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
466 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
467 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
468 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
469 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
470 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
471 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
472 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
475 %defattr(644,root,root,755)
476 %doc doc/optimization.txt
477 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
478 %attr(755,root,root) %{_libdir}/libavcodec.so
479 %attr(755,root,root) %{_libdir}/libavdevice.so
480 %attr(755,root,root) %{_libdir}/libavfilter.so
481 %attr(755,root,root) %{_libdir}/libavformat.so
482 %attr(755,root,root) %{_libdir}/libavutil.so
483 %attr(755,root,root) %{_libdir}/libpostproc.so
484 %attr(755,root,root) %{_libdir}/libswresample.so
485 %attr(755,root,root) %{_libdir}/libswscale.so
486 %{_includedir}/ffmpeg
487 %{_includedir}/libavcodec
488 %{_includedir}/libavdevice
489 %{_includedir}/libavfilter
490 %{_includedir}/libavformat
491 %{_includedir}/libavutil
492 %{_includedir}/libpostproc
493 %{_includedir}/libswresample
494 %{_includedir}/libswscale
495 %{_pkgconfigdir}/libavcodec.pc
496 %{_pkgconfigdir}/libavdevice.pc
497 %{_pkgconfigdir}/libavfilter.pc
498 %{_pkgconfigdir}/libavformat.pc
499 %{_pkgconfigdir}/libavutil.pc
500 %{_pkgconfigdir}/libpostproc.pc
501 %{_pkgconfigdir}/libswresample.pc
502 %{_pkgconfigdir}/libswscale.pc
505 %defattr(644,root,root,755)
506 %{_libdir}/libavcodec.a
507 %{_libdir}/libavdevice.a
508 %{_libdir}/libavfilter.a
509 %{_libdir}/libavformat.a
510 %{_libdir}/libavutil.a
511 %{_libdir}/libpostproc.a
512 %{_libdir}/libswresample.a
513 %{_libdir}/libswscale.a
516 %defattr(644,root,root,755)
517 %attr(755,root,root) %{_bindir}/ffplay
518 %{?with_doc:%{_mandir}/man1/ffplay.1*}
521 %defattr(644,root,root,755)
522 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
523 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
524 %attr(755,root,root) %{_sbindir}/ffserver
525 %attr(754,root,root) /etc/rc.d/init.d/ffserver
526 %{?with_doc:%{_mandir}/man1/ffserver.1*}
527 %dir %attr(770,root,ffserver) /var/cache/ffserver
528 %dir %attr(770,root,ffserver) /var/log/ffserver