2 # - consider: libstagefright-h264, libutvideo
3 # - is bug803 patch still needed? the code changed somehow
5 # Workaround ffmpeg.spec & opencv.spec updating:
7 # 1. make-request -r --without opencv ffmpeg.spec
8 # 2. make-request -r opencv.spec
9 # 3. bump release of ffmpeg.spec
10 # 4. make-request -r ffmpeg.spec
13 %bcond_with nonfree # non free options of package (currently: faac)
14 %bcond_with aacplus # AAC+ encoding via libaacplus (requires nonfree)
15 %bcond_without autoreqdep # don't care about package name deps generated by rpm
16 %bcond_without frei0r # build without frei0r video filtering
17 %bcond_without openal # build without OpenAL 1.1 capture support
18 %bcond_without opencv # build without opencv video filtering
19 %bcond_without pulseaudio # build without PulseAudio input support
20 %bcond_without x264 # build without x264 encoder
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: 795058de6fc432aa11271408273a0535
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
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: libv4l2-devel
71 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
72 BuildRequires: libvdpau-devel
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 BuildRequires: vo-aacenc-devel
96 BuildRequires: vo-amrwbenc-devel
97 BuildRequires: xavs-devel
98 BuildRequires: xorg-lib-libXext-devel
99 BuildRequires: xorg-lib-libXfixes-devel
100 BuildRequires: xvid-devel >= 1:1.1.0
101 BuildRequires: zlib-devel
102 %{?with_autoreqdep:BuildConflicts: libpostproc}
103 Requires: %{name}-libs = %{version}-%{release}
104 Requires: xvid >= 1:1.1.0
105 Obsoletes: libpostproc
106 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
108 %define _noautoreqdep libGL.so.1 libGLU.so.1
110 %define specflags -fno-strict-aliasing
112 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
113 %define specflags_ia32 -fomit-frame-pointer
114 # -mmmx is needed to enable <mmintrin.h> code.
115 %define specflags_i586 -mmmx
116 %define specflags_i686 -mmmx
117 %define specflags_ppc -fPIC
120 FFmpeg is a complete solution to record, convert and stream audio and
121 video. It is a command line tool to convert one video file format to
122 another. It also supports grabbing and encoding in real time from a TV
125 %description -l pl.UTF-8
126 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
127 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
128 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
129 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
133 Summary: ffmpeg libraries
134 Summary(pl.UTF-8): Biblioteki ffmpeg
138 This package contains the ffmpeg shared libraries:
139 - the codec library (libavcodec). It supports most existing encoding
140 formats (MPEG, DivX, MPEG4, AC3, DV...),
141 - demuxer library (libavformat). It supports most existing file
142 formats (AVI, MPEG, OGG, Matroska, ASF...),
143 - video postprocessing library (libpostproc).
145 %description libs -l pl.UTF-8
146 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
147 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
148 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
149 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
150 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
151 - bibliotekę postprocessingu (libpostproc).
154 Summary: ffmpeg header files
155 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
156 Group: Development/Libraries
157 Requires: %{name}-libs = %{version}-%{release}
158 # Libs.private from *.pc (unreasonably they are all the same)
160 Requires: alsa-lib-devel
161 Requires: bzip2-devel
163 Requires: dirac-devel >= 1.0.0
164 %{?with_nonfree:Requires: faac-devel}
165 Requires: jack-audio-connection-kit-devel
166 Requires: lame-libs-devel >= 3.98.3
167 Requires: libdc1394-devel
168 Requires: libgsm-devel
169 Requires: libnut-devel
170 Requires: libraw1394-devel >= 2
171 Requires: librtmp-devel
172 Requires: libtheora-devel >= 1.0-0.beta3
173 %{?with_va:Requires: libva-devel >= 1.0.3}
174 Requires: libvorbis-devel
175 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
176 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
177 Requires: opencore-amr-devel
178 Requires: openjpeg-devel >= 1.3-2
179 Requires: schroedinger-devel
180 Requires: speex-devel >= 1:1.2-rc1
181 Requires: vo-aacenc-devel
182 Requires: vo-amrwbenc-devel
184 Requires: xorg-lib-libXext-devel
185 Requires: xorg-lib-libXfixes-devel
186 Requires: xvid-devel >= 1:1.1.0
188 Obsoletes: libpostproc-devel
193 %description devel -l pl.UTF-8
194 Pliki nagłówkowe ffmpeg.
197 Summary: ffmpeg static libraries
198 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
199 Group: Development/Libraries
200 Requires: %{name}-devel = %{version}-%{release}
203 ffmpeg static libraries (libavcodec and libavformat).
205 %description static -l pl.UTF-8
206 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
209 Summary: FFplay - SDL-based media player
210 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
211 Group: Applications/Multimedia
212 Requires: %{name}-libs = %{version}-%{release}
215 FFplay is a very simple and portable media player using the FFmpeg
216 libraries and the SDL library. It is mostly used as a test bench for
217 the various APIs of FFmpeg.
219 %description ffplay -l pl.UTF-8
220 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
221 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
222 testowania różnych API FFmpeg.
225 Summary: FFserver video server
226 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
228 Requires(post,preun): /sbin/chkconfig
229 Requires: %{name}-libs = %{version}-%{release}
230 Requires: rc-scripts >= 0.4.0.10
232 %description ffserver
233 FFserver is a streaming server for both audio and video. It supports
234 several live feeds, streaming from files and time shifting on live
235 feeds (you can seek to positions in the past on each live feed,
236 provided you specify a big enough feed storage in ffserver.conf).
238 %description ffserver -l pl.UTF-8
239 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
240 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
241 czasie dla źródeł na żywo (można przeskakiwać na położenia w
242 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
243 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
250 # package the grep result for mplayer, the result formatted as ./mplayer/configure
251 cat <<EOF > ffmpeg-avconfig
253 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
254 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
255 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
256 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
257 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
258 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
259 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
261 cat <<'EOF' >> ffmpeg-avconfig
265 echo $_libavdecoders_all
268 echo $_libavencoders_all
271 echo $_libavparsers_all
277 echo $_libavdemuxers_all
280 echo $_libavmuxers_all
283 echo $_libavprotocols_all
305 # - it's not autoconf configure
306 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
308 --arch=%{_target_base_arch} \
309 --prefix=%{_prefix} \
310 --libdir=%{_libdir} \
311 --shlibdir=%{_libdir} \
312 --mandir=%{_mandir} \
314 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
315 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
317 --disable-optimizations \
318 --disable-stripping \
323 %{?with_frei0r:--enable-frei0r} \
324 %{?with_aacplus:--enable-libaacplus} \
331 --enable-libmodplug \
332 --enable-libmp3lame \
334 --enable-libopencore-amrnb \
335 --enable-libopencore-amrwb \
336 %{?with_opencv:--enable-libopencv} \
337 --enable-libopenjpeg \
338 %{?with_pulseaudio:--enable-libpulse} \
340 --enable-libschroedinger \
344 --enable-libvo-aacenc \
345 --enable-libvo-amrwbenc \
347 %{?with_vpx:--enable-libvpx} \
348 %{?with_x264:--enable-libx264} \
351 %{?with_openal:--enable-openal} \
358 %ifnarch %{ix86} %{x8664}
368 --enable-runtime-cpudetect
370 # force oldscaler build
371 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
376 # CC_O to add -c to commandline. makefile should be patched
377 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
380 rm -rf $RPM_BUILD_ROOT
381 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
382 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
383 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
386 DESTDIR=$RPM_BUILD_ROOT \
389 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
390 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
391 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
392 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
393 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
394 for a in libavutil/*/bswap.h; do
395 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
397 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
398 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
399 # for lim-omx ffmpeg components
400 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
402 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
403 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
404 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
405 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
406 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
408 # install as ffmpeg-avconfig to avoid with possible programs looking for
409 # ffmpeg-config and expecting --libs output from it which is not implemented
410 # simple to do (by querying pkgconfig), but why?
411 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
414 rm -rf $RPM_BUILD_ROOT
416 %post libs -p /sbin/ldconfig
417 %postun libs -p /sbin/ldconfig
420 %groupadd -g 167 ffserver
421 %useradd -g ffserver -u 167 ffserver
424 /sbin/chkconfig --add ffserver
425 %service ffserver restart
428 if [ "$1" = 0 ]; then
429 %service ffserver stop
430 /sbin/chkconfig --del ffserver
434 if [ "$1" = 0 ]; then
436 %groupremove ffserver
440 %defattr(644,root,root,755)
441 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
442 %attr(755,root,root) %{_bindir}/avconv
443 %attr(755,root,root) %{_bindir}/ffmpeg
444 %attr(755,root,root) %{_bindir}/ffprobe
445 %attr(755,root,root) %{_bindir}/qt-faststart
446 %dir %{_datadir}/ffmpeg
447 %{_datadir}/ffmpeg/*.ffpreset
448 %{?with_doc:%{_mandir}/man1/avconv.1*}
449 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
450 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
453 %defattr(644,root,root,755)
454 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
455 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
456 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
457 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
458 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
459 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
460 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
461 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
462 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
463 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
464 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
465 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
466 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
467 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
468 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
469 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
472 %defattr(644,root,root,755)
473 %doc doc/optimization.txt
474 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
475 %attr(755,root,root) %{_libdir}/libavcodec.so
476 %attr(755,root,root) %{_libdir}/libavdevice.so
477 %attr(755,root,root) %{_libdir}/libavfilter.so
478 %attr(755,root,root) %{_libdir}/libavformat.so
479 %attr(755,root,root) %{_libdir}/libavutil.so
480 %attr(755,root,root) %{_libdir}/libpostproc.so
481 %attr(755,root,root) %{_libdir}/libswresample.so
482 %attr(755,root,root) %{_libdir}/libswscale.so
483 %{_includedir}/ffmpeg
484 %{_includedir}/libavcodec
485 %{_includedir}/libavdevice
486 %{_includedir}/libavfilter
487 %{_includedir}/libavformat
488 %{_includedir}/libavutil
489 %{_includedir}/libpostproc
490 %{_includedir}/libswresample
491 %{_includedir}/libswscale
492 %{_pkgconfigdir}/libavcodec.pc
493 %{_pkgconfigdir}/libavdevice.pc
494 %{_pkgconfigdir}/libavfilter.pc
495 %{_pkgconfigdir}/libavformat.pc
496 %{_pkgconfigdir}/libavutil.pc
497 %{_pkgconfigdir}/libpostproc.pc
498 %{_pkgconfigdir}/libswresample.pc
499 %{_pkgconfigdir}/libswscale.pc
502 %defattr(644,root,root,755)
503 %{_libdir}/libavcodec.a
504 %{_libdir}/libavdevice.a
505 %{_libdir}/libavfilter.a
506 %{_libdir}/libavformat.a
507 %{_libdir}/libavutil.a
508 %{_libdir}/libpostproc.a
509 %{_libdir}/libswresample.a
510 %{_libdir}/libswscale.a
513 %defattr(644,root,root,755)
514 %attr(755,root,root) %{_bindir}/ffplay
515 %{?with_doc:%{_mandir}/man1/ffplay.1*}
518 %defattr(644,root,root,755)
519 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
520 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
521 %attr(755,root,root) %{_sbindir}/ffserver
522 %attr(754,root,root) /etc/rc.d/init.d/ffserver
523 %{?with_doc:%{_mandir}/man1/ffserver.1*}
524 %dir %attr(770,root,ffserver) /var/cache/ffserver
525 %dir %attr(770,root,ffserver) /var/log/ffserver