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