# # How to deal with ffmpeg/opencv checken-egg problem: # 1. make-request -r --without opencv ffmpeg.spec # 2. make-request -r opencv.spec # 3. bump release of ffmpeg.spec # 4. make-request -r ffmpeg.spec # # Conditional build: %bcond_with nonfree # non free options of package (currently: faac) %bcond_with aacplus # AAC+ encoding via libaacplus (requires nonfree) %bcond_without autoreqdep # don't care about package name deps generated by rpm %bcond_without frei0r # build without frei0r video filtering %bcond_without openal # build without OpenAL 1.1 capture support %bcond_without opencv # build without opencv video filtering %bcond_without pulseaudio # build without PulseAudio input support %bcond_without x264 # build without x264 encoder %bcond_without utvideo # build without Ut Video decoder %bcond_without va # VAAPI (Video Acceleration API) %bcond_without vpx # VP8, a high-quality video codec %bcond_without doc # don't build docs Summary: FFmpeg - a very fast video and audio converter Summary(pl.UTF-8): FFmpeg - szybki konwerter audio/wideo Name: ffmpeg Version: 0.11.2 Release: 1 # LGPL or GPL, chosen at configure time (GPL version is more featured) # (postprocessing, some filters, x264, xavs, xvid, x11grab) # using v3 allows Apache-licensed libs (opencore-amr, libvo-*enc) License: GPL v3+ with LGPL v3+ parts Group: Applications/Multimedia Source0: http://ffmpeg.org/releases/%{name}-%{version}.tar.bz2 # Source0-md5: 93c1908022567b321df74db7214da6ac Source1: ffserver.init Source2: ffserver.sysconfig Source3: ffserver.conf Patch0: %{name}-gsm.patch Patch1: %{name}-opencv24.patch Patch2: %{name}-openjpeg.patch URL: http://www.ffmpeg.org/ %{?with_openal:BuildRequires: OpenAL-devel} BuildRequires: SDL-devel >= 1.2.1 BuildRequires: alsa-lib-devel BuildRequires: bzip2-devel BuildRequires: celt-devel >= 0.11.0 %{?with_nonfree:BuildRequires: faac-devel} BuildRequires: fontconfig-devel BuildRequires: freetype-devel %{?with_frei0r:BuildRequires: frei0r-devel} %ifarch ppc # require version with altivec support fixed BuildRequires: gcc >= 5:3.3.2-3 %endif BuildRequires: gnutls-devel BuildRequires: jack-audio-connection-kit-devel BuildRequires: lame-libs-devel >= 3.98.3 %{?with_aacplus:BuildRequires: libaacplus-devel >= 2.0.0} BuildRequires: libass-devel BuildRequires: libbluray-devel BuildRequires: libcdio-devel BuildRequires: libdc1394-devel >= 2 BuildRequires: libgsm-devel BuildRequires: libmodplug-devel BuildRequires: libnut-devel BuildRequires: libraw1394-devel >= 2 BuildRequires: librtmp-devel BuildRequires: libtheora-devel >= 1.0-0.beta3 BuildRequires: libtool >= 2:1.4d-3 BuildRequires: libv4l-devel %{?with_va:BuildRequires: libva-devel >= 1.0.3} BuildRequires: libvdpau-devel >= 0.2 BuildRequires: libvorbis-devel %{?with_vpx:BuildRequires: libvpx-devel >= 0.9.6} # X264_BUILD >= 118 %{?with_x264:BuildRequires: libx264-devel >= 0.1.3-1.20111212_2245} BuildRequires: opencore-amr-devel %{?with_opencv:BuildRequires: opencv-devel} BuildRequires: openjpeg-devel >= 1.5 %{?with_pulseaudio:BuildRequires: pulseaudio-devel} BuildRequires: speex-devel >= 1:1.2-rc1 %ifarch %{ix86} %ifnarch i386 i486 BuildRequires: nasm %endif %endif BuildRequires: perl-Encode BuildRequires: perl-tools-pod BuildRequires: pkgconfig BuildRequires: rpmbuild(macros) >= 1.470 BuildRequires: schroedinger-devel %{?with_doc:BuildRequires: tetex} %{?with_doc:BuildRequires: texi2html} %{?with_doc:BuildRequires: texinfo} %{?with_utvideo:BuildRequires: utvideo-devel} BuildRequires: yasm BuildRequires: vo-aacenc-devel BuildRequires: vo-amrwbenc-devel BuildRequires: xavs-devel BuildRequires: xorg-lib-libXext-devel BuildRequires: xorg-lib-libXfixes-devel BuildRequires: xvid-devel >= 1:1.1.0 BuildRequires: zlib-devel %{?with_autoreqdep:BuildConflicts: libpostproc} # overflows maximum hash table size BuildConflicts: pdksh < 5.2.14-57 Requires: %{name}-libs = %{version}-%{release} Requires: xvid >= 1:1.1.0 Obsoletes: libpostproc BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _noautoreqdep libGL.so.1 libGLU.so.1 %define specflags -fno-strict-aliasing # -fomit-frame-pointer is always needed on x86 due to lack of registers (-fPIC takes one) %define specflags_ia32 -fomit-frame-pointer # -mmmx is needed to enable code. %define specflags_i586 -mmmx %define specflags_i686 -mmmx %define specflags_ppc -fPIC %description FFmpeg is a complete solution to record, convert and stream audio and video. It is a command line tool to convert one video file format to another. It also supports grabbing and encoding in real time from a TV card. %description -l pl.UTF-8 FFmpeg to kompletne rozwiązanie nagrywania, konwersji i transmisji strumieni dźwięku i obrazu. Jest to działające z linii poleceń narzędzie do konwersji obrazu z jednego formatu do innego. Obsługuje także przechwytywanie i kodowanie w czasie rzeczywistym z karty telewizyjnej. %package libs Summary: ffmpeg libraries Summary(pl.UTF-8): Biblioteki ffmpeg Group: Libraries %description libs This package contains the ffmpeg shared libraries: - the codec library (libavcodec). It supports most existing encoding formats (MPEG, DivX, MPEG4, AC3, DV...), - demuxer library (libavformat). It supports most existing file formats (AVI, MPEG, OGG, Matroska, ASF...), - video postprocessing library (libpostproc). %description libs -l pl.UTF-8 Ten pakiet zawiera biblioteki współdzielone ffmpeg: - bibliotekę kodeków (libavcodec); obsługuje większość istniejących formatów kodowania (MPEG, DivX, MPEG4, AC3, DV...), - bibliotekę demuksera (libavformat); obsługuje większość istniejących formatów plików (AVI, MPEG, OGG, Matroska, ASF...), - bibliotekę postprocessingu (libpostproc). %package devel Summary: ffmpeg header files Summary(pl.UTF-8): Pliki nagłówkowe ffmpeg Group: Development/Libraries Requires: %{name}-libs = %{version}-%{release} # Libs.private from *.pc (unreasonably they are all the same) Requires: SDL-devel >= 1.2.1 Requires: alsa-lib-devel Requires: bzip2-devel Requires: celt-devel >= 0.11.0 %{?with_nonfree:Requires: faac-devel} Requires: fontconfig-devel Requires: freetype-devel Requires: jack-audio-connection-kit-devel Requires: lame-libs-devel >= 3.98.3 Requires: libbluray-devel Requires: libdc1394-devel >= 2 Requires: libgsm-devel Requires: libnut-devel Requires: libraw1394-devel >= 2 Requires: librtmp-devel Requires: libtheora-devel >= 1.0-0.beta3 %{?with_va:Requires: libva-devel >= 1.0.3} Requires: libvorbis-devel %{?with_vpx:Requires: libvpx-devel >= 0.9.6} %{?with_x264:Requires: libx264-devel >= 0.1.3-1.20110625_2245} Requires: opencore-amr-devel Requires: openjpeg-devel >= 1.5 Requires: schroedinger-devel Requires: speex-devel >= 1:1.2-rc1 Requires: vo-aacenc-devel Requires: vo-amrwbenc-devel Requires: xavs-devel Requires: xorg-lib-libXext-devel Requires: xorg-lib-libXfixes-devel Requires: xvid-devel >= 1:1.1.0 Requires: zlib-devel Obsoletes: libpostproc-devel %description devel ffmpeg header files. %description devel -l pl.UTF-8 Pliki nagłówkowe ffmpeg. %package static Summary: ffmpeg static libraries Summary(pl.UTF-8): Statyczne biblioteki ffmpeg Group: Development/Libraries Requires: %{name}-devel = %{version}-%{release} %description static ffmpeg static libraries (libavcodec and libavformat). %description static -l pl.UTF-8 Statyczne biblioteki ffmpeg (libavcodec i libavformat). %package ffplay Summary: FFplay - SDL-based media player Summary(pl.UTF-8): FFplay - odtwarzacz mediów oparty na SDL Group: Applications/Multimedia Requires: %{name}-libs = %{version}-%{release} %description ffplay FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as a test bench for the various APIs of FFmpeg. %description ffplay -l pl.UTF-8 FFplay to bardzo prosty i przenośny odtwarzacz mediów używający bibliotek FFmpeg oraz biblioteki SDL. Jest używany głównie do testowania różnych API FFmpeg. %package ffserver Summary: FFserver video server Summary(pl.UTF-8): FFserver - serwer strumieni obrazu Group: Daemons Requires(post,preun): /sbin/chkconfig Requires: %{name}-libs = %{version}-%{release} Requires: rc-scripts >= 0.4.0.10 %description ffserver FFserver is a streaming server for both audio and video. It supports several live feeds, streaming from files and time shifting on live feeds (you can seek to positions in the past on each live feed, provided you specify a big enough feed storage in ffserver.conf). %description ffserver -l pl.UTF-8 FFserver to serwer strumieni dla dźwięku i obrazu. Obsługuje kilka źródeł na żywo, przekazywanie strumieni z plików i przesuwanie w czasie dla źródeł na żywo (można przeskakiwać na położenia w przeszłości dla każdego źródła na żywo, pod warunkiem odpowiednio dużej przestrzeni na dane skonfigurowanej w ffserver.conf). %prep %setup -q %patch0 -p1 %patch1 -p0 %patch2 -p1 # package the grep result for mplayer, the result formatted as ./mplayer/configure cat < ffmpeg-avconfig #! /bin/sh _libavdecoders_all="`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`" _libavencoders_all="`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`" _libavparsers_all="`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`" _libavbsfs_all="`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'`" _libavdemuxers_all="`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`" _libavmuxers_all="`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`" _libavprotocols_all="`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'`" EOF cat <<'EOF' >> ffmpeg-avconfig case "$1" in --decoders) echo $_libavdecoders_all ;; --encoders) echo $_libavencoders_all ;; --parsers) echo $_libavparsers_all ;; --bsfs) echo $_libavbsfs_all ;; --demuxers) echo $_libavdemuxers_all ;; --muxers) echo $_libavmuxers_all ;; --protocols) echo $_libavprotocols_all ;; *) cat <