File nova-video-player-beta.spec of Package nova-video-player-beta
## =============================================================================
# SPEC файл для Nova Video Player Beta с Qt6, FFmpeg 8, VLC 4 и PipeWire
# Сборка: rpmbuild -ba nova-video-player-beta-vlc4.spec
# =============================================================================
Name: nova-video-player-beta
Version: 6.4.25
Release: 71.1
Summary: Nova Video Player Beta with Qt6, FFmpeg 8, VLC 4 and PipeWire
License: GPL-3.0-only
Group: Applications/Multimedia
URL: https://nova-video-player.com/
# Основной исходный код
Source0: https://codeload.github.com/nova-video-player/aos-AVP/tar.gz/refs/tags/v6.4.24
# Патчи для совместимости
Source1: qt6-full-migration.patch
Source2: ffmpeg8-vlc4-compat.patch
Source3: vlc4-api-changes.patch
Source4: opensuse-tumbleweed-modern.patch
Source5: 01-fix-vlc4-build.patch
Source6: 02-update-desktop.patch
# Файлы приложения
Source7: nova-video-player-beta.desktop
Source8: nova-video-player-vlc4-beta.png
Source9: nova-beta-vlc4-config.conf
# Документация
Source10: README.md
Source11: CHANGELOG.md
Source12: VLC4-NOTES.md
Source13: LICENSE
# Определение патчей
Patch0: qt6-full-migration.patch
Patch1: ffmpeg8-vlc4-compat.patch
Patch2: vlc4-api-changes.patch
Patch3: opensuse-tumbleweed-modern.patch
Patch4: 01-fix-vlc4-build.patch
Patch5: 02-update-desktop.patch
BuildRequires: gsm gapk
# Базовые зависимости сборки
BuildRequires: cmake >= 3.22
BuildRequires: gcc-c++ >= 11
BuildRequires: pkg-config
BuildRequires: make
BuildRequires: git
BuildRequires: desktop-file-utils
# Qt6 полный стек (openSUSE Tumbleweed)
BuildRequires: qt6-base-devel >= 6.7
BuildRequires: qt6-declarative-devel
BuildRequires: qt6-quickcontrols2-devel
BuildRequires: qt6-svg-devel
BuildRequires: qt6-qt5compat-devel
BuildRequires: qt6-multimedia-devel
BuildRequires: qt6-shadertools-devel
BuildRequires: qt6-wayland-devel
BuildRequires: qt6-tools-devel
BuildRequires: qt6-webengine
BuildRequires: extra-cmake-modules
# PipeWire для современного аудио/видео
BuildRequires: pipewire >= 0.3.70
#BuildRequires: libpipewire-0-3
#BuildRequires: pipewire-alsa-devel
#BuildRequires: pipewire-pulse-devel
# Альтернативные аудио бэкенды
BuildRequires: pulseaudio-devel
BuildRequires: alsa-devel
# FFmpeg 8 (openSUSE Tumbleweed)
BuildRequires: ffmpeg-8
BuildRequires: ffmpeg-8-libavcodec-devel
BuildRequires: ffmpeg-8-libavformat-devel
BuildRequires: ffmpeg-8-libavutil-devel
BuildRequires: ffmpeg-8-libavfilter-devel
BuildRequires: ffmpeg-8-libswscale-devel
BuildRequires: ffmpeg-8-libswresample-devel
# VLC 4.0 Beta (из репозитория VideoLAN)
BuildRequires: vlc-beta-devel >= 4.0.0
#BuildRequires: libvlc-beta-devel
# Современные медиа библиотеки
BuildRequires: libplacebo-devel >= 7.0
#BuildRequires: libplacebo-plugins-devel
BuildRequires: dav1d-devel >= 1.5
BuildRequires: vulkan-devel
BuildRequires: libvulkan1
BuildRequires: libva-devel
BuildRequires: libdrm-devel
BuildRequires: libx264-devel
BuildRequires: libx265-devel
# AV1 и современные кодеки
BuildRequires: SVT-AV1
BuildRequires: rav1e-devel
BuildRequires: libaom-devel
# Системные библиотеки
BuildRequires: sqlite3-devel
BuildRequires: libzip-devel >= 1.10
BuildRequires: openssl-devel >= 3.2
BuildRequires: libcurl-devel
BuildRequires: libtorrent-rasterbar-devel >= 2.0
BuildRequires: libmediainfo-devel >= 23.0
BuildRequires: libzen-devel >= 0.4.41
# Systemd для интеграции
BuildRequires: systemd-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# =============================================================================
# Runtime зависимости
# =============================================================================
# VLC 4 Beta (обязательно)
Requires: vlc-beta >= 4.0.0
Requires: libvlc-beta
# Qt6 runtime (полный набор)
Requires: libQt6Core6 >= 6.7
Requires: libQt6Gui6 >= 6.7
Requires: libQt6Qml6 >= 6.7
Requires: libQt6Quick6 >= 6.7
Requires: libQt6QuickControls2-6 >= 6.7
Requires: libQt6Svg6 >= 6.7
Requires: libQt6Multimedia6 >= 6.7
Requires: libQt6Network6 >= 6.7
Requires: libQt6OpenGL6 >= 6.7
Requires: libQt6ShaderTools6 >= 6.7
Requires: libQt6Sql6 >= 6.7
Requires: libQt6StateMachine6 >= 6.7
Requires: libQt6WebEngineCore6 >= 6.7
Requires: libQt6WebChannel6 >= 6.7
# Совместимость Qt5 -> Qt6
Requires: libQt6Core5Compat6
Requires: libQt6Gui5Compat6
# PipeWire (основной аудио бэкенд для Tumbleweed)
Requires: pipewire >= 0.3.70
Requires: pipewire-alsa
Requires: pipewire-pulse
Recommends: pipewire-jack
Recommends: wireplumber
# Альтернативные аудио бэкенды
Recommends: pulseaudio
Recommends: alsa
# FFmpeg 8 runtime
Requires: ffmpeg-8
Requires: ffmpeg-8-libavcodec
Requires: ffmpeg-8-libavformat
Requires: ffmpeg-8-libavutil
Requires: ffmpeg-8-libavfilter
Requires: ffmpeg-8-libswscale
Requires: ffmpeg-8-libswresample
# Современные медиа библиотеки
Requires: libplacebo7 >= 7.0
Requires: dav1d >= 1.5
Requires: libvulkan1
Requires: libsvtav1
Recommends: rav1e
Recommends: libaom
# Аппаратное ускорение видео
Recommends: mesa-vulkan-drivers
Recommends: vulkan-tools
Recommends: intel-media-driver
Recommends: amdvlk
Recommends: rocm-opencl-runtime
Recommends: nvidia-vulkan-common
Recommends: vaapi-intel-driver
Recommends: libva-vdpau-driver
# Дополнительные медиа компоненты
Recommends: gstreamer-plugins-good
Recommends: gstreamer-plugins-bad
Recommends: gstreamer-plugins-ugly
# Конфликты с обычной версией
Conflicts: nova-video-player
Conflicts: vlc < 4.0.0
Conflicts: libvlc5 < 4.0.0
Conflicts: libvlccore9 < 4.0.0
Provides: nova-video-player = %{version}
%description
Nova Video Player VLC4 Beta - Экспериментальная версия с современным медиа стеком
🚀 СОВРЕМЕННЫЙ МЕДИА СТЕК:
• Qt 6.7+ - Нативный Wayland, современный UI
• FFmpeg 8 - Новейшая обработка медиа
• VLC 4.0 Beta - Libplacebo рендеринг, Vulkan декодирование
• PipeWire 0.3.70+ - Низколатентный аудио/видео сервер
✨ ОСНОВНЫЕ ВОЗМОЖНОСТИ:
• Полная поддержка HDR10+/Dolby Vision
• Аппаратное декодирование AV1 через Vulkan
• 10-битный цвет и тональное отображение HDR
• Нативная интеграция с Wayland через Qt6
• AI-powered поиск метаданных
• Умная организация медиатеки
🎯 ОСОБЕННОСТИ VLC 4 BETA:
• Рендеринг через libplacebo с GPU ускорением
• Zero-copy конвейеры Vulkan
• Пространственный звук 3D Audio
• Поддержка новых кодеков и форматов
• Улучшенное управление субтитрами
⚠️ ВАЖНО: Это BETA версия!
VLC 4 находится в активной разработке и может:
• Нестабильно работать или завершаться аварийно
• Иметь проблемы с воспроизведением некоторых форматов
• Требовать обновления зависимостей
📦 Требует пакеты vlc-beta из репозитория VideoLAN:
https://download.videolan.org/pub/vlc/SuSE/Tumbleweed/vlc-beta.repo
%description -l ru
Nova Video Player VLC4 Beta - экспериментальная версия с современным медиа стеком
🚀 СОВРЕМЕННЫЙ МЕДИА СТЕК:
• Qt 6.7+ - Нативный Wayland, современный интерфейс
• FFmpeg 8 - Новейшая обработка медиа
• VLC 4.0 Beta - Рендеринг через libplacebo, декодирование Vulkan
• PipeWire 0.3.70+ - Низколатентный аудио/видео сервер
✨ ОСНОВНЫЕ ВОЗМОЖНОСТИ:
• Полная поддержка HDR10+/Dolby Vision
• Аппаратное декодирование AV1 через Vulkan
• 10-битный цвет и тональное отображение HDR
• Нативная интеграция с Wayland через Qt6
• Умный поиск метаданных с использованием AI
• Умная организация медиатеки
🎯 ОСОБЕННОСТИ VLC 4 BETA:
• Рендеринг через libplacebo с GPU ускорением
• Zero-copy конвейеры Vulkan
• Пространственный звук 3D Audio
• Поддержка новых кодеков и форматов
• Улучшенное управление субтитрами
⚠️ ВАЖНО: Это BETA версия!
VLC 4 находится в активной разработке и может:
• Нестабильно работать или завершаться аварийно
• Иметь проблемы с воспроизведением некоторых форматов
• Требовать обновления зависимостей
📦 Требует пакеты vlc-beta из репозитория VideoLAN
%prep
%setup -q -n aos-AVP-6.4.24
# Применяем все патчи
%patch 0 -p1
%patch 1 -p1
%patch 2 -p1
%patch 3 -p1
%patch 4 -p1
%patch 5 -p1
# Копируем документацию
cp %{SOURCE10} README.md
cp %{SOURCE11} CHANGELOG.md
cp %{SOURCE12} VLC4-NOTES.md
cp %{SOURCE13} LICENSE
# Обновляем информацию о версии
echo "Nova Video Player VLC4 Beta %{version}-%{release}" > VERSION
echo "Build date: $(date +%Y-%m-%d)" >> VERSION
echo "Qt: 6.7+, VLC: 4.0 Beta, FFmpeg: 8.x, PipeWire: 0.3+" >> VERSION
echo "Platform: openSUSE Tumbleweed" >> VERSION
# Определяем стандарт C++ в зависимости от GCC
GCC_VERSION=$(gcc -dumpversion | cut -d. -f1)
if [ $GCC_VERSION -ge 15 ]; then
echo "Detected GCC $GCC_VERSION, using C++20"
CXX_STANDARD=20
elif [ $GCC_VERSION -ge 11 ]; then
echo "Detected GCC $GCC_VERSION, using C++17"
CXX_STANDARD=17
else
echo "Warning: GCC $GCC_VERSION is old, using C++14"
CXX_STANDARD=14
fi
# Создаем директорию сборки
mkdir -p build
%build
cd build
# Конфигурация CMake для openSUSE Tumbleweed
cmake .. \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_STANDARD=${CXX_STANDARD} \
-DCMAKE_CXX_FLAGS="-O2 -march=native -pipe -Wall -Wextra" \
-DBUILD_WITH_QT6=ON \
-DQT_VERSION_MAJOR=6 \
-DWITH_VLC4=ON \
-DVLC_MIN_VERSION=4.0.0 \
-DUSE_FFMPEG8=ON \
-DENABLE_VULKAN=ON \
-DENABLE_PIPEWIRE=ON \
-DENABLE_WAYLAND=ON \
-DENABLE_AV1_HW=ON \
-DENABLE_HDR=ON \
-DENABLE_10BIT=ON \
-DENABLE_DOLBY_VISION=ON \
-DUSE_SYSTEM_LIBVLC=ON \
-DUSE_SYSTEM_FFMPEG=ON \
-DUSE_SYSTEM_LIBTORRENT=ON \
-DWITH_VLC_PLACEBO=ON \
-DWITH_VLC_VULKAN=ON \
-DWITH_PIPEWIRE_AUDIO=ON \
-DCMAKE_PREFIX_PATH="/usr/lib64/qt6;/usr/include/qt6" \
-DVLC_INCLUDE_DIR="/usr/include/vlc-beta" \
-DVLC_LIBRARY="/usr/lib64/libvlc-beta.so"
# Сборка с использованием всех ядер CPU
make %{?_smp_mflags} VERBOSE=1
%install
cd build
make install DESTDIR=%{buildroot}
# Переименовываем бинарник для бета версии VLC4
mv %{buildroot}%{_bindir}/nova-video-player \
%{buildroot}%{_bindir}/nova-video-player-vlc4-beta
# Устанавливаем desktop файл
install -D -m 0644 %{SOURCE7} \
%{buildroot}%{_datadir}/applications/org.novavideoplayer.nova.vlc4.beta.desktop
# Иконка приложения
install -D -m 0644 %{SOURCE8} \
%{buildroot}%{_datadir}/pixmaps/nova-video-player-vlc4-beta.png
# Создаем ссылки на иконки для разных размеров
for size in 16 22 24 32 48 64 128 256 512; do
install -d %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/
ln -sf ../../../../pixmaps/nova-video-player-vlc4-beta.png \
%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/org.novavideoplayer.nova.vlc4.beta.png
done
# Конфигурационный файл VLC4
install -D -m 0644 %{SOURCE9} \
%{buildroot}%{_sysconfdir}/nova-video-player/vlc4-beta.conf
# Документация
install -d %{buildroot}%{_docdir}/%{name}
install -m 0644 %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} \
%{buildroot}%{_docdir}/%{name}/
# AppStream метаданные
install -d %{buildroot}%{_datadir}/metainfo
cat > %{buildroot}%{_datadir}/metainfo/org.novavideoplayer.nova.vlc4.beta.metainfo.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>org.novavideoplayer.nova.vlc4.beta</id>
<name>Nova Video Player VLC4 Beta</name>
<summary>Experimental version with VLC 4.0 Beta, Qt6, FFmpeg 8 and PipeWire</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-only</project_license>
<description>
<p>Ultimate beta version featuring:</p>
<ul>
<li>VLC 4.0 Beta with libplacebo video output</li>
<li>Qt6 with native Wayland support</li>
<li>FFmpeg 8 with latest codec support</li>
<li>PipeWire modern audio/video server</li>
<li>Vulkan rendering and decoding</li>
<li>HDR10+/Dolby Vision playback</li>
<li>AV1 hardware decoding</li>
</ul>
<p>⚠️ WARNING: VLC 4 is highly experimental! Requires vlc-beta packages.</p>
</description>
<url type="homepage">https://nova-video-player.com/</url>
<categories>
<category>AudioVideo</category>
<category>Player</category>
<category>Video</category>
</categories>
<releases>
<release version="%{version}" date="%{%(date +%%Y-%%m-%%d)}">
<description>
<p>VLC 4.0 Beta integration with Qt6, FFmpeg 8 and PipeWire</p>
</description>
</release>
</releases>
<content_rating type="oars-1.1"/>
<custom>
<value key="VLCVersion">4.0.0-beta</value>
<value key="Experimental">true</value>
<value key="RequiresVLCBeta">true</value>
<value key="PipeWireRecommended">true</value>
</custom>
</component>
EOF
%post
# Обновление кэшей desktop и иконок
if [ -x %{_bindir}/update-desktop-database ]; then
%{_bindir}/update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || :
fi
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache -f %{_datadir}/icons/hicolor >/dev/null 2>&1 || :
fi
# Создание пользовательских директорий
if [ "$UID" -ge 1000 ]; then
mkdir -p ~/.local/share/nova-video-player-vlc4-beta/{cache,library,thumbnails,config,logs,shaders,playlists}
chmod 700 ~/.local/share/nova-video-player-vlc4-beta
# Копирование конфигурации VLC4 если не существует
if [ ! -f ~/.config/nova-video-player/vlc4-beta.conf ]; then
mkdir -p ~/.config/nova-video-player
cp %{_sysconfdir}/nova-video-player/vlc4-beta.conf \
~/.config/nova-video-player/vlc4-beta.conf 2>/dev/null || :
fi
fi
echo ""
echo "================================================"
echo "🚀 Nova Video Player VLC4 Beta успешно установлен!"
echo "================================================"
echo ""
echo "✨ ОСОБЕННОСТИ:"
echo " • VLC 4.0 Beta с libplacebo рендерингом"
echo " • Qt6 с нативной поддержкой Wayland"
echo " • FFmpeg 8 с новейшими кодеками"
echo " • PipeWire для современного аудио/видео"
echo " • Vulkan аппаратное ускорение"
echo " • HDR и 10-битный цвет"
echo " • AV1 аппаратное декодирование"
echo ""
echo "📦 ТРЕБОВАНИЯ:"
echo " • Пакеты vlc-beta из репозитория VideoLAN"
echo " • Рекомендуется PipeWire для лучшего аудио"
echo ""
echo "⚠️ ВНИМАНИЕ: VLC 4 в бета-стадии!"
echo " Могут быть проблемы с воспроизведением."
echo ""
echo "🔄 ЗАПУСК: nova-video-player-vlc4-beta"
echo "📁 КОНФИГ: ~/.config/nova-video-player/vlc4-beta.conf"
echo "📚 ДОКУМЕНТАЦИЯ: %{_docdir}/%{name}"
echo "================================================"
echo ""
%postun
# Очистка кэшей при удалении
if [ $1 -eq 0 ]; then
if [ -x %{_bindir}/update-desktop-database ]; then
%{_bindir}/update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || :
fi
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache -f %{_datadir}/icons/hicolor >/dev/null 2>&1 || :
fi
fi
%files
%license LICENSE
%doc README.md CHANGELOG.md VLC4-NOTES.md
%{_bindir}/nova-video-player-vlc4-beta
%{_datadir}/applications/org.novavideoplayer.nova.vlc4.beta.desktop
%{_datadir}/pixmaps/nova-video-player-vlc4-beta.png
%{_datadir}/icons/hicolor/*/apps/org.novavideoplayer.nova.vlc4.beta.png
%{_datadir}/metainfo/org.novavideoplayer.nova.vlc4.beta.metainfo.xml
%config(noreplace) %{_sysconfdir}/nova-video-player/vlc4-beta.conf
%doc %{_docdir}/%{name}
%changelog
* Sun Dec 28 2025 Nova Video Player Team <team@nova-video-player.com> - 6.4.25-71.1
- Полная переработка для openSUSE Tumbleweed
- Добавлена поддержка PipeWire как основного аудио бэкенда
- Обновлены все зависимости до современных версий
- Интеграция VLC 4.0 Beta с libplacebo рендерингом
- Qt6 полная миграция с нативной Wayland поддержкой
- FFmpeg 8 совместимость с новыми кодеками
- Vulkan аппаратное ускорение декодирования и рендеринга
- HDR10+/Dolby Vision экспериментальная поддержка
- AV1 аппаратное декодирование через dav1d/SVT-AV1
- 10-битный цвет и улучшенное тональное отображение
- Systemd интеграция с watchdog поддержкой
- Автоматическое определение стандарта C++ по версии GCC
- Улучшенная документация и конфигурация
* Fri Mar 01 2024 Nova Video Player Team <team@nova-video-player.com> - 6.4.25-0.beta.vlc4.20240301
- Первоначальная бета версия с VLC 4.0 Beta
- Базовая интеграция Qt6 и FFmpeg 8
- Экспериментальная поддержка HDR