]> git.pld-linux.org Git - packages/ffmpeg.git/blob - ffmpeg.spec
d27883f6bf088cd592832960e00c288085580a22
[packages/ffmpeg.git] / ffmpeg.spec
1 # TODO
2 # - libnut enabled   no (http://www.nut-container.org/)
3 #
4 # Conditional build:
5 %bcond_with     amr             # 3GPP Adaptive Multi Rate (AMR) codec support; makes package non-distributable
6 %bcond_without  autoreqdep      # don't care about package name deps generated by rpm
7 %bcond_without  imlib2          # don't build imlib2 vhook module
8 #
9 Summary:        Realtime audio/video encoder and streaming server
10 Summary(pl.UTF-8):      Koder audio/wideo czasu rzeczywistego oraz serwer strumieni
11 Name:           ffmpeg
12 Version:        0.5
13 Release:        1
14 # LGPL or GPL, chosen at configure time (GPL version is more featured)
15 # (postprocessing, ac3, xvid, x264, faad)
16 License:        GPL v2+ with LGPL v2.1+ parts
17 Group:          Applications/Multimedia
18 Source0:        http://ffmpeg.mplayerhq.hu/releases/%{name}-%{version}.tar.bz2
19 # Source0-md5:  be8503f15c3b81ba00eb8379ca8dcf33
20 Source1:        ffserver.init
21 Source2:        ffserver.sysconfig
22 Source3:        ffserver.conf
23 Patch0:         %{name}-x264.patch
24 URL:            http://ffmpeg.mplayerhq.hu/
25 BuildRequires:  SDL-devel
26 %if %{with amr}
27 BuildRequires:  amrnb-devel >= 6.1.0.4
28 BuildRequires:  amrwb-devel >= 7.0.0.1
29 %endif
30 BuildRequires:  dirac-devel >= 1.0.0
31 BuildRequires:  faac-devel
32 BuildRequires:  faad2-devel
33 BuildRequires:  freetype-devel
34 %ifarch ppc
35 # require version with altivec support fixed
36 BuildRequires:  gcc >= 5:3.3.2-3
37 %endif
38 %{?with_imlib2:BuildRequires:   imlib2-devel >= 1.3.0}
39 BuildRequires:  lame-libs-devel
40 BuildRequires:  libdc1394-devel
41 BuildRequires:  libgsm-devel
42 BuildRequires:  libraw1394-devel
43 BuildRequires:  libtheora-devel >= 1.0-0.beta3
44 BuildRequires:  libtool >= 2:1.4d-3
45 BuildRequires:  libvorbis-devel
46 BuildRequires:  libx264-devel >= 0.1.2-1.20081023
47 BuildRequires:  speex-devel
48 %ifarch %{ix86}
49 %ifnarch i386 i486
50 BuildRequires:  nasm
51 %endif
52 %endif
53 BuildRequires:  perl-tools-pod
54 BuildRequires:  pkgconfig
55 BuildRequires:  rpmbuild(macros) >= 1.470
56 BuildRequires:  schroedinger-devel
57 BuildRequires:  tetex
58 BuildRequires:  texinfo
59 %{?with_amr:BuildRequires:      unzip}
60 BuildRequires:  xvid-devel >= 1:1.1.0
61 BuildRequires:  zlib-devel
62 %{?with_autoreqdep:BuildConflicts:      libpostproc}
63 Requires:       %{name}-libs = %{version}-%{release}
64 Requires:       xvid >= 1:1.1.0
65 Obsoletes:      libpostproc
66 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
67
68 %define         _noautoreqdep   libGL.so.1 libGLU.so.1
69
70 %define         specflags       -fno-strict-aliasing
71
72 # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one)
73 %define         specflags_ia32  -fomit-frame-pointer
74 # -mmmx is needed to enable <mmintrin.h> code.
75 %define         specflags_i586  -mmmx
76 %define         specflags_i686  -mmmx
77
78 %description
79 ffmpeg is a hyper fast realtime audio/video encoder and streaming
80 server. It can grab from a standard Video4Linux video source and
81 convert it into several file formats based on DCT/motion compensation
82 encoding. Sound is compressed in MPEG audio layer 2 or using an AC3
83 compatible stream.
84
85 %description -l pl.UTF-8
86 ffmpeg jest bardzo szybkim koderem audio/wideo w czasie rzeczywistym
87 oraz serwerem strumieni multimedialnych. ffmpeg potrafi zrzucać dane
88 ze standardowego urządzenia Video4Linux i przekonwertować je w kilka
89 formatów plików bazujących na kodowaniu DCT/kompensacji ruchu. Dźwięk
90 jest kompresowany do strumienia MPEG audio layer 2 lub używając
91 strumienia kompatybilnego z AC3.
92
93 %package libs
94 Summary:        ffmpeg libraries
95 Summary(pl.UTF-8):      Biblioteki ffmpeg
96 Group:          Libraries
97
98 %description libs
99 This package contains ffmpeg shared libraries.
100
101 %description libs -l pl.UTF-8
102 Ten pakiet zawiera biblioteki współdzielone ffmpeg.
103
104 %package devel
105 Summary:        ffmpeg header files
106 Summary(pl.UTF-8):      Pliki nagłówkowe ffmpeg
107 Group:          Development/Libraries
108 Requires:       %{name}-libs = %{version}-%{release}
109 # for libavcodec:
110 %if %{with amr}
111 Requires:       amrnb-devel
112 Requires:       amrwb-devel >= 5.3.0
113 %endif
114 Requires:       dirac-devel
115 Requires:       faac-devel
116 Requires:       faad2-devel
117 Requires:       lame-libs-devel
118 Requires:       libgsm-devel
119 Requires:       libraw1394-devel
120 Requires:       libtheora-devel >= 1.0-0.alpha7
121 Requires:       libvorbis-devel
122 Requires:       libx264-devel >= 0.1.2-1.20060828_2245.1
123 Requires:       xvid-devel >= 1:1.1.0
124 Requires:       zlib-devel
125 Obsoletes:      libpostproc-devel
126
127 %description devel
128 ffmpeg header files.
129
130 %description devel -l pl.UTF-8
131 Pliki nagłówkowe ffmpeg.
132
133 %package static
134 Summary:        ffmpeg static libraries
135 Summary(pl.UTF-8):      Statyczne biblioteki ffmpeg
136 Group:          Development/Libraries
137 Requires:       %{name}-devel = %{version}-%{release}
138
139 %description static
140 ffmpeg static libraries (libavcodec and libavformat).
141
142 %description static -l pl.UTF-8
143 Statyczne biblioteki ffmpeg (libavcodec i libavformat).
144
145 %package ffplay
146 Summary:        FFplay - SDL-based media player
147 Summary(pl.UTF-8):      FFplay - odtwarzacz mediów oparty na SDL
148 Group:          Applications/Multimedia
149 Requires:       %{name}-libs = %{version}-%{release}
150
151 %description ffplay
152 FFplay is a very simple and portable media player using the FFmpeg
153 libraries and the SDL library. It is mostly used as a test bench for
154 the various APIs of FFmpeg.
155
156 %description ffplay -l pl.UTF-8
157 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający
158 bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do
159 testowania różnych API FFmpeg.
160
161 %package vhook-imlib2
162 Summary:        imlib2 based hook
163 Summary(pl.UTF-8):      Moduł przejściowy oparty o imlib2
164 Group:          Libraries
165 Requires:       %{name}-libs = %{version}-%{release}
166
167 %description vhook-imlib2
168 This module implements a text overlay for a video image. Currently it
169 supports a fixed overlay or reading the text from a file. The string
170 is passed through strftime so that it is easy to imprint the date and
171 time onto the image.
172
173 %description vhook-imlib2 -l pl.UTF-8
174 Ten moduł implementuje tekstową nakładkę dla obrazu. Aktualnie
175 obsługuje stałą nakładkę lub wczytywanie tekstu z pliku. Łańcuch jest
176 przepuszczany przez strftime, więc łatwo umieścić datę i czas na
177 obrazie.
178
179 %package ffserver
180 Summary:        FFserver video server
181 Summary(pl.UTF-8):      FFserver - serwer strumieni obrazu
182 Group:          Daemons
183 Requires(post,preun):   /sbin/chkconfig
184 Requires:       %{name}-libs = %{version}-%{release}
185 Requires:       rc-scripts >= 0.4.0.10
186
187 %description ffserver
188 FFserver is a streaming server for both audio and video. It supports
189 several live feeds, streaming from files and time shifting on live
190 feeds (you can seek to positions in the past on each live feed,
191 provided you specify a big enough feed storage in ffserver.conf).
192
193 %description ffserver -l pl.UTF-8
194 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka
195 źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w
196 czasie dla źródeł na żywo (można przeskakiwać na położenia w
197 przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio
198 dużej przestrzeni na dane skonfigurowanej w ffserver.conf).
199
200 %prep
201 %setup -q
202 %patch0 -p1
203
204 # package the grep result for mplayer, the result formatted as ./mplayer/configure
205 cat <<EOF > ffmpeg-avconfig
206 #! /bin/sh
207 _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
208 _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
209 _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
210 _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`"
211 _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
212 _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
213 _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`"
214 EOF
215 cat <<'EOF' >> ffmpeg-avconfig
216
217 case "$1" in
218 --decoders)
219         echo $_libavdecoders_all
220         ;;
221 --encoders)
222         echo $_libavencoders_all
223         ;;
224 --parsers)
225         echo $_libavparsers_all
226         ;;
227 --bsfs)
228         echo $_libavbsfs_all
229         ;;
230 --demuxers)
231         echo $_libavdemuxers_all
232         ;;
233 --muxers)
234         echo $_libavmuxers_all
235         ;;
236 --protocols)
237         echo $_libavprotocols_all
238         ;;
239 *)
240         cat <<USAGE
241 Usage: $0 [OPTION]
242 Options:
243   --decoders
244   --encoders
245   --parsers
246   --bsfs
247   --demuxers
248   --muxers
249   --protocols
250 USAGE
251         exit 1;;
252 esac
253
254 exit 0
255 EOF
256
257 %build
258 # notes:
259 # - it's not autoconf configure
260 # - --disable-debug, --disable-optimizations, tune=generic causes not to override our optflags
261 ./configure \
262         --arch=%{_target_base_arch} \
263         --prefix=%{_prefix} \
264         --libdir=%{_libdir} \
265         --shlibdir=%{_libdir} \
266         --mandir=%{_mandir} \
267         --cc="%{__cc}" \
268         --extra-cflags="-D_GNU_SOURCE=1 %{rpmcppflags} %{rpmcflags} -I/usr/include/libavcodec -I/usr/include/libswscale" \
269         --extra-ldflags="%{rpmldflags}" \
270         --disable-debug \
271         --disable-optimizations \
272         --disable-stripping \
273         --enable-gpl \
274         --enable-libfaac \
275         --enable-libfaad \
276         --enable-libfaadbin \
277         --enable-libdc1394 \
278         --enable-libdirac \
279         --enable-libgsm \
280         --enable-libmp3lame \
281         --enable-libschroedinger \
282         --enable-libspeex \
283         --enable-libtheora \
284         --enable-libvorbis \
285         --enable-libx264 \
286         --enable-libxvid \
287         --enable-postproc \
288         --enable-pthreads \
289         --enable-shared \
290         --enable-swscale \
291 %ifnarch %{ix86} %{x8664}
292         --disable-mmx \
293 %endif
294 %ifarch i386 i486
295         --disable-mmx \
296 %endif
297 %if %{with amr}
298         --enable-nonfree \
299         --enable-libamr-nb \
300         --enable-libamr-wb
301 %endif
302
303 # force oldscaler build
304 sed -i -e 's|#define.*CONFIG_OLDSCALER.*0|#define CONFIG_OLDSCALER 1|g' config.h
305
306 %{__make}
307
308 %install
309 rm -rf $RPM_BUILD_ROOT
310 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_sbindir},/etc/{sysconfig,rc.d/init.d}} \
311         $RPM_BUILD_ROOT%{_includedir}/ffmpeg \
312         $RPM_BUILD_ROOT/var/{cache,log}/ffserver
313
314 %{__make} install \
315         DESTDIR=$RPM_BUILD_ROOT
316
317 cp -a config.h $RPM_BUILD_ROOT%{_includedir}/ffmpeg
318 cp -a libavutil/intreadwrite.h $RPM_BUILD_ROOT%{_includedir}/libavutil
319 cp -a libavutil/bswap.h $RPM_BUILD_ROOT%{_includedir}/libavutil
320 cp -a libavutil/common.h $RPM_BUILD_ROOT%{_includedir}/libavutil
321 cp -a libavutil/mem.h $RPM_BUILD_ROOT%{_includedir}/libavutil
322 for a in libavutil/*/bswap.h; do
323         install -D $a $RPM_BUILD_ROOT%{_includedir}/$a
324 done
325 cp -a libavformat/riff.h $RPM_BUILD_ROOT%{_includedir}/libavformat
326 cp -a libavformat/avio.h $RPM_BUILD_ROOT%{_includedir}/libavformat
327
328 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/ffserver
329 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/ffserver
330 install %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/ffserver.conf
331 mv -f $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/ffserver
332
333 # install as ffmpeg-avconfig to avoid with possible programs looking for
334 # ffmpeg-config and expecting --libs output from it which is not implemented
335 # simple to do (by querying pkgconfig), but why?
336 install ffmpeg-avconfig $RPM_BUILD_ROOT%{_bindir}/ffmpeg-avconfig
337
338 %clean
339 rm -rf $RPM_BUILD_ROOT
340
341 %post libs      -p /sbin/ldconfig
342 %postun libs    -p /sbin/ldconfig
343
344 %pre ffserver
345 %groupadd -g 167 ffserver
346 %useradd -g ffserver -u 167 ffserver
347
348 %post ffserver
349 /sbin/chkconfig --add ffserver
350 %service ffserver restart
351
352 %preun ffserver
353 if [ "$1" = 0 ]; then
354         %service ffserver stop
355         /sbin/chkconfig --del ffserver
356 fi
357
358 %postun ffserver
359 if [ "$1" = 0 ]; then
360         %userremove ffserver
361         %groupremove ffserver
362 fi
363
364 %files
365 %defattr(644,root,root,755)
366 %doc Changelog README doc/*.html doc/TODO
367 %attr(755,root,root) %{_bindir}/ffmpeg
368 %dir %{_datadir}/ffmpeg
369 %{_datadir}/ffmpeg/*.ffpreset
370 %{_mandir}/man1/ffmpeg.1*
371
372 %files libs
373 %defattr(644,root,root,755)
374 %attr(755,root,root) %{_libdir}/libavcodec.so.*.*.*
375 %attr(755,root,root) %{_libdir}/libavdevice.so.*.*.*
376 %attr(755,root,root) %{_libdir}/libavformat.so.*.*.*
377 %attr(755,root,root) %{_libdir}/libavutil.so.*.*.*
378 %attr(755,root,root) %{_libdir}/libpostproc.so.*.*.*
379 %attr(755,root,root) %{_libdir}/libswscale.so.*.*.*
380 %attr(755,root,root) %ghost %{_libdir}/libavcodec.so.[0-9][0-9]
381 %attr(755,root,root) %ghost %{_libdir}/libavdevice.so.[0-9][0-9]
382 %attr(755,root,root) %ghost %{_libdir}/libavformat.so.[0-9][0-9]
383 %attr(755,root,root) %ghost %{_libdir}/libavutil.so.[0-9][0-9]
384 %attr(755,root,root) %ghost %{_libdir}/libpostproc.so.[0-9][0-9]
385 %attr(755,root,root) %ghost %{_libdir}/libswscale.so.[0-9]
386 %dir %{_libdir}/vhook
387 %attr(755,root,root) %{_libdir}/vhook/drawtext.so
388 %attr(755,root,root) %{_libdir}/vhook/fish.so
389 %attr(755,root,root) %{_libdir}/vhook/null.so
390 %attr(755,root,root) %{_libdir}/vhook/ppm.so
391 %attr(755,root,root) %{_libdir}/vhook/watermark.so
392
393 %files devel
394 %defattr(644,root,root,755)
395 %doc doc/optimization.txt
396 %attr(755,root,root) %{_libdir}/libavcodec.so
397 %attr(755,root,root) %{_libdir}/libavdevice.so
398 %attr(755,root,root) %{_libdir}/libavformat.so
399 %attr(755,root,root) %{_libdir}/libavutil.so
400 %attr(755,root,root) %{_libdir}/libpostproc.so
401 %attr(755,root,root) %{_libdir}/libswscale.so
402 %attr(755,root,root) %{_bindir}/ffmpeg-avconfig
403 %{_includedir}/ffmpeg
404 %{_includedir}/libavcodec
405 %{_includedir}/libavdevice
406 %{_includedir}/libavformat
407 %{_includedir}/libavutil
408 %{_includedir}/libpostproc
409 %{_includedir}/libswscale
410 %{_pkgconfigdir}/*.pc
411
412 %files static
413 %defattr(644,root,root,755)
414 %{_libdir}/lib*.a
415
416 %files ffplay
417 %defattr(644,root,root,755)
418 %attr(755,root,root) %{_bindir}/ffplay
419 %{_mandir}/man1/ffplay.1*
420
421 %if %{with imlib2}
422 %files vhook-imlib2
423 %defattr(644,root,root,755)
424 %attr(755,root,root) %{_libdir}/vhook/imlib2.so
425 %endif
426
427 %files ffserver
428 %defattr(644,root,root,755)
429 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ffserver.conf
430 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ffserver
431 %attr(755,root,root) %{_sbindir}/ffserver
432 %attr(754,root,root) /etc/rc.d/init.d/ffserver
433 %{_mandir}/man1/ffserver.1*
434 %dir %attr(770,root,ffserver) /var/cache/ffserver
435 %dir %attr(770,root,ffserver) /var/log/ffserver
This page took 0.158233 seconds and 3 git commands to generate.