2 # How to deal with ffmpeg/opencv checken-egg problem:
3 # 1. make-request -r --without opencv ffmpeg.spec
4 # 2. make-request -r opencv.spec
5 # 3. bump release of ffmpeg.spec
6 # 4. make-request -r ffmpeg.spec
9 %bcond_with nonfree # non free options of package (currently: faac)
10 %bcond_with aacplus # AAC+ encoding via libaacplus (requires nonfree)
11 %bcond_with fdk_aac # AAC encoding via libfdk_aac (requires nonfree)
12 %bcond_without caca # textual display using libcaca
13 %bcond_without flite # flite voice synthesis support
14 %bcond_without frei0r # frei0r video filtering
15 %bcond_without ilbc # iLBC de/encoding via WebRTC libilbc
16 %bcond_without openal # OpenAL 1.1 capture support
17 %bcond_without opencv # OpenCV video filtering
18 %bcond_without pulseaudio # PulseAudio input support
19 %bcond_without x264 # x264 encoder
20 %bcond_without utvideo # 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: 3ed526cea20c1bffb5a37f7730f710bd
37 Source1: ffserver.init
38 Source2: ffserver.sysconfig
39 Source3: ffserver.conf
40 Patch0: %{name}-gsm.patch
41 Patch1: %{name}-opencv24.patch
42 Patch2: %{name}-openjpeg.patch
43 URL: http://www.ffmpeg.org/
44 %{?with_openal:BuildRequires: OpenAL-devel}
45 BuildRequires: SDL-devel >= 1.2.1
46 BuildRequires: alsa-lib-devel
47 BuildRequires: bzip2-devel
48 BuildRequires: celt-devel >= 0.11.0
49 %{?with_nonfree:BuildRequires: faac-devel}
50 %{?with_fdk_aac:BuildRequires: fdk-aac-devel}
51 %{?with_flite:BuildRequires: flite-devel >= 1.4}
52 BuildRequires: fontconfig-devel
53 BuildRequires: freetype-devel
54 %{?with_frei0r:BuildRequires: frei0r-devel}
56 # require version with altivec support fixed
57 BuildRequires: gcc >= 5:3.3.2-3
59 BuildRequires: gnutls-devel
60 BuildRequires: jack-audio-connection-kit-devel
61 BuildRequires: lame-libs-devel >= 3.98.3
62 %{?with_aacplus:BuildRequires: libaacplus-devel >= 2.0.0}
63 BuildRequires: libass-devel
64 BuildRequires: libavc1394-devel
65 BuildRequires: libbluray-devel
66 %{?with_caca:BuildRequires: libcaca-devel}
67 BuildRequires: libcdio-devel
68 BuildRequires: libdc1394-devel >= 2
69 BuildRequires: libgsm-devel
70 BuildRequires: libiec61883-devel
71 BuildRequires: libmodplug-devel
72 BuildRequires: libnut-devel
73 BuildRequires: libraw1394-devel >= 2
74 BuildRequires: librtmp-devel
75 BuildRequires: libtheora-devel >= 1.0-0.beta3
76 BuildRequires: libtool >= 2:1.4d-3
77 BuildRequires: libv4l-devel
78 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
79 BuildRequires: libvdpau-devel >= 0.2
80 BuildRequires: libvorbis-devel
81 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
83 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245}
89 BuildRequires: opencore-amr-devel
90 %{?with_opencv:BuildRequires: opencv-devel}
91 BuildRequires: openjpeg-devel >= 1.5
92 BuildRequires: opus-devel
93 BuildRequires: perl-Encode
94 BuildRequires: perl-tools-pod
95 BuildRequires: pkgconfig
96 %{?with_pulseaudio:BuildRequires: pulseaudio-devel}
97 BuildRequires: rpmbuild(macros) >= 1.470
98 BuildRequires: schroedinger-devel
99 BuildRequires: speex-devel >= 1:1.2-rc1
100 %{?with_doc:BuildRequires: tetex}
101 %{?with_doc:BuildRequires: texi2html}
102 %{?with_doc:BuildRequires: texinfo}
103 BuildRequires: twolame-devel
104 %{?with_utvideo:BuildRequires: utvideo-devel}
105 BuildRequires: vo-aacenc-devel
106 BuildRequires: vo-amrwbenc-devel
107 %{?with_ilbc:BuildRequires: webrtc-libilbc-devel}
108 BuildRequires: xavs-devel
109 BuildRequires: xorg-lib-libXext-devel
110 BuildRequires: xorg-lib-libXfixes-devel
111 BuildRequires: xvid-devel >= 1:1.1.0
113 BuildRequires: zlib-devel
114 %{?with_autoreqdep:BuildConflicts: libpostproc}
115 # overflows maximum hash table size
116 BuildConflicts: pdksh < 5.2.14-57
117 Requires: %{name}-libs = %{version}-%{release}
118 %{?with_ilbc:Requires: webrtc-libilbc}
119 Requires: xvid >= 1:1.1.0
120 Obsoletes: libpostproc
121 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
123 %define _noautoreqdep libGL.so.1 libGLU.so.1
125 %define specflags -fno-strict-aliasing
127 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
128 %define specflags_ia32 -fomit-frame-pointer
129 # -mmmx is needed to enable <mmintrin.h> code.
130 %define specflags_i586 -mmmx
131 %define specflags_i686 -mmmx
132 %define specflags_ppc -fPIC
135 FFmpeg is a complete solution to record, convert and stream audio and
136 video. It is a command line tool to convert one video file format to
137 another. It also supports grabbing and encoding in real time from a TV
140 %description -l pl.UTF-8
141 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
142 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
143 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
144 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
148 Summary: ffmpeg libraries
149 Summary(pl.UTF-8): Biblioteki ffmpeg
153 This package contains the ffmpeg shared libraries:
154 - the codec library (libavcodec). It supports most existing encoding
155 formats (MPEG, DivX, MPEG4, AC3, DV...),
156 - demuxer library (libavformat). It supports most existing file
157 formats (AVI, MPEG, OGG, Matroska, ASF...),
158 - video postprocessing library (libpostproc).
160 %description libs -l pl.UTF-8
161 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
162 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
163 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
164 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
165 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
166 - bibliotekę postprocessingu (libpostproc).
169 Summary: ffmpeg header files
170 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
171 Group: Development/Libraries
172 Requires: %{name}-libs = %{version}-%{release}
173 # Libs.private from *.pc (unreasonably they are all the same)
174 Requires: SDL-devel >= 1.2.1
175 Requires: alsa-lib-devel
176 Requires: bzip2-devel
177 Requires: celt-devel >= 0.11.0
178 %{?with_nonfree:Requires: faac-devel}
179 %{?with_fdk_aac:Requires: fdk-aac-devel}
180 Requires: fontconfig-devel
181 Requires: freetype-devel
182 Requires: jack-audio-connection-kit-devel
183 %{?with_flite:Requires: flite-devel >= 1.4}
184 Requires: lame-libs-devel >= 3.98.3
185 %{?with_aacplus:Requires: libaacplus-devel >= 2.0.0}
186 Requires: libass-devel
187 Requires: libavc1394-devel
188 Requires: libbluray-devel
189 Requires: libcdio-devel
190 Requires: libdc1394-devel >= 2
191 Requires: libgsm-devel
192 Requires: libiec61883-devel
193 Requires: libmodplug-devel
194 Requires: libnut-devel
195 Requires: libraw1394-devel >= 2
196 Requires: librtmp-devel
197 Requires: libtheora-devel >= 1.0-0.beta3
198 %{?with_va:Requires: libva-devel >= 1.0.3}
199 Requires: libvorbis-devel
200 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
201 %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245}
202 Requires: opencore-amr-devel
203 %{?with_opencv:Requires: opencv-devel}
204 Requires: openjpeg-devel >= 1.5
205 Requires: schroedinger-devel
206 Requires: speex-devel >= 1:1.2-rc1
207 Requires: twolame-devel
208 Requires: vo-aacenc-devel
209 Requires: vo-amrwbenc-devel
210 %{?with_ilbc:Requires: webrtc-libilbc-devel}
212 Requires: xorg-lib-libXext-devel
213 Requires: xorg-lib-libXfixes-devel
214 Requires: xvid-devel >= 1:1.1.0
216 Obsoletes: libpostproc-devel
221 %description devel -l pl.UTF-8
222 Pliki nagłówkowe ffmpeg.
225 Summary: ffmpeg static libraries
226 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
227 Group: Development/Libraries
228 Requires: %{name}-devel = %{version}-%{release}
231 ffmpeg static libraries (libavcodec and libavformat).
233 %description static -l pl.UTF-8
234 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
237 Summary: FFplay - SDL-based media player
238 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
239 Group: Applications/Multimedia
240 Requires: %{name}-libs = %{version}-%{release}
243 FFplay is a very simple and portable media player using the FFmpeg
244 libraries and the SDL library. It is mostly used as a test bench for
245 the various APIs of FFmpeg.
247 %description ffplay -l pl.UTF-8
248 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
249 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
250 testowania różnych API FFmpeg.
253 Summary: FFserver video server
254 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
256 Requires(post,preun): /sbin/chkconfig
257 Requires: %{name}-libs = %{version}-%{release}
258 Requires: rc-scripts >= 0.4.0.10
260 %description ffserver
261 FFserver is a streaming server for both audio and video. It supports
262 several live feeds, streaming from files and time shifting on live
263 feeds (you can seek to positions in the past on each live feed,
264 provided you specify a big enough feed storage in ffserver.conf).
266 %description ffserver -l pl.UTF-8
267 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
268 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
269 czasie dla źródeł na żywo (można przeskakiwać na położenia w
270 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
271 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
279 # package the grep result for mplayer, the result formatted as ./mplayer/configure
280 cat <<EOF > ffmpeg-avconfig
282 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
283 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
284 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
285 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
286 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
287 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
288 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
290 cat <<'EOF' >> ffmpeg-avconfig
294 echo $_libavdecoders_all
297 echo $_libavencoders_all
300 echo $_libavparsers_all
306 echo $_libavdemuxers_all
309 echo $_libavmuxers_all
312 echo $_libavprotocols_all
334 # - it's not autoconf configure
335 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
337 --arch=%{_target_base_arch} \
338 --prefix=%{_prefix} \
339 --libdir=%{_libdir} \
340 --shlibdir=%{_libdir} \
341 --mandir=%{_mandir} \
342 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
343 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
346 --disable-optimizations \
347 --disable-stripping \
349 --enable-avresample \
353 --enable-fontconfig \
354 %{?with_frei0r:--enable-frei0r} \
355 %{?with_aacplus:--enable-libaacplus} \
358 %{?with_libcaca:--enable-libcaca} \
362 %{?with_fdk_aac:--enable-libfdk-aac} \
363 %{?with_flite:--enable-libflite} \
364 --enable-libfreetype \
366 --enable-libiec61883 \
367 %{?with_ilbc:--enable-libilbc} \
368 --enable-libmodplug \
369 --enable-libmp3lame \
371 --enable-libopencore-amrnb \
372 --enable-libopencore-amrwb \
373 %{?with_opencv:--enable-libopencv} \
374 --enable-libopenjpeg \
376 %{?with_pulseaudio:--enable-libpulse} \
378 --enable-libschroedinger \
381 --enable-libtwolame \
382 %{?with_utvideo:--enable-libutvideo} \
384 --enable-libvo-aacenc \
385 --enable-libvo-amrwbenc \
387 %{?with_vpx:--enable-libvpx} \
388 %{?with_x264:--enable-libx264} \
391 %{?with_openal:--enable-openal} \
396 %{?with_va:--enable-vaapi} \
399 %ifnarch %{ix86} %{x8664}
409 --enable-runtime-cpudetect
411 # force oldscaler build
412 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
417 # CC_O to add -c to commandline. makefile should be patched
418 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
421 rm -rf $RPM_BUILD_ROOT
422 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
423 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
424 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
427 DESTDIR=$RPM_BUILD_ROOT \
430 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
431 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
432 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
433 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
434 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
435 for a in libavutil/*/bswap.h; do
436 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
438 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
439 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
440 # for lim-omx ffmpeg components
441 cp -a libavcodec/audioconvert.h $RPM_BUILD_ROOT%{_includedir}/libavcodec
443 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
444 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
445 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
446 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
447 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
449 # install as ffmpeg-avconfig to avoid with possible programs looking for
450 # ffmpeg-config and expecting --libs output from it which is not implemented
451 # simple to do (by querying pkgconfig), but why?
452 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
455 rm -rf $RPM_BUILD_ROOT
457 %post libs -p /sbin/ldconfig
458 %postun libs -p /sbin/ldconfig
461 %groupadd -g 167 ffserver
462 %useradd -g ffserver -u 167 ffserver
465 /sbin/chkconfig --add ffserver
466 %service ffserver restart
469 if [ "$1" = 0 ]; then
470 %service ffserver stop
471 /sbin/chkconfig --del ffserver
475 if [ "$1" = 0 ]; then
477 %groupremove ffserver
481 %defattr(644,root,root,755)
482 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES} %{?with_doc:doc/*.html}
483 %attr(755,root,root) %{_bindir}/ffmpeg
484 %attr(755,root,root) %{_bindir}/ffprobe
485 %attr(755,root,root) %{_bindir}/qt-faststart
486 %dir %{_datadir}/ffmpeg
487 %{_datadir}/ffmpeg/*.ffpreset
488 %{_datadir}/ffmpeg/ffprobe.xsd
489 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
490 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
493 %defattr(644,root,root,755)
494 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
495 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.54
496 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
497 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.54
498 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
499 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.3
500 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
501 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.54
502 %attr(755,root,root) %{_libdir}/libavresample.so.*.*.*
503 %attr(755,root,root) %ghost %{_libdir}/libavresample.so.0
504 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
505 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
506 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
507 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.52
508 %attr(755,root,root) %{_libdir}/libswresample.so.*.*.*
509 %attr(755,root,root) %ghost %{_libdir}/libswresample.so.0
510 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
511 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
514 %defattr(644,root,root,755)
515 %doc doc/optimization.txt
516 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
517 %attr(755,root,root) %{_libdir}/libavcodec.so
518 %attr(755,root,root) %{_libdir}/libavdevice.so
519 %attr(755,root,root) %{_libdir}/libavfilter.so
520 %attr(755,root,root) %{_libdir}/libavformat.so
521 %attr(755,root,root) %{_libdir}/libavresample.so
522 %attr(755,root,root) %{_libdir}/libavutil.so
523 %attr(755,root,root) %{_libdir}/libpostproc.so
524 %attr(755,root,root) %{_libdir}/libswresample.so
525 %attr(755,root,root) %{_libdir}/libswscale.so
526 %{_includedir}/ffmpeg
527 %{_includedir}/libavcodec
528 %{_includedir}/libavdevice
529 %{_includedir}/libavfilter
530 %{_includedir}/libavformat
531 %{_includedir}/libavresample
532 %{_includedir}/libavutil
533 %{_includedir}/libpostproc
534 %{_includedir}/libswresample
535 %{_includedir}/libswscale
536 %{_pkgconfigdir}/libavcodec.pc
537 %{_pkgconfigdir}/libavdevice.pc
538 %{_pkgconfigdir}/libavfilter.pc
539 %{_pkgconfigdir}/libavformat.pc
540 %{_pkgconfigdir}/libavresample.pc
541 %{_pkgconfigdir}/libavutil.pc
542 %{_pkgconfigdir}/libpostproc.pc
543 %{_pkgconfigdir}/libswresample.pc
544 %{_pkgconfigdir}/libswscale.pc
547 %defattr(644,root,root,755)
548 %{_libdir}/libavcodec.a
549 %{_libdir}/libavdevice.a
550 %{_libdir}/libavfilter.a
551 %{_libdir}/libavformat.a
552 %{_libdir}/libavresample.a
553 %{_libdir}/libavutil.a
554 %{_libdir}/libpostproc.a
555 %{_libdir}/libswresample.a
556 %{_libdir}/libswscale.a
559 %defattr(644,root,root,755)
560 %attr(755,root,root) %{_bindir}/ffplay
561 %{?with_doc:%{_mandir}/man1/ffplay.1*}
564 %defattr(644,root,root,755)
565 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
566 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
567 %attr(755,root,root) %{_sbindir}/ffserver
568 %attr(754,root,root) /etc/rc.d/init.d/ffserver
569 %{?with_doc:%{_mandir}/man1/ffserver.1*}
570 %dir %attr(770,root,ffserver) /var/cache/ffserver
571 %dir %attr(770,root,ffserver) /var/log/ffserver