2 # - is bug803 patch still needed? the code changed somehow
5 %bcond_with nonfree # non free options of package (currently: faac)
6 %bcond_without autoreqdep # don't care about package name deps generated by rpm
7 %bcond_without va # VAAPI (Video Acceleration API)
8 %bcond_without vpx # VP8, a high-quality video codec
9 %bcond_without doc # don't build docs
11 Summary: FFmpeg - a very fast video and audio converter
12 Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo
16 # LGPL or GPL, chosen at configure time (GPL version is more featured)
17 # (postprocessing, some filters, x264, xavs, xvid, x11grab)
18 # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc)
19 License: GPL v3+ with LGPL v3+ parts
20 Group: Applications/Multimedia
21 Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2
22 # Source0-md5: 7e9b8c8a6952de0c477027e48249f3ed
23 Source1: ffserver.init
24 Source2: ffserver.sysconfig
25 Source3: ffserver.conf
26 Patch0: %{name}-bug-803.patch
27 Patch1: %{name}-gsm.patch
28 Patch2: %{name}-AV_PICTURE_TYPE_NONE.patch
29 URL: http://www.ffmpeg.org/
30 BuildRequires: SDL-devel
31 BuildRequires: alsa-lib-devel
32 BuildRequires: bzip2-devel
33 BuildRequires: celt-devel
34 BuildRequires: dirac-devel >= 1.0.0
35 %{?with_nonfree:BuildRequires: faac-devel}
36 BuildRequires: freetype-devel
37 BuildRequires: frei0r-devel
39 # require version with altivec support fixed
40 BuildRequires: gcc >= 5:3.3.2-3
42 BuildRequires: jack-audio-connection-kit-devel
43 BuildRequires: lame-libs-devel >= 3.98.3
44 BuildRequires: libdc1394-devel
45 BuildRequires: libgsm-devel
46 BuildRequires: libnut-devel
47 BuildRequires: libraw1394-devel
48 BuildRequires: librtmp-devel
49 BuildRequires: libtheora-devel >= 1.0-0.beta3
50 BuildRequires: libtool >= 2:1.4d-3
51 %{?with_va:BuildRequires: libva-devel >= 1.0.3}
52 BuildRequires: libvdpau-devel
53 BuildRequires: libvorbis-devel
54 %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6}
56 BuildRequires: libx264-devel >= 0.1.3-1.20110625_2245
57 BuildRequires: opencore-amr-devel
58 BuildRequires: openjpeg-devel >= 1.3-2
59 BuildRequires: speex-devel >= 1:1.2-rc1
65 BuildRequires: perl-Encode
66 BuildRequires: perl-tools-pod
67 BuildRequires: pkgconfig
68 BuildRequires: rpmbuild(macros) >= 1.470
69 BuildRequires: schroedinger-devel
70 %{?with_doc:BuildRequires: tetex}
71 %{?with_doc:BuildRequires: texi2html}
72 %{?with_doc:BuildRequires: texinfo}
73 BuildRequires: vo-aacenc-devel
74 BuildRequires: vo-amrwbenc-devel
75 BuildRequires: xavs-devel
76 BuildRequires: xorg-lib-libXext-devel
77 BuildRequires: xorg-lib-libXfixes-devel
78 BuildRequires: xvid-devel >= 1:1.1.0
79 BuildRequires: zlib-devel
80 %{?with_autoreqdep:BuildConflicts: libpostproc}
81 Requires: %{name}-libs = %{version}-%{release}
82 Requires: xvid >= 1:1.1.0
83 Obsoletes: libpostproc
84 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
86 %define _noautoreqdep libGL.so.1 libGLU.so.1
88 %define specflags -fno-strict-aliasing
90 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
91 %define specflags_ia32 -fomit-frame-pointer
92 # -mmmx is needed to enable <mmintrin.h> code.
93 %define specflags_i586 -mmmx
94 %define specflags_i686 -mmmx
95 %define specflags_ppc -fPIC
98 FFmpeg is a complete solution to record, convert and stream audio and
99 video. It is a command line tool to convert one video file format to
100 another. It also supports grabbing and encoding in real time from a TV
103 %description -l pl.UTF-8
104 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji
105 strumieni dźwięku i obrazu. Jest to działające z linii poleceń
106 narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje
107 także przechwytywanie i kodowanie w czasie rzeczywistym z karty
111 Summary: ffmpeg libraries
112 Summary(pl.UTF-8): Biblioteki ffmpeg
116 This package contains the ffmpeg shared libraries:
117 - the codec library (libavcodec). It supports most existing encoding
118 formats (MPEG, DivX, MPEG4, AC3, DV...),
119 - demuxer library (libavformat). It supports most existing file
120 formats (AVI, MPEG, OGG, Matroska, ASF...),
121 - video postprocessing library (libpostproc).
123 %description libs -l pl.UTF-8
124 Ten pakiet zawiera biblioteki współdzielone ffmpeg:
125 - bibliotekę kodeków (libavcodec); obsługuje większość istniejących
126 formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...),
127 - bibliotekę demuksera (libavformat); obsługuje większość istniejących
128 formatów plików (AVI, MPEG, OGG, Matroska, ASF...),
129 - bibliotekę postprocessingu (libpostproc).
132 Summary: ffmpeg header files
133 Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg
134 Group: Development/Libraries
135 Requires: %{name}-libs = %{version}-%{release}
136 # Libs.private from *.pc (unreasonably they are all the same)
138 Requires: alsa-lib-devel
139 Requires: bzip2-devel
141 Requires: dirac-devel >= 1.0.0
142 %{?with_nonfree:Requires: faac-devel}
143 Requires: jack-audio-connection-kit-devel
144 Requires: lame-libs-devel >= 3.98.3
145 Requires: libdc1394-devel
146 Requires: libgsm-devel
147 Requires: libnut-devel
148 Requires: libraw1394-devel
149 Requires: librtmp-devel
150 Requires: libtheora-devel >= 1.0-0.beta3
151 %{?with_va:Requires: libva-devel >= 1.0.3}
152 Requires: libvorbis-devel
153 %{?with_vpx:Requires: libvpx-devel >= 0.9.6}
154 Requires: libx264-devel >= 0.1.3-1.20110625_2245
155 Requires: opencore-amr-devel
156 Requires: openjpeg-devel >= 1.3-2
157 Requires: schroedinger-devel
158 Requires: speex-devel >= 1:1.2-rc1
159 Requires: vo-aacenc-devel
160 Requires: vo-amrwbenc-devel
162 Requires: xorg-lib-libXext-devel
163 Requires: xorg-lib-libXfixes-devel
164 Requires: xvid-devel >= 1:1.1.0
166 Obsoletes: libpostproc-devel
171 %description devel -l pl.UTF-8
172 Pliki nagłówkowe ffmpeg.
175 Summary: ffmpeg static libraries
176 Summary(pl.UTF-8): Statyczne biblioteki ffmpeg
177 Group: Development/Libraries
178 Requires: %{name}-devel = %{version}-%{release}
181 ffmpeg static libraries (libavcodec and libavformat).
183 %description static -l pl.UTF-8
184 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
187 Summary: FFplay - SDL-based media player
188 Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL
189 Group: Applications/Multimedia
190 Requires: %{name}-libs = %{version}-%{release}
193 FFplay is a very simple and portable media player using the FFmpeg
194 libraries and the SDL library. It is mostly used as a test bench for
195 the various APIs of FFmpeg.
197 %description ffplay -l pl.UTF-8
198 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
199 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
200 testowania różnych API FFmpeg.
203 Summary: FFserver video server
204 Summary(pl.UTF-8): FFserver - serwer strumieni obrazu
206 Requires(post,preun): /sbin/chkconfig
207 Requires: %{name}-libs = %{version}-%{release}
208 Requires: rc-scripts >= 0.4.0.10
210 %description ffserver
211 FFserver is a streaming server for both audio and video. It supports
212 several live feeds, streaming from files and time shifting on live
213 feeds (you can seek to positions in the past on each live feed,
214 provided you specify a big enough feed storage in ffserver.conf).
216 %description ffserver -l pl.UTF-8
217 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
218 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
219 czasie dla źródeł na żywo (można przeskakiwać na położenia w
220 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
221 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
229 # package the grep result for mplayer, the result formatted as ./mplayer/configure
230 cat <<EOF > ffmpeg-avconfig
232 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
233 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
234 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
235 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
236 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
237 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
238 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
240 cat <<'EOF' >> ffmpeg-avconfig
244 echo $_libavdecoders_all
247 echo $_libavencoders_all
250 echo $_libavparsers_all
256 echo $_libavdemuxers_all
259 echo $_libavmuxers_all
262 echo $_libavprotocols_all
284 # - it's not autoconf configure
285 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
287 --arch=%{_target_base_arch} \
288 --prefix=%{_prefix} \
289 --libdir=%{_libdir} \
290 --shlibdir=%{_libdir} \
291 --mandir=%{_mandir} \
293 --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags}" \
294 --extra-ldflags="%{rpmcflags} %{rpmldflags}" \
296 --disable-optimizations \
297 --disable-stripping \
306 --enable-libmp3lame \
308 --enable-libopencore-amrnb \
309 --enable-libopencore-amrwb \
310 --enable-libopenjpeg \
312 --enable-libschroedinger \
315 --enable-libvo-aacenc \
316 --enable-libvo-amrwbenc \
318 %{?with_vpx:--enable-libvpx} \
328 %ifnarch %{ix86} %{x8664}
338 --enable-runtime-cpudetect
340 # --enable-libopencv would cause dependency loop
342 # force oldscaler build
343 %{__sed} -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
348 # CC_O to add -c to commandline. makefile should be patched
349 %{__make} tools/qt-faststart V=1 CC_O='-c -o $@'
352 rm -rf $RPM_BUILD_ROOT
353 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
354 $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
355 $RPM_BUILD_ROOT/var/{cache,log}/ffserver
358 DESTDIR=$RPM_BUILD_ROOT \
361 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
362 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
363 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
364 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
365 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
366 for a in libavutil/*/bswap.h; do
367 install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
369 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
370 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
372 install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
373 cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
374 cp -a %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
375 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
376 install -p tools/qt-faststart $RPM_BUILD_ROOT%{_bindir}
378 # install as ffmpeg-avconfig to avoid with possible programs looking for
379 # ffmpeg-config and expecting --libs output from it which is not implemented
380 # simple to do (by querying pkgconfig), but why?
381 install -p ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
384 rm -rf $RPM_BUILD_ROOT
386 %post libs -p /sbin/ldconfig
387 %postun libs -p /sbin/ldconfig
390 %groupadd -g 167 ffserver
391 %useradd -g ffserver -u 167 ffserver
394 /sbin/chkconfig --add ffserver
395 %service ffserver restart
398 if [ "$1" = 0 ]; then
399 %service ffserver stop
400 /sbin/chkconfig --del ffserver
404 if [ "$1" = 0 ]; then
406 %groupremove ffserver
410 %defattr(644,root,root,755)
411 %doc CREDITS LICENSE MAINTAINERS README doc/{APIchanges,RELEASE_NOTES,TODO} %{?with_doc:doc/*.html}
412 %attr(755,root,root) %{_bindir}/ffmpeg
413 %attr(755,root,root) %{_bindir}/ffprobe
414 %attr(755,root,root) %{_bindir}/qt-faststart
415 %dir %{_datadir}/ffmpeg
416 %{_datadir}/ffmpeg/*.ffpreset
417 %{?with_doc:%{_mandir}/man1/ffmpeg.1*}
418 %{?with_doc:%{_mandir}/man1/ffprobe.1*}
421 %defattr(644,root,root,755)
422 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
423 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.53
424 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
425 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.53
426 %attr(755,root,root) %{_libdir}/libavfilter.so.*.*.*
427 %attr(755,root,root) %ghost %{_libdir}/libavfilter.so.2
428 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
429 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.53
430 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
431 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.51
432 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
433 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.51
434 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
435 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.2
438 %defattr(644,root,root,755)
439 %doc doc/optimization.txt
440 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
441 %attr(755,root,root) %{_libdir}/libavcodec.so
442 %attr(755,root,root) %{_libdir}/libavdevice.so
443 %attr(755,root,root) %{_libdir}/libavfilter.so
444 %attr(755,root,root) %{_libdir}/libavformat.so
445 %attr(755,root,root) %{_libdir}/libavutil.so
446 %attr(755,root,root) %{_libdir}/libpostproc.so
447 %attr(755,root,root) %{_libdir}/libswscale.so
448 %{_includedir}/ffmpeg
449 %{_includedir}/libavcodec
450 %{_includedir}/libavdevice
451 %{_includedir}/libavfilter
452 %{_includedir}/libavformat
453 %{_includedir}/libavutil
454 %{_includedir}/libpostproc
455 %{_includedir}/libswscale
456 %{_pkgconfigdir}/libavcodec.pc
457 %{_pkgconfigdir}/libavdevice.pc
458 %{_pkgconfigdir}/libavfilter.pc
459 %{_pkgconfigdir}/libavformat.pc
460 %{_pkgconfigdir}/libavutil.pc
461 %{_pkgconfigdir}/libpostproc.pc
462 %{_pkgconfigdir}/libswscale.pc
465 %defattr(644,root,root,755)
466 %{_libdir}/libavcodec.a
467 %{_libdir}/libavdevice.a
468 %{_libdir}/libavfilter.a
469 %{_libdir}/libavformat.a
470 %{_libdir}/libavutil.a
471 %{_libdir}/libpostproc.a
472 %{_libdir}/libswscale.a
475 %defattr(644,root,root,755)
476 %attr(755,root,root) %{_bindir}/ffplay
477 %{?with_doc:%{_mandir}/man1/ffplay.1*}
480 %defattr(644,root,root,755)
481 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
482 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
483 %attr(755,root,root) %{_sbindir}/ffserver
484 %attr(754,root,root) /etc/rc.d/init.d/ffserver
485 %{?with_doc:%{_mandir}/man1/ffserver.1*}
486 %dir %attr(770,root,ffserver) /var/cache/ffserver
487 %dir %attr(770,root,ffserver) /var/log/ffserver