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}
97 BuildRequires: vo-aacenc-devel
98 BuildRequires: vo-amrwbenc-devel
99 BuildRequires: xavs-devel
100 BuildRequires: xorg-lib-libXext-devel
101 BuildRequires: xorg-lib-libXfixes-devel
102 BuildRequires: xvid-devel >= 1:1.1.0
103 BuildRequires: zlib-devel
104 %{?with_autoreqdep:BuildConflicts: libpostproc}
105 # overflows maximum hash table size
106 BuildConflicts: pdksh < 5.2.14-57
107 Requires: %{name}-libs = %{version}-%{release}
108 Requires: xvid >= 1:1.1.0
109 Obsoletes: libpostproc
110 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
112 %define _noautoreqdep libGL.so.1 libGLU.so.1
114 %define specflags -fno-strict-aliasing
116 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
117 %define specflags_ia32 -fomit-frame-pointer
118 # -mmmx is needed to enable <mmintrin.h> code.
119 %define specflags_i586 -mmmx
120 %define specflags_i686 -mmmx
121 %define specflags_ppc -fPIC
124 FFmpeg is a complete solution to record, convert and stream audio and
125 video. It is a command line tool to convert one video file format to
126 another. It also supports grabbing and encoding in real time from a TV
129 %description -l pl.UTF-8
130 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
131 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
132 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
133 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
137 Summary: ffmpeg libraries
138 Summary(pl.UTF-8): Biblioteki ffmpeg
142 This package contains the ffmpeg shared libraries:
143 - the codec library (libavcodec). It supports most existing encoding
144 formats (MPEG, DivX, MPEG4, AC3, DV...),
145 - demuxer library (libavformat). It supports most existing file
146 formats (AVI, MPEG, OGG, Matroska, ASF...),
147 - video postprocessing library (libpostproc).
149 %description libs -l pl.UTF-8
150 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
151 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
152 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
153 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
154 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
155 - bibliotekę postprocessingu (libpostproc).
158 Summary: ffmpeg header files
159 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
160 Group: Development/Libraries
161 Requires: %{name}-libs = %{version}-%{release}
162 # Libs.private from *.pc (unreasonably they are all the same)
164 Requires: alsa-lib-devel
165 Requires: bzip2-devel
166 Requires: celt-devel >= 0.11.0
167 Requires: dirac-devel >= 1.0.0
168 %{?with_nonfree:Requires: faac-devel}
169 Requires: jack-audio-connection-kit-devel
170 Requires: lame-libs-devel >= 3.98.3
171 Requires: libdc1394-devel >= 2
172 Requires: libgsm-devel
173 Requires: libnut-devel
174 Requires: libraw1394-devel >= 2
175 Requires: librtmp-devel
176 Requires: libtheora-devel >= 1.0-0.beta3
177 %{?with_va:Requires: libva-devel >= 1.0.3}
178 Requires: libvorbis-devel
179 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
180 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
181 Requires: opencore-amr-devel
182 Requires: openjpeg-devel >= 1.3-2
183 Requires: schroedinger-devel
184 Requires: speex-devel >= 1:1.2-rc1
185 Requires: vo-aacenc-devel
186 Requires: vo-amrwbenc-devel
188 Requires: xorg-lib-libXext-devel
189 Requires: xorg-lib-libXfixes-devel
190 Requires: xvid-devel >= 1:1.1.0
192 Obsoletes: libpostproc-devel
197 %description devel -l pl.UTF-8
198 Pliki nagłówkowe ffmpeg.
201 Summary: ffmpeg static libraries
202 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
203 Group: Development/Libraries
204 Requires: %{name}-devel = %{version}-%{release}
207 ffmpeg static libraries (libavcodec and libavformat).
209 %description static -l pl.UTF-8
210 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
213 Summary: FFplay - SDL-based media player
214 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
215 Group: Applications/Multimedia
216 Requires: %{name}-libs = %{version}-%{release}
219 FFplay is a very simple and portable media player using the FFmpeg
220 libraries and the SDL library. It is mostly used as a test bench for
221 the various APIs of FFmpeg.
223 %description ffplay -l pl.UTF-8
224 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
225 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
226 testowania różnych API FFmpeg.
229 Summary: FFserver video server
230 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
232 Requires(post,preun): /sbin/chkconfig
233 Requires: %{name}-libs = %{version}-%{release}
234 Requires: rc-scripts >= 0.4.0.10
236 %description ffserver
237 FFserver is a streaming server for both audio and video. It supports
238 several live feeds, streaming from files and time shifting on live
239 feeds (you can seek to positions in the past on each live feed,
240 provided you specify a big enough feed storage in ffserver.conf).
242 %description ffserver -l pl.UTF-8
243 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
244 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
245 czasie dla źródeł na żywo (można przeskakiwać na położenia w
246 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
247 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
254 # package the grep result for mplayer, the result formatted as ./mplayer/configure
255 cat <<EOF > ffmpeg-avconfig
257 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
258 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
259 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
260 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
261 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
262 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
263 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
265 cat <<'EOF' >> ffmpeg-avconfig
269 echo $_libavdecoders_all
272 echo $_libavencoders_all
275 echo $_libavparsers_all
281 echo $_libavdemuxers_all
284 echo $_libavmuxers_all
287 echo $_libavprotocols_all
309 # - it's not autoconf configure
310 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
312 --arch=%{_target_base_arch} \
313 --prefix=%{_prefix} \
314 --libdir=%{_libdir} \
315 --shlibdir=%{_libdir} \
316 --mandir=%{_mandir} \
318 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
319 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
321 --disable-optimizations \
322 --disable-stripping \
327 %{?with_frei0r:--enable-frei0r} \
328 %{?with_aacplus:--enable-libaacplus} \
335 --enable-libmodplug \
336 --enable-libmp3lame \
338 --enable-libopencore-amrnb \
339 --enable-libopencore-amrwb \
340 %{?with_opencv:--enable-libopencv} \
341 --enable-libopenjpeg \
342 %{?with_pulseaudio:--enable-libpulse} \
344 --enable-libschroedinger \
347 %{?with_utvideo:--enable-libutvideo} \
349 --enable-libvo-aacenc \
350 --enable-libvo-amrwbenc \
352 %{?with_vpx:--enable-libvpx} \
353 %{?with_x264:--enable-libx264} \
356 %{?with_openal:--enable-openal} \
363 %ifnarch %{ix86} %{x8664}
373 --enable-runtime-cpudetect
375 # force oldscaler build
376 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
381 # CC_O to add -c to commandline. makefile should be patched
382 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
385 rm -rf $RPM_BUILD_ROOT
386 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
387 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
388 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
391 DESTDIR=$RPM_BUILD_ROOT \
394 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
395 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
396 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
397 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
398 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
399 for a in libavutil/*/bswap.h; do
400 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
402 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
403 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
404 # for lim-omx ffmpeg components
405 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
407 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
408 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
409 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
410 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
411 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
413 # install as ffmpeg-avconfig to avoid with possible programs looking for
414 # ffmpeg-config and expecting --libs output from it which is not implemented
415 # simple to do (by querying pkgconfig), but why?
416 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
419 rm -rf $RPM_BUILD_ROOT
421 %post libs -p /sbin/ldconfig
422 %postun libs -p /sbin/ldconfig
425 %groupadd -g 167 ffserver
426 %useradd -g ffserver -u 167 ffserver
429 /sbin/chkconfig --add ffserver
430 %service ffserver restart
433 if [ "$1" = 0 ]; then
434 %service ffserver stop
435 /sbin/chkconfig --del ffserver
439 if [ "$1" = 0 ]; then
441 %groupremove ffserver
445 %defattr(644,root,root,755)
446 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
447 %attr(755,root,root) %{_bindir}/ffmpeg
448 %attr(755,root,root) %{_bindir}/ffprobe
449 %attr(755,root,root) %{_bindir}/qt-faststart
450 %dir %{_datadir}/ffmpeg
451 %{_datadir}/ffmpeg/*.ffpreset
452 %{_datadir}/ffmpeg/ffprobe.xsd
453 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
454 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
457 %defattr(644,root,root,755)
458 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
459 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
460 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
461 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
462 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
463 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
464 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
465 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
466 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
467 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
468 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
469 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
470 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
471 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
472 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
473 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
476 %defattr(644,root,root,755)
477 %doc doc/optimization.txt
478 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
479 %attr(755,root,root) %{_libdir}/libavcodec.so
480 %attr(755,root,root) %{_libdir}/libavdevice.so
481 %attr(755,root,root) %{_libdir}/libavfilter.so
482 %attr(755,root,root) %{_libdir}/libavformat.so
483 %attr(755,root,root) %{_libdir}/libavutil.so
484 %attr(755,root,root) %{_libdir}/libpostproc.so
485 %attr(755,root,root) %{_libdir}/libswresample.so
486 %attr(755,root,root) %{_libdir}/libswscale.so
487 %{_includedir}/ffmpeg
488 %{_includedir}/libavcodec
489 %{_includedir}/libavdevice
490 %{_includedir}/libavfilter
491 %{_includedir}/libavformat
492 %{_includedir}/libavutil
493 %{_includedir}/libpostproc
494 %{_includedir}/libswresample
495 %{_includedir}/libswscale
496 %{_pkgconfigdir}/libavcodec.pc
497 %{_pkgconfigdir}/libavdevice.pc
498 %{_pkgconfigdir}/libavfilter.pc
499 %{_pkgconfigdir}/libavformat.pc
500 %{_pkgconfigdir}/libavutil.pc
501 %{_pkgconfigdir}/libpostproc.pc
502 %{_pkgconfigdir}/libswresample.pc
503 %{_pkgconfigdir}/libswscale.pc
506 %defattr(644,root,root,755)
507 %{_libdir}/libavcodec.a
508 %{_libdir}/libavdevice.a
509 %{_libdir}/libavfilter.a
510 %{_libdir}/libavformat.a
511 %{_libdir}/libavutil.a
512 %{_libdir}/libpostproc.a
513 %{_libdir}/libswresample.a
514 %{_libdir}/libswscale.a
517 %defattr(644,root,root,755)
518 %attr(755,root,root) %{_bindir}/ffplay
519 %{?with_doc:%{_mandir}/man1/ffplay.1*}
522 %defattr(644,root,root,755)
523 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
524 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
525 %attr(755,root,root) %{_sbindir}/ffserver
526 %attr(754,root,root) /etc/rc.d/init.d/ffserver
527 %{?with_doc:%{_mandir}/man1/ffserver.1*}
528 %dir %attr(770,root,ffserver) /var/cache/ffserver
529 %dir %attr(770,root,ffserver) /var/log/ffserver