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