240 lines
7.7 KiB
RPMSpec
240 lines
7.7 KiB
RPMSpec
%global project QtAV
|
|
%global repo %{project}
|
|
|
|
# QTAV's builds fail with FFMpeg-5*
|
|
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=6271
|
|
%bcond_with oldffmpeg
|
|
|
|
Name: qtav
|
|
Version: 1.13.0
|
|
Release: 1
|
|
Summary: A media playback framework based on Qt and FFmpeg
|
|
License: LGPLv2+ and GPLv3+ and BSD
|
|
URL: http://www.qtav.org/
|
|
Source0: https://github.com/wang-bin/QtAV/archive/v%{version}/%{project}-%{version}.tar.gz
|
|
Patch0: fix_qt514_build.patch
|
|
|
|
# Fix builds with Qt-5.15.1
|
|
Patch1: %{name}-fix_Qt515_builds.patch
|
|
|
|
# Exclude avresample library (bug #5350)
|
|
Patch2: %{name}-avoid-avresample_dependency.patch
|
|
|
|
# Fix avutil test during configuration
|
|
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=6271
|
|
Patch3: %{name}-fix-avutil_test.patch
|
|
|
|
BuildRequires: desktop-file-utils
|
|
BuildRequires: qt5-qtbase-devel
|
|
BuildRequires: qt5-qtdeclarative-devel
|
|
BuildRequires: qt5-qtquickcontrols
|
|
BuildRequires: qt5-qtsvg-devel
|
|
BuildRequires: libass-devel
|
|
%if %{with oldffmpeg}
|
|
BuildRequires: compat-ffmpeg4-devel
|
|
%else
|
|
BuildRequires: ffmpeg-devel
|
|
%endif
|
|
BuildRequires: openal-soft-devel
|
|
BuildRequires: libXv-devel
|
|
BuildRequires: libva-devel
|
|
BuildRequires: pulseaudio-libs-devel
|
|
BuildRequires: dos2unix
|
|
Requires: hicolor-icon-theme
|
|
|
|
%description
|
|
QtAV is a multimedia playback library based on Qt and FFmpeg.
|
|
It can help you to write a player with less effort than ever before.
|
|
|
|
Features include:
|
|
* Hardware decoding suppprt: DXVA2, VAAPI, VDA, CedarX, CUDA.
|
|
* OpenGL and ES2 support for Hi10P and other 16-bit YUV videos.
|
|
* Video capture in rgb and yuv format.
|
|
* OSD and custom filters.
|
|
* filters in libavfilter, for example stero3d, blur.
|
|
* Subtitle.
|
|
* Transform video using GraphicsItemRenderer. (rotate, shear, etc)
|
|
* Playing frame by frame (currently support forward playing).
|
|
* Playback speed control. At any speed.
|
|
* Variant streams: locale file, http, rtsp, etc.
|
|
* Choose audio channel.
|
|
* Choose media stream, e.g. play a desired audio track.
|
|
* Multiple render engine support. Currently supports QPainter, GDI+, Direct2D,
|
|
XV and OpenGL(and ES2).
|
|
* Dynamically change render engine when playing.
|
|
* Multiple video outputs for 1 player.
|
|
* Region of interest(ROI), i.e. video cropping.
|
|
* Video eq: brightness, contrast, saturation, hue.
|
|
* QML support as a plugin. Most playback APIs are compatible with QtMultiMedia
|
|
module.
|
|
|
|
%package -n lib%{name}
|
|
Summary: QtAV library
|
|
Requires: ffmpeg
|
|
|
|
%description -n lib%{name}
|
|
QtAV is a multimedia playback library based on Qt and FFmpeg.
|
|
It can help you to write a player with less effort than ever before.
|
|
|
|
This package contains the QtAV library.
|
|
|
|
%package -n lib%{name}widgets
|
|
Summary: QtAV Widgets module
|
|
Requires: libqtav%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n lib%{name}widgets
|
|
QtAV is a multimedia playback library based on Qt and FFmpeg.
|
|
It can help you to write a player with less effort than ever before.
|
|
|
|
This package contains a set of widgets to play media.
|
|
|
|
%package devel
|
|
Summary: QtAV development files
|
|
Requires: libqtav%{?_isa} = %{version}-%{release}
|
|
Requires: libqtavwidgets%{?_isa} = %{version}-%{release}
|
|
Requires: qt5-qtbase-devel%{?_isa}
|
|
|
|
%description devel
|
|
QtAV is a multimedia playback library based on Qt and FFmpeg.
|
|
It can help you to write a player with less effort than ever before.
|
|
|
|
This package contains the header development files for building some
|
|
QtAV applications using QtAV headers.
|
|
|
|
%package qml-module
|
|
Summary: QtAV QML module
|
|
|
|
%description qml-module
|
|
QtAV is a multimedia playback library based on Qt and FFmpeg.
|
|
It can help you to write a player with less effort than ever before.
|
|
|
|
This package contains the QtAV QML module for Qt declarative.
|
|
|
|
%package players
|
|
Summary: QtAV/QML players
|
|
License: GPLv3
|
|
Requires: libqtav%{?_isa} = %{version}-%{release}
|
|
Requires: libqtavwidgets%{?_isa} = %{version}-%{release}
|
|
Requires: qtav-qml-module%{?_isa} = %{version}-%{release}
|
|
|
|
%description players
|
|
QtAV is a multimedia playback framework based on Qt and FFmpeg.
|
|
High performance. User & developer friendly.
|
|
|
|
This package contains the QtAV based players.
|
|
|
|
%prep
|
|
%autosetup -n %repo-%{version} -N
|
|
|
|
%patch0 -p1 -b .backup
|
|
%patch1 -p1 -b .backup
|
|
%patch2 -p1 -b .backup
|
|
%if %{with oldffmpeg}
|
|
%patch3 -p1 -b .backup
|
|
%endif
|
|
|
|
# E: script-without-shebang /usr/share/icons/hicolor/scalable/apps/QtAV.svg
|
|
# ignore them src/QtAV.svg: SVG Scalable Vector Graphics image
|
|
|
|
# delete .jar File from examples
|
|
rm -rf examples/QMLPlayer/android/gradle/wrapper/gradle-wrapper.jar
|
|
|
|
# W: doc-file-dependency /usr/share/doc/qtav-devel/examples/QMLPlayer/android/gradlew /usr/bin/env
|
|
# An included file marked as %%doc creates a possible additional dependency in
|
|
# the package. Usually, this is not wanted and may be caused by eg. example
|
|
# scripts with executable bits set included in the package's documentation.
|
|
chmod -x examples/QMLPlayer/android/gradlew
|
|
|
|
# prepare example dir for -devel
|
|
mkdir -p _tmpdoc/examples
|
|
cp -pr examples/* _tmpdoc/examples
|
|
|
|
%build
|
|
mkdir -p build; pushd build
|
|
%if %{with oldffmpeg}
|
|
export CPATH=" -I%{_includedir}/compat-ffmpeg4"
|
|
%{_qt5_qmake} \
|
|
QMAKE_CFLAGS="${RPM_OPT_FLAGS} -I%{_includedir}/compat-ffmpeg4" \
|
|
QMAKE_CXXFLAGS="${RPM_OPT_FLAGS} -I%{_includedir}/compat-ffmpeg4" \
|
|
QMAKE_LFLAGS="${RPM_LD_FLAGS} -L%{_libdir}/compat-ffmpeg4 -lavformat -lavcodec -lavutil -lavdevice -lavfilter -lswscale -lswresample" \
|
|
QMAKE_STRIP="" \
|
|
CONFIG+="no_rpath recheck config_libass_link release" ..
|
|
%else
|
|
export CPATH="`pkg-config --variable=includedir libswresample`"
|
|
%{_qt5_qmake} \
|
|
QMAKE_CFLAGS="${RPM_OPT_FLAGS}" \
|
|
QMAKE_CXXFLAGS="${RPM_OPT_FLAGS}" \
|
|
QMAKE_LFLAGS="${RPM_LD_FLAGS}" \
|
|
QMAKE_STRIP="" \
|
|
CONFIG+="no_rpath recheck config_libass_link release" ..
|
|
%endif
|
|
%make_build
|
|
|
|
%install
|
|
%make_install INSTALL_ROOT=%{buildroot} -C build
|
|
|
|
rm -rf %{buildroot}%{_datadir}/doc/*
|
|
rm -rf %{buildroot}%{_qt5_archdatadir}/bin/libcommon.*
|
|
rm -rf %{buildroot}%{_qt5_headerdir}/*.h
|
|
install -d %{buildroot}%{_bindir}
|
|
ln -sfv %{_qt5_bindir}/Player %{buildroot}%{_bindir}
|
|
ln -sfv %{_qt5_bindir}/QMLPlayer %{buildroot}%{_bindir}
|
|
install -D src/QtAV.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/QtAV.svg
|
|
|
|
# library links
|
|
ln -sfv %{_libdir}/libQtAV.so %{buildroot}%{_libdir}/libQt5AV.so
|
|
ln -sfv %{_libdir}/libQtAVWidgets.so %{buildroot}%{_libdir}/libQt5AVWidgets.so
|
|
|
|
%check
|
|
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
|
|
|
%files -n lib%{name}
|
|
%doc README.md Changelog
|
|
%license lgpl-2.1.txt
|
|
%{_libdir}/libQtAV.so.*
|
|
|
|
%files -n lib%{name}widgets
|
|
%{_libdir}/libQtAVWidgets.so.*
|
|
|
|
%files devel
|
|
%{_qt5_headerdir}/QtAV/*
|
|
%{_qt5_headerdir}/QtAVWidgets/*
|
|
%dir %{_qt5_headerdir}/QtAV/
|
|
%dir %{_qt5_headerdir}/QtAVWidgets/
|
|
%{_libdir}/libQtAV.so
|
|
%{_libdir}/libQtAV.prl
|
|
%{_libdir}/libQt5AV.so
|
|
%{_libdir}/libQtAVWidgets.so
|
|
%{_libdir}/libQtAVWidgets.prl
|
|
%{_libdir}/libQt5AVWidgets.so
|
|
%{_qt5_archdatadir}/mkspecs/features/av.prf
|
|
%{_qt5_archdatadir}/mkspecs/features/avwidgets.prf
|
|
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_av.pri
|
|
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_avwidgets.pri
|
|
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_av_private.pri
|
|
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_avwidgets_private.pri
|
|
|
|
%files qml-module
|
|
%doc README.md Changelog
|
|
%license lgpl-2.1.txt
|
|
%{_qt5_archdatadir}/qml/QtAV/libQmlAV.so
|
|
%{_qt5_archdatadir}/qml/QtAV/plugins.qmltypes
|
|
%{_qt5_archdatadir}/qml/QtAV/qmldir
|
|
%{_qt5_archdatadir}/qml/QtAV/Video.qml
|
|
%dir %{_qt5_archdatadir}/qml/QtAV/
|
|
|
|
%files players
|
|
%doc README.md Changelog
|
|
%license gpl-3.0.txt
|
|
%{_qt5_bindir}/Player
|
|
%{_qt5_bindir}/QMLPlayer
|
|
%{_bindir}/Player
|
|
%{_bindir}/QMLPlayer
|
|
%{_datadir}/applications/Player.desktop
|
|
%{_datadir}/applications/QMLPlayer.desktop
|
|
%{_datadir}/icons/hicolor/*/apps/QtAV.svg
|
|
|
|
%changelog
|
|
* Tue Dec 6 2022 peijiankang <peijiankang@kylinos.cn> - 1.13.0-1
|
|
- Init package for openEuler
|