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