Open-source components
Last updated: 9 November 2026
Some BGPVR products contain open-source software. For each part whose licence asks us to publish or offer its source code, this page gives the exact version, how we build it and where to download the source. The source archives further down cover BGPVR Player for Android from 1.8.8 to 1.9.8. It has FFmpeg in two places: in its audio decoder and in libmpv, its video player. We add more parts and product versions as we publish their source.
Products and the open-source parts in them
- BGPVR Player 1.8.8 for Android (version code 2363): FFmpeg 6.0.1 as an audio decoder (LGPL 2.1 or later), with the FFmpeg decoder module of AndroidX Media3 1.7.1 (Apache 2.0); and libmpv, the video player of media_kit, with mpv and FFmpeg n6.0 (LGPL 3 or later).
- BGPVR Player for Android after 1.8.8 (1.8.9 and 1.9.x): the same FFmpeg 6.0.1 and Media3 1.7.1 in the audio decoder library, which in these versions also decodes MPEG-2 video and holds our own glue code for it (Apache 2.0); and libmpv as in 1.8.8, except that from 1.9.3 the libmpv for ARM devices (arm64-v8a and armeabi-v7a) is our own build of the same release v1.1.7 with three more FFmpeg filters switched on (bwdif, yadif and scale; still LGPL 3 or later, no GPL parts). Their source is under BGPVR Player 1.8.9.1 to 1.9.8 below. 1.8.9 still has the audio-only FFmpeg of 1.8.8, and 1.8.9 to 1.9.2.6 the libmpv of 1.8.8: their source is in the 1.8.8 archives.
- BGPVR Player for iPhone and iPad, 1.8.5 and later: libmpv from media_kit (the package media_kit_libs_ios_video 1.1.4, which uses the frameworks of media-kit/libmpv-darwin-build v0.6.0 unchanged), with mpv 0.36 (LGPL 2.1 or later) and FFmpeg 6.0 (LGPL 3 or later), each as its own dynamic framework in the app; FriBidi (LGPL 2.1 or later) and uchardet (MPL 1.1); and libass, dav1d, FreeType, HarfBuzz, libpng, libxml2 and Mbed TLS under permissive licences. The source and build scripts are at that link, ffmpeg.org and github.com/mpv-player/mpv; the open-source notices screen in the app lists the rest.
- BGPVR add-ons for Kodi: BGPVR Setup (service.bgpvr.setup) 1.2.0, BGPVR Live TV (plugin.video.bgpvr) 1.1.3 and BGPVR Buffering Fix (script.bgpvr.advancedsettings) 1.0.0. Our own code under the MIT licence, with no third-party code inside (the QR code on the sign-in screen is drawn by our own code). They run inside Kodi (GPL 2.0 or later) and set up Kodi’s own TV client add-ons, which Kodi installs from its official repository; we distribute neither.
- Web player, Smart TV apps and MAG portal, which the BGPVR server serves: video.js 8.10.0 with vtt.js, @videojs/http-streaming 3.10.0, m3u8-parser 7.1.0, mpd-parser 1.3.0, aes-decrypter 4.0.1, pkcs7 1.0.4 and videojs-contrib-quality-levels 4.0.0 (all Apache 2.0); hls.js 1.5.15 (Apache 2.0); qrcodejs 1.0.0 (MIT), which the MAG portal uses too; Font Awesome Free 6.5.0 (icons CC BY 4.0, fonts SIL OFL 1.1, code MIT); and the Inter and Rubik fonts (SIL OFL 1.1), which this website uses as well. The LG webOS app carries the same files; the Samsung Tizen and VIDAA apps open the web player from the operator’s server. None of these licences asks for source code to be published or offered.
- BGPVR Player for Linux 1.9.6.3-9 and later: libmpv (mpv 0.41.0), FFmpeg 8.1.3, libplacebo and libdisplay-info, all LGPL 2.1 or later, and the Ubuntu 22.04 libraries the app carries. See BGPVR Player for Linux.
- BGPVR suite server images, which operators install with Docker (the suite, the AI service and the node): FFmpeg, DVBlast and libdvbcsa (GPL 2 or later), TSDuck (BSD) and OSCam (GPL 3). See Server images.
BGPVR Player for Linux
Each release of BGPVR Player for Linux is published with the complete corresponding source of its LGPL libraries: bgpvr-player-linux-<version>-lgpl-sources.tar, next to the .deb and the AppImage on the GitHub releases page, with its SHA256 in that release's SHA256SUMS. For 1.9.6.3-9: bgpvr-player-linux-1.9.6.3-9-lgpl-sources.tar (62 MB, sha256 070f27d7e8dc572e5d6416a8b073e3ba80132675d2d1482415e9d761cfde2bf9).
It holds the exact upstream sources, our build scripts and configure lines, the source packages of the bundled Ubuntu libraries, and a README.txt with the steps to rebuild the libraries and to put your own build into /opt/bgpvr-player/lib (.deb) or into the AppImage. The app's licenses/NOTICE.txt lists every library, version and licence.
FFmpeg in BGPVR Player 1.8.8
The app's Media3 (ExoPlayer) engine uses FFmpeg to decode audio formats that the device cannot decode itself, for example AC-3, E-AC-3, DTS and Dolby TrueHD.
This decoder is one library, libffmpegJNI.so, built for three ABIs: arm64-v8a, armeabi-v7a and x86_64. It holds FFmpeg's libavcodec, libavutil and libswresample, linked statically, plus the JNI glue from androidx/media 1.7.1 (commit b732b2a0aa3c186edb75c5b3dadc810b849071e9). Nothing else is linked into it.
We build FFmpeg as LGPL only. Configure never gets --enable-gpl, --enable-nonfree or --enable-version3. For every ABI, FFmpeg's config.h reports FFMPEG_LICENSE "LGPL version 2.1 or later", CONFIG_GPL 0 and CONFIG_NONFREE 0.
Enabled decoders
Audio decoders only. --disable-everything turns every other component off.
aac, ac3, alac, amrnb, amrwb, dca, eac3, flac, mlp, mp3, opus, pcm_alaw, pcm_mulaw, truehd, vorbis. The mp3 decoder also decodes MPEG audio layers 1 and 2.
Configure flags per ABI
These are the configure arguments of each build, exactly as FFmpeg recorded them in config.h. $ANDROID_SDK stands for the Android SDK folder on our build machine.
arm64-v8a
--libdir=android-libs/arm64-v8a --arch=aarch64 --cpu=armv8-a --cross-prefix=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24- --nm=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm --ar=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar --ranlib=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib --strip=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --target-os=android --enable-static --disable-shared --disable-doc --disable-programs --disable-everything --disable-avdevice --disable-avformat --disable-swscale --disable-postproc --disable-avfilter --disable-symver --enable-swresample --extra-ldexeflags=-pie --disable-v4l2-m2m --disable-vulkan --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=flac --enable-decoder=alac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-decoder=mp3 --enable-decoder=amrnb --enable-decoder=amrwb --enable-decoder=aac --enable-decoder=ac3 --enable-decoder=eac3 --enable-decoder=dca --enable-decoder=mlp --enable-decoder=truehd
armeabi-v7a
--libdir=android-libs/armeabi-v7a --arch=arm --cpu=armv7-a --cross-prefix=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24- --extra-cflags='-march=armv7-a -mfloat-abi=softfp' --extra-ldflags='-Wl,--fix-cortex-a8' --nm=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm --ar=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar --ranlib=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib --strip=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --target-os=android --enable-static --disable-shared --disable-doc --disable-programs --disable-everything --disable-avdevice --disable-avformat --disable-swscale --disable-postproc --disable-avfilter --disable-symver --enable-swresample --extra-ldexeflags=-pie --disable-v4l2-m2m --disable-vulkan --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=flac --enable-decoder=alac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-decoder=mp3 --enable-decoder=amrnb --enable-decoder=amrwb --enable-decoder=aac --enable-decoder=ac3 --enable-decoder=eac3 --enable-decoder=dca --enable-decoder=mlp --enable-decoder=truehd
x86_64
--libdir=android-libs/x86_64 --arch=x86_64 --cpu=x86-64 --cross-prefix=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android24- --disable-asm --nm=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm --ar=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar --ranlib=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib --strip=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --target-os=android --enable-static --disable-shared --disable-doc --disable-programs --disable-everything --disable-avdevice --disable-avformat --disable-swscale --disable-postproc --disable-avfilter --disable-symver --enable-swresample --extra-ldexeflags=-pie --disable-v4l2-m2m --disable-vulkan --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=flac --enable-decoder=alac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-decoder=mp3 --enable-decoder=amrnb --enable-decoder=amrwb --enable-decoder=aac --enable-decoder=ac3 --enable-decoder=eac3 --enable-decoder=dca --enable-decoder=mlp --enable-decoder=truehd
Build it yourself
You need Linux x86_64, Android NDK 28.2.13676358 and CMake 3.22.1 from the Android SDK. The target is API level 24, the app's minimum.
- Download the archive below, unpack it and check it with
sha256sum -c SHA256SUMS. - Run
media3_ffmpeg/rebuild/build.sh, or follow the step-by-step commands inREADME.txt, which work offline. You get onelibffmpegJNI.soper ABI.
We ran the steps in README.txt on the published archive. The three libraries matched the ones in the app byte for byte, apart from the 20-byte build ID, which depends on the build folder.
Download the source code
- File:
bgpvr-player-1.8.8-ffmpeg-6.0.1-lgpl-source.tar.gz, 10,280,090 bytes - SHA-256:
6c897f8ade1d822f3cb197480413590157ff6890277efd9f7ecab80fb872b646 - Inside: FFmpeg 6.0.1 unchanged as
ffmpeg-6.0.1.tar.xz(SHA-2569b16b8731d78e596b4be0d720428ca42df642bb2d78342881ff7f5bc29fc9623), the JNI glue and Java sources of the decoder module, our build and check scripts, the configure record (LICENSE_PROOF.txt), both licence texts, andREADME.txtwith the build steps and how to put your library into the app. - Upstream: FFmpeg from ffmpeg.org, the module from github.com/androidx/media (tag 1.7.1, folder
libraries/decoder_ffmpeg).
libmpv in BGPVR Player 1.8.8
The app plays video with media_kit 1.2.6. Its native player is libmpv.so, shipped for arm64-v8a, armeabi-v7a and x86_64. It holds mpv and a second, separate FFmpeg build, linked statically.
We do not build this library. The package media_kit_libs_android_video 1.3.8, as pinned in the app's lock file, downloads the prebuilt libraries of release v1.1.7 of media-kit/libmpv-android-video-build (the "default" flavour) and checks their MD5 sums. The project's GitHub Actions workflow built that release from tag v1.1.7 (commit fe8c3ac1a91c09aa6fb1deccbc833f1bafa54768). The libmpv.so files in the app are byte for byte the ones in the release.
Versions
- Build scripts: media-kit/libmpv-android-video-build, tag v1.1.7.
- FFmpeg n6.0 (commit
ea3d24bbe3c58b171e55fe2151fc7ffaca3ab3d2), with two patches from the build scripts. Licence: LGPL 3 or later. - mpv at commit
78d43740f52db817d98bcf24fb30a76ab6fa13ff, which reports itself asv0.36.0-549-g78d43740f5, with one patch from the build scripts. Licence: LGPL 2.1 or later. - fribidi 1.0.12 (LGPL 2.1 or later), plus libass 0.17.1, FreeType 2.13.0, HarfBuzz 7.2.0, Mbed TLS 3.4.0, dav1d 1.2.0 and libxml2 2.10.3 under permissive licences.
Build settings
FFmpeg is configured with --disable-gpl, --disable-nonfree and --enable-version3, so it is LGPL version 3 or later. The library itself reports libavcodec license: LGPL version 3 or later. mpv is built with -Dgpl=false, so it is LGPL 2.1 or later. Taken together, libmpv.so is distributed under the LGPL version 3 or later.
The build scripts and flags as published upstream, at tag v1.1.7:
buildscripts/flavors/default.sh: FFmpeg's configure flagsbuildscripts/scripts/mpv.sh: mpv's build optionsbuildscripts/include/depinfo.sh: the version of every partbuildscripts/patches/: the patches to FFmpeg and mpv
The release was built with buildscripts/bundle_default.sh on GitHub's ubuntu-22.04 runner. README.txt in the archive below explains how to build from the archived sources. We have not rebuilt libmpv.so ourselves.
Download the source code
- File:
bgpvr-player-1.8.8-libmpv-v1.1.7-lgpl-source.tar.gz, 19,875,740 bytes - SHA-256:
0ea8e438b80cf8bde31927822ece83650f549141842b4f062b07864509a407e2 - Inside: the build scripts (tag v1.1.7), FFmpeg n6.0, mpv at commit 78d43740 and fribidi 1.0.12, each unchanged as GitHub's archive of that tag or commit. Also the LGPL 3 and GPL 3 texts,
SHA256SUMS, andREADME.txtwith the versions, build notes and how to put your library into the app. - Upstream: github.com/media-kit/libmpv-android-video-build (tag v1.1.7), github.com/FFmpeg/FFmpeg (tag n6.0), github.com/mpv-player/mpv (commit 78d43740), github.com/fribidi/fribidi (tag v1.0.12).
BGPVR Player 1.8.9.1 to 1.9.8
The same two libraries, as described in the list at the top. Each archive has a README.txt with the exact library files it covers (their SHA-256), the build steps and how to put your own build into the app.
FFmpeg audio and MPEG-2 decoder, BGPVR Player 1.8.9.1 to 1.9.8
- File:
bgpvr-player-1.8.9.1-1.9.8-ffmpeg-6.0.1-lgpl-source.tar.gz, 10,293,888 bytes - SHA-256:
48473a40f591cee09c9cc5941581063bd231123050032f6a9c205f9a81b83b8c - For:
libffmpegJNI.soin BGPVR Player for Android 1.8.9.1 (version code 2365) to 1.9.8 (version code 2408). FFmpeg 6.0.1 (LGPL 2.1 or later), the JNI glue of androidx/media 1.7.1 and our MPEG-2 video glue (Apache 2.0).
libmpv with the deinterlace filters, BGPVR Player 1.9.3 to 1.9.8
- File:
bgpvr-player-1.9.3-1.9.8-libmpv-v1.1.7-deint-lgpl-source.tar.gz, 67,375,099 bytes - SHA-256:
c616b93d3212a286b5d309559badca378d8f9a42784458d534c1f31badc316ab - For:
libmpv.soin BGPVR Player for Android 1.9.3 (version code 2379) to 1.9.8 (version code 2408). Our arm64-v8a and armeabi-v7a build of media-kit/libmpv-android-video-build v1.1.7 with FFmpeg's bwdif, yadif and scale filters switched on, and the unchanged upstream x86_64 library. mpv, FFmpeg n6.0 and fribidi (LGPL 3 or later as a whole), with every other library it links.
Licences
The FFmpeg audio decoder (libffmpegJNI.so) is licensed under the GNU Lesser General Public License, version 2.1 or later. Read the LGPL 2.1 text.
The androidx/media decoder module is licensed under the Apache License 2.0. Read the Apache 2.0 text.
libmpv.so is distributed under the GNU Lesser General Public License, version 3 or later. Read the LGPL 3 text and the GPL 3 text it builds on. mpv and fribidi are LGPL 2.1 or later; their licence files are in their archives. The build scripts are under the MIT licence.
BGPVR Player for Linux: libmpv, FFmpeg, libplacebo and libdisplay-info are licensed under the GNU Lesser General Public License, version 2.1 or later (the LGPL 2.1 text). The same rights apply: the source of each release sits next to it on GitHub, and README.txt in that archive shows how to put your own build of these libraries into /opt/bgpvr-player/lib or into the AppImage.
The open-source licences screen in the app lists the other open-source packages in BGPVR Player.
Your right to change or replace the library
The LGPL lets you change FFmpeg and mpv and use your changed versions with BGPVR Player. The app loads libffmpegJNI.so by name and calls it only through the JNI functions in ffmpeg_jni.cc, so a library you build from this source can replace ours.
To replace it, put your library into the APK at lib/<abi>/libffmpegJNI.so, align the APK and sign it with your own key. README.txt gives the commands, also for the split APKs that Google Play installs. Android will not install a copy signed with another key over ours, so uninstall the app first.
The same works for libmpv. media_kit loads libmpv.so by name and calls it only through mpv's public C API (libmpv/client.h), so a library you build from its source can replace ours. Put it into the APK at lib/<abi>/libmpv.so the same way; the libmpv archive's README.txt gives the commands.
You may also reverse-engineer the app as far as you need to debug such changes. This right comes from the LGPL, and section 5 of our Terms of Service says so too.
Server images
Operators install the BGPVR suite as Docker images: the suite (ghcr.io/bgpvr/bgpvr), the AI service (ghcr.io/bgpvr/bgpvr-ai) and the node (ghcr.io/bgpvr/bgpvr-node). Next to our own software, which is not open source, they carry separate open-source programs. BGPVR starts them as their own processes, and each keeps its own licence. Every image lists them, with the exact versions it was built with, in /usr/share/doc/bgpvr/THIRD_PARTY.txt.
- FFmpeg, Debian package
ffmpeg(suite, AI service and node): GNU GPL version 2 or later, because Debian builds it with--enable-gpl. - DVBlast, Debian package
dvblast(suite and node): GNU GPL version 2 or later. - libdvbcsa, Debian package
libdvbcsa1(suite): GNU GPL version 2 or later. - TSDuck 3.43-4549, the TSDuck project's own package for Debian 13 (suite): BSD 2-Clause. The build checks the package against its SHA-256. Source: github.com/tsduck/tsduck, tag v3.43-4549.
- OSCam (suite): GNU GPL version 3. Since suite 2.9.494 it is built unchanged from one fixed commit of git.streamboard.tv/common/oscam.git, now
39e78a4688b30abaab62b5c9e13672b4e34bfca0(OSCam 2.26.09-11968). The image carries the complete source of that commit as/usr/share/doc/bgpvr/oscam-<commit>-source.tar.gz, and its labelorg.bgpvr.oscam.commitnames the commit.
The suite and AI images are built on Debian 13 (trixie), the node image on Debian 11 (bullseye). The source packages of the GPL programs above are ffmpeg, dvblast and libdvbcsa; dpkg-query -W in the image gives the exact version of each, as of every other Debian package in it. Get a source package with apt-get source <package>=<version>, or from sources.debian.org and snapshot.debian.org.
Written offer for the server images: for at least three years after we last distribute a version of these images, we will give anyone who asks the complete corresponding source code of the GPL and LGPL programs in it, including the Debian source packages and the OSCam source above. A download is free. On a physical medium we charge no more than our cost of copying and posting it. Write to support@bgpvr.com and name the image and its version.
Written offer
For at least three years after we last distribute BGPVR Player 1.8.8, we will give anyone who asks the complete source code of the two FFmpeg-based libraries in it, the audio decoder and libmpv: the same files as in the archives above. A download is free. On a physical medium we charge no more than our cost of copying and posting it. Write to support@bgpvr.com and name the product and version. The same offer covers BGPVR Player for Android 1.8.9 to 1.9.8 and the archives above for those versions.
Компоненти с отворен код
Последна актуализация: 9 ноември 2026 г.
Някои продукти на BGPVR съдържат софтуер с отворен код. За всяка част, чийто лиценз изисква да публикуваме или предложим изходния ѝ код, тук посочваме точната версия, как я изграждаме и откъде да изтеглите кода. Архивите с изходен код по-долу са за BGPVR Player за Android от 1.8.8 до 1.9.8. В приложението FFmpeg има на две места: в аудио декодера и в libmpv, видео плейъра на приложението. Добавяме още части и версии на продукти, когато публикуваме изходния им код.
Продукти и частите с отворен код в тях
- BGPVR Player 1.8.8 за Android (код на версията 2363): FFmpeg 6.0.1 като аудио декодер (LGPL 2.1 или по-нова) заедно с FFmpeg декодерния модул на AndroidX Media3 1.7.1 (Apache 2.0); и libmpv, видео плейърът на media_kit, с mpv и FFmpeg n6.0 (LGPL 3 или по-нова).
- BGPVR Player за Android след 1.8.8 (1.8.9 и 1.9.x): същите FFmpeg 6.0.1 и Media3 1.7.1 в библиотеката на аудио декодера, която в тези версии декодира и MPEG-2 видео и съдържа наш собствен свързващ код за това (Apache 2.0); и libmpv както в 1.8.8, с тази разлика, че от 1.9.3 libmpv за ARM устройства (arm64-v8a и armeabi-v7a) е наша компилация на същата версия v1.1.7 с още три включени филтъра на FFmpeg (bwdif, yadif и scale; пак LGPL 3 или по-нова, без части под GPL). Изходният им код е в BGPVR Player от 1.8.9.1 до 1.9.8 по-долу. Във версия 1.8.9 FFmpeg е още само аудио декодерът от 1.8.8, а от 1.8.9 до 1.9.2.6 libmpv е тази от 1.8.8: изходният им код е в архивите за 1.8.8.
- BGPVR Player за iPhone и iPad, 1.8.5 и по-нови: libmpv от media_kit (пакетът media_kit_libs_ios_video 1.1.4, който използва без промени библиотеките на media-kit/libmpv-darwin-build v0.6.0), с mpv 0.36 (LGPL 2.1 или по-нова) и FFmpeg 6.0 (LGPL 3 или по-нова), всяка като отделна динамична библиотека (framework) в приложението; FriBidi (LGPL 2.1 или по-нова) и uchardet (MPL 1.1); както и libass, dav1d, FreeType, HarfBuzz, libpng, libxml2 и Mbed TLS под разрешителни лицензи. Изходният код и скриптовете за компилиране са на този адрес, на ffmpeg.org и на github.com/mpv-player/mpv; останалото е изброено в екрана с лицензи с отворен код в приложението.
- Добавки BGPVR за Kodi: BGPVR Setup (service.bgpvr.setup) 1.2.0, BGPVR Live TV (plugin.video.bgpvr) 1.1.3 и BGPVR Buffering Fix (script.bgpvr.advancedsettings) 1.0.0. Наш собствен код под лиценза MIT, без чужд код в него (QR кодът на екрана за вход се рисува от наш код). Работят в Kodi (GPL 2.0 или по-нова) и настройват собствените телевизионни клиенти на Kodi, които Kodi инсталира от официалното си хранилище; ние не разпространяваме нито едното, нито другото.
- Уеб плейър, приложения за смарт телевизори и MAG портал, които сървърът BGPVR предоставя: video.js 8.10.0 с vtt.js, @videojs/http-streaming 3.10.0, m3u8-parser 7.1.0, mpd-parser 1.3.0, aes-decrypter 4.0.1, pkcs7 1.0.4 и videojs-contrib-quality-levels 4.0.0 (всички под Apache 2.0); hls.js 1.5.15 (Apache 2.0); qrcodejs 1.0.0 (MIT), който използва и MAG порталът; Font Awesome Free 6.5.0 (иконите под CC BY 4.0, шрифтовете под SIL OFL 1.1, кодът под MIT); и шрифтовете Inter и Rubik (SIL OFL 1.1), които използва и този сайт. Приложението за LG webOS носи същите файлове; приложенията за Samsung Tizen и VIDAA отварят уеб плейъра от сървъра на оператора. Нито един от тези лицензи не изисква изходният код да се публикува или предлага.
- BGPVR Player за Linux 1.9.6.3-9 и по-нови: libmpv (mpv 0.41.0), FFmpeg 8.1.3, libplacebo и libdisplay-info, всички под LGPL 2.1 или по-нова, и библиотеките от Ubuntu 22.04, които приложението носи. Вижте BGPVR Player за Linux.
- Сървърните образи на BGPVR, които операторите инсталират с Docker (сървърът, AI услугата и възелът): FFmpeg, DVBlast и libdvbcsa (GPL 2 или по-нова), TSDuck (BSD) и OSCam (GPL 3). Вижте Сървърни образи.
BGPVR Player за Linux
Всяка версия на BGPVR Player за Linux се публикува с пълния съответстващ изходен код на LGPL библиотеките в нея: bgpvr-player-linux-<версия>-lgpl-sources.tar, до .deb и AppImage на страницата с версиите в GitHub, а SHA256 сумата му е в SHA256SUMS на същата версия. За 1.9.6.3-9: bgpvr-player-linux-1.9.6.3-9-lgpl-sources.tar (62 MB, sha256 070f27d7e8dc572e5d6416a8b073e3ba80132675d2d1482415e9d761cfde2bf9).
В него са точните изходни кодове от авторите, нашите скриптове и настройки за компилиране, изходните пакети на включените библиотеки от Ubuntu и README.txt със стъпките да компилирате библиотеките отново и да поставите своя версия в /opt/bgpvr-player/lib (.deb) или в AppImage. Файлът licenses/NOTICE.txt в приложението изброява всяка библиотека, версия и лиценз.
FFmpeg в BGPVR Player 1.8.8
Плейърът Media3 (ExoPlayer) в приложението използва FFmpeg, за да декодира аудио формати, които устройството не може да декодира само, например AC-3, E-AC-3, DTS и Dolby TrueHD.
Този декодер е една библиотека, libffmpegJNI.so, изградена за три ABI: arm64-v8a, armeabi-v7a и x86_64. В нея са libavcodec, libavutil и libswresample на FFmpeg, свързани статично, и JNI слоят от androidx/media 1.7.1 (commit b732b2a0aa3c186edb75c5b3dadc810b849071e9). Нищо друго не е свързано в нея.
Изграждаме FFmpeg само под LGPL. Configure никога не получава --enable-gpl, --enable-nonfree или --enable-version3. За всеки ABI файлът config.h на FFmpeg показва FFMPEG_LICENSE "LGPL version 2.1 or later", CONFIG_GPL 0 и CONFIG_NONFREE 0.
Включени декодери
Само аудио декодери. --disable-everything изключва всички останали компоненти.
aac, ac3, alac, amrnb, amrwb, dca, eac3, flac, mlp, mp3, opus, pcm_alaw, pcm_mulaw, truehd, vorbis. Декодерът mp3 декодира и MPEG аудио слой 1 и 2.
Флагове на configure за всеки ABI
Това са аргументите на configure за всяка компилация, точно както FFmpeg ги е записал в config.h. $ANDROID_SDK означава папката на Android SDK на нашата машина за компилиране.
arm64-v8a
--libdir=android-libs/arm64-v8a --arch=aarch64 --cpu=armv8-a --cross-prefix=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24- --nm=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm --ar=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar --ranlib=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib --strip=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --target-os=android --enable-static --disable-shared --disable-doc --disable-programs --disable-everything --disable-avdevice --disable-avformat --disable-swscale --disable-postproc --disable-avfilter --disable-symver --enable-swresample --extra-ldexeflags=-pie --disable-v4l2-m2m --disable-vulkan --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=flac --enable-decoder=alac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-decoder=mp3 --enable-decoder=amrnb --enable-decoder=amrwb --enable-decoder=aac --enable-decoder=ac3 --enable-decoder=eac3 --enable-decoder=dca --enable-decoder=mlp --enable-decoder=truehd
armeabi-v7a
--libdir=android-libs/armeabi-v7a --arch=arm --cpu=armv7-a --cross-prefix=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24- --extra-cflags='-march=armv7-a -mfloat-abi=softfp' --extra-ldflags='-Wl,--fix-cortex-a8' --nm=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm --ar=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar --ranlib=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib --strip=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --target-os=android --enable-static --disable-shared --disable-doc --disable-programs --disable-everything --disable-avdevice --disable-avformat --disable-swscale --disable-postproc --disable-avfilter --disable-symver --enable-swresample --extra-ldexeflags=-pie --disable-v4l2-m2m --disable-vulkan --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=flac --enable-decoder=alac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-decoder=mp3 --enable-decoder=amrnb --enable-decoder=amrwb --enable-decoder=aac --enable-decoder=ac3 --enable-decoder=eac3 --enable-decoder=dca --enable-decoder=mlp --enable-decoder=truehd
x86_64
--libdir=android-libs/x86_64 --arch=x86_64 --cpu=x86-64 --cross-prefix=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android24- --disable-asm --nm=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-nm --ar=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar --ranlib=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib --strip=$ANDROID_SDK/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --target-os=android --enable-static --disable-shared --disable-doc --disable-programs --disable-everything --disable-avdevice --disable-avformat --disable-swscale --disable-postproc --disable-avfilter --disable-symver --enable-swresample --extra-ldexeflags=-pie --disable-v4l2-m2m --disable-vulkan --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=flac --enable-decoder=alac --enable-decoder=pcm_mulaw --enable-decoder=pcm_alaw --enable-decoder=mp3 --enable-decoder=amrnb --enable-decoder=amrwb --enable-decoder=aac --enable-decoder=ac3 --enable-decoder=eac3 --enable-decoder=dca --enable-decoder=mlp --enable-decoder=truehd
Изградете библиотеката сами
Нужни са Linux x86_64, Android NDK 28.2.13676358 и CMake 3.22.1 от Android SDK. Целевото API ниво е 24, минималното за приложението.
- Изтеглете архива по-долу, разархивирайте го и го проверете с
sha256sum -c SHA256SUMS. - Стартирайте
media3_ffmpeg/rebuild/build.shили следвайте командите стъпка по стъпка вREADME.txt, които работят без интернет. Получавате по единlibffmpegJNI.soза всеки ABI.
Изпълнихме стъпките от README.txt върху публикувания архив. Трите библиотеки съвпаднаха байт по байт с тези в приложението, с изключение на 20-байтовия build ID, който зависи от папката на компилацията.
Изтеглете изходния код
- Файл:
bgpvr-player-1.8.8-ffmpeg-6.0.1-lgpl-source.tar.gz, 10 280 090 байта - SHA-256:
6c897f8ade1d822f3cb197480413590157ff6890277efd9f7ecab80fb872b646 - Съдържание: FFmpeg 6.0.1 без промени като
ffmpeg-6.0.1.tar.xz(SHA-2569b16b8731d78e596b4be0d720428ca42df642bb2d78342881ff7f5bc29fc9623), JNI слоят и Java кодът на декодерния модул, нашите скриптове за компилиране и проверка, записът на configure (LICENSE_PROOF.txt), текстовете на двата лиценза иREADME.txtсъс стъпките за компилиране и за поставяне на ваша библиотека в приложението (на английски). - Оригинални източници: FFmpeg от ffmpeg.org, модулът от github.com/androidx/media (tag 1.7.1, папка
libraries/decoder_ffmpeg).
libmpv в BGPVR Player 1.8.8
Приложението възпроизвежда видео с media_kit 1.2.6. Неговият плейър е libmpv.so, включен за arm64-v8a, armeabi-v7a и x86_64. В него са mpv и втора, отделна компилация на FFmpeg, свързани статично.
Тази библиотека не я изграждаме ние. Пакетът media_kit_libs_android_video 1.3.8, фиксиран в lock файла на приложението, изтегля готовите библиотеки от издание v1.1.7 на media-kit/libmpv-android-video-build (вариант „default“) и проверява MD5 сумите им. Работният процес в GitHub Actions на проекта е изградил това издание от tag v1.1.7 (commit fe8c3ac1a91c09aa6fb1deccbc833f1bafa54768). Файловете libmpv.so в приложението съвпадат байт по байт с тези от изданието.
Версии
- Скриптове за компилиране: media-kit/libmpv-android-video-build, tag v1.1.7.
- FFmpeg n6.0 (commit
ea3d24bbe3c58b171e55fe2151fc7ffaca3ab3d2) с две корекции (patches) от скриптовете за компилиране. Лиценз: LGPL 3 или по-нова. - mpv на commit
78d43740f52db817d98bcf24fb30a76ab6fa13ff, който се отчита катоv0.36.0-549-g78d43740f5, с една корекция от скриптовете. Лиценз: LGPL 2.1 или по-нова. - fribidi 1.0.12 (LGPL 2.1 или по-нова), както и libass 0.17.1, FreeType 2.13.0, HarfBuzz 7.2.0, Mbed TLS 3.4.0, dav1d 1.2.0 и libxml2 2.10.3 под пермисивни лицензи.
Настройки на компилацията
FFmpeg се конфигурира с --disable-gpl, --disable-nonfree и --enable-version3, затова е под LGPL версия 3 или по-нова. Самата библиотека показва libavcodec license: LGPL version 3 or later. mpv се изгражда с -Dgpl=false, затова е под LGPL 2.1 или по-нова. Като цяло libmpv.so се разпространява под LGPL версия 3 или по-нова.
Скриптовете и флаговете, както са публикувани от авторите, при tag v1.1.7:
buildscripts/flavors/default.sh: флаговете на configure за FFmpegbuildscripts/scripts/mpv.sh: настройките на компилацията на mpvbuildscripts/include/depinfo.sh: версията на всяка частbuildscripts/patches/: корекциите във FFmpeg и mpv
Изданието е изградено с buildscripts/bundle_default.sh в средата ubuntu-22.04 на GitHub. README.txt в архива по-долу обяснява как да изградите библиотеката от архивирания код (на английски). Ние не сме изграждали libmpv.so сами.
Изтеглете изходния код
- Файл:
bgpvr-player-1.8.8-libmpv-v1.1.7-lgpl-source.tar.gz, 19 875 740 байта - SHA-256:
0ea8e438b80cf8bde31927822ece83650f549141842b4f062b07864509a407e2 - Съдържание: скриптовете за компилиране (tag v1.1.7), FFmpeg n6.0, mpv на commit 78d43740 и fribidi 1.0.12, всички без промени, във вида на архивите на GitHub за съответния tag или commit. Също текстовете на LGPL 3 и GPL 3,
SHA256SUMSиREADME.txtс версиите, бележки за компилирането и за поставяне на ваша библиотека в приложението (на английски). - Оригинални източници: github.com/media-kit/libmpv-android-video-build (tag v1.1.7), github.com/FFmpeg/FFmpeg (tag n6.0), github.com/mpv-player/mpv (commit 78d43740), github.com/fribidi/fribidi (tag v1.0.12).
BGPVR Player от 1.8.9.1 до 1.9.8
Същите две библиотеки, описани в списъка в началото. Всеки архив съдържа README.txt с точните файлове на библиотеките, за които се отнася (със SHA-256), стъпките за компилиране и как да поставите своя компилация в приложението (на английски).
FFmpeg, аудио и MPEG-2 декодер, BGPVR Player от 1.8.9.1 до 1.9.8
- Файл:
bgpvr-player-1.8.9.1-1.9.8-ffmpeg-6.0.1-lgpl-source.tar.gz, 10 293 888 байта - SHA-256:
48473a40f591cee09c9cc5941581063bd231123050032f6a9c205f9a81b83b8c - За:
libffmpegJNI.soв BGPVR Player за Android от 1.8.9.1 (код на версията 2365) до 1.9.8 (код на версията 2408). FFmpeg 6.0.1 (LGPL 2.1 или по-нова), JNI слоят на androidx/media 1.7.1 и нашият слой за MPEG-2 видео (Apache 2.0).
libmpv с филтрите за премахване на презредовост, BGPVR Player от 1.9.3 до 1.9.8
- Файл:
bgpvr-player-1.9.3-1.9.8-libmpv-v1.1.7-deint-lgpl-source.tar.gz, 67 375 099 байта - SHA-256:
c616b93d3212a286b5d309559badca378d8f9a42784458d534c1f31badc316ab - За:
libmpv.soв BGPVR Player за Android от 1.9.3 (код на версията 2379) до 1.9.8 (код на версията 2408). Нашата компилация за arm64-v8a и armeabi-v7a на media-kit/libmpv-android-video-build v1.1.7 с включени филтри bwdif, yadif и scale на FFmpeg и непроменената оригинална библиотека за x86_64. mpv, FFmpeg n6.0 и fribidi (като цяло LGPL 3 или по-нова), заедно с всички други библиотеки, с които е свързана.
Лицензи
Аудио декодерът с FFmpeg (libffmpegJNI.so) се разпространява под GNU Lesser General Public License, версия 2.1 или по-нова. Прочетете текста на LGPL 2.1 (на английски).
Декодерният модул на androidx/media се разпространява под Apache License 2.0. Прочетете текста на Apache 2.0 (на английски).
libmpv.so се разпространява под GNU Lesser General Public License, версия 3 или по-нова. Прочетете текста на LGPL 3 и текста на GPL 3, върху който се основава (на английски). mpv и fribidi са под LGPL 2.1 или по-нова; лицензните им файлове са в архивите им. Скриптовете за компилиране са под лиценза MIT.
BGPVR Player за Linux: libmpv, FFmpeg, libplacebo и libdisplay-info се разпространяват под GNU Lesser General Public License, версия 2.1 или по-нова (текстът на LGPL 2.1). Важат същите права: изходният код на всяка версия е до нея в GitHub, а README.txt в архива показва как да сложите своя компилация на тези библиотеки в /opt/bgpvr-player/lib или в AppImage.
Екранът с лицензи с отворен код в приложението изброява останалите пакети с отворен код в BGPVR Player.
Правото ви да промените или замените библиотеката
LGPL ви позволява да променяте FFmpeg и mpv и да използвате променените версии с BGPVR Player. Приложението зарежда libffmpegJNI.so по име и я извиква само чрез JNI функциите в ffmpeg_jni.cc, затова библиотека, изградена от този код, може да замени нашата.
За да я замените, поставете своята библиотека в APK файла като lib/<abi>/libffmpegJNI.so, подравнете APK файла и го подпишете със собствен ключ. Командите са в README.txt, включително за разделените APK файлове (split APK), които инсталира Google Play. Android не инсталира копие с друг подпис върху нашето, затова първо деинсталирайте приложението.
Същото важи и за libmpv. media_kit зарежда libmpv.so по име и я извиква само чрез публичния C API на mpv (libmpv/client.h), затова библиотека, изградена от нейния код, може да замени нашата. Поставете я в APK файла като lib/<abi>/libmpv.so по същия начин; командите са в README.txt на архива за libmpv.
Можете също да прилагате обратно инженерство върху приложението, доколкото е нужно, за да отстранявате грешки в такива промени. Това право идва от LGPL и раздел 5 от нашите Общи условия го потвърждава.
Сървърни образи
Операторите инсталират BGPVR като Docker образи: сървъра (ghcr.io/bgpvr/bgpvr), AI услугата (ghcr.io/bgpvr/bgpvr-ai) и възела (ghcr.io/bgpvr/bgpvr-node). Освен нашия софтуер, който не е с отворен код, те съдържат отделни програми с отворен код. BGPVR ги стартира като самостоятелни процеси и всяка запазва своя лиценз. Всеки образ ги изброява, с точните версии, с които е изграден, в /usr/share/doc/bgpvr/THIRD_PARTY.txt.
- FFmpeg, пакет
ffmpegна Debian (сървърът, AI услугата и възелът): GNU GPL версия 2 или по-нова, защото Debian го изгражда с--enable-gpl. - DVBlast, пакет
dvblastна Debian (сървърът и възелът): GNU GPL версия 2 или по-нова. - libdvbcsa, пакет
libdvbcsa1на Debian (сървърът): GNU GPL версия 2 или по-нова. - TSDuck 3.43-4549, собственият пакет за Debian 13 на проекта TSDuck (сървърът): BSD 2-Clause. При изграждането пакетът се проверява по SHA-256. Изходен код: github.com/tsduck/tsduck, таг v3.43-4549.
- OSCam (сървърът): GNU GPL версия 3. От версия 2.9.494 на сървъра се изгражда без промени от един фиксиран commit на git.streamboard.tv/common/oscam.git, сега
39e78a4688b30abaab62b5c9e13672b4e34bfca0(OSCam 2.26.09-11968). Образът съдържа пълния изходен код на този commit като/usr/share/doc/bgpvr/oscam-<commit>-source.tar.gz, а етикетът муorg.bgpvr.oscam.commitпосочва commit-а.
Образите на сървъра и на AI услугата са изградени върху Debian 13 (trixie), а образът на възела – върху Debian 11 (bullseye). Пакетите с изходен код на горните GPL програми са ffmpeg, dvblast и libdvbcsa; dpkg-query -W в образа показва точната версия на всеки от тях, както и на всеки друг пакет на Debian в него. Изтеглете пакет с изходен код с apt-get source <пакет>=<версия> или от sources.debian.org и snapshot.debian.org.
Писмено предложение за сървърните образи: поне три години след последното разпространение на дадена версия на тези образи ще предоставим на всеки, който поиска, пълния съответстващ изходен код на GPL и LGPL програмите в нея, включително пакетите с изходен код на Debian и изходния код на OSCam по-горе. Изтеглянето е безплатно. На физически носител взимаме не повече от разходите си за копиране и пощенско изпращане. Пишете на support@bgpvr.com и посочете образа и версията му.
Писмено предложение
Поне три години след последното разпространение на BGPVR Player 1.8.8 ще предоставим на всеки, който поиска, пълния изходен код на двете библиотеки с FFmpeg в него, аудио декодера и libmpv: същите файлове като в архивите по-горе. Изтеглянето е безплатно. На физически носител взимаме не повече от разходите си за копиране и пощенско изпращане. Пишете на support@bgpvr.com и посочете продукта и версията. Същото предложение важи за BGPVR Player за Android от 1.8.9 до 1.9.8 и архивите по-горе за тези версии.