NOVA is an open source video player for Android

Overview

NOVA: opeN sOurce Video plAyer

Reddit Nova Community API Open Source Love License Crowdin Get it on Google Play Get it on Amazon Appstore Get it on F-Droid Chat on irc Github Downloads Build status Donate

Overview

NOVA is an open source video player for Android. It consists in a fork of the original Archos Video Player Community Edition that is hosted here: https://github.com/archos-sa/aos-AVP intended to support new features.

This is the entry point repo. It purpose is to provide the manifest to fetch all needed git repos with sources and then bootstrap the build environment.

More interesting sources can be found there:

For the full list, please look at this manifest https://github.com/nova-video-player/aos-AVP/default.xml

Building

Get the repo tool (https://source.android.com/source/downloading), then type:

mkdir aos; cd aos
repo init -u https://github.com/nova-video-player/aos-AVP -b nova
repo sync -j4
repo forall -c 'git checkout -t $REPO_REMOTE/$REPO_RREV'
make

Alternatively for those not under Linux with a properly installed Android SDK/NDK, you can launch the video player build through:

cd Video
./gradlew -Puniversal assembleNoamazonRelease

Note that build is performed on local git clone of ffmpeg and dav1d repos and in order to trigger full update rebuild, you need in case of version upstep to manually do:

cd native/dav1d-android-builder; git clean -fdx; cd ..
cd native/ffmpeg-android-builder; git clean -fdx; cd ..

Note that the following packages are required to build:

sudo curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo
sudo chmod a+x /usr/local/bin/repo
sudo apt install build-essential wget curl unzip openjdk-8-jdk python git pkg-config meson nasm

Recent enough versions of nasm (≥2.13) and meson (≥0.47) are now required for buildinf ffmpeg/dav1d. Nasm can be installed with:

wget http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
tar xjvf nasm-2.14.02.tar.bz2
cd nasm-2.14.02
./autogen.sh
PATH="$HOME/bin:$PATH" ./configure
PATH="$HOME/bin:$PATH" make
sudo make install

Latest meson can be installed via:

sudo apt install -y pkg-config python3 python3-pip python3-setuptools ninja-build
sudo pip3 install --upgrade pip
pip3 install --user meson==0.53.2

Alternatively you can use the provided docker image to build nova:

cd nova/AVP/docker
docker build -t nova .
docker run --rm -ti --entrypoint=/bin/bash nova
make

Travis-ci build configuration file is also provided here: https://github.com/nova-video-player/aos-Fdroid/blob/master/.travis.yml

Binaries prebuilt of torrentd, ffmpeg, dav1d have been committed in order to reduce compilation time and remove nasm, meson depedencies. If you need to regenerate torrentd, ffmpeg and dav1d libs, please run make clean_prebuilt.

Latest stable apk

The compiled application is available for installation on Google Play: https://play.google.com/store/apps/details?id=org.courville.nova

Get it on Google Play

or on Amazon Appstore: https://www.amazon.fr/dp/B07P1Q1DG9

Get it on Amazon Appstore

or on F-Droid https://f-droid.org/packages/org.courville.nova

Get it on F-Droid

or on Huawei AppGallery https://appgallery.huawei.com/#/app/C102811509

Get it on Huawei AppGallery

Releases are also published on github: https://github.com/nova-video-player/aos-AVP/releases

Scraping and Scrobbling

Scraping and scrobbling features rely on external services such as TMDb (https://www.themoviedb.org/), TheTVDB (http://thetvdb.com/) and Trakt (https://trakt.tv).

In order to enable NOVA video player to perform these tasks you need to register to this services and enable the API and inject the corresponding keys inside the following files: MediaLib/src/community/res/values/donottranslate.xml replacing the fake values below:

0123456789ABCDEF 0123456789abcdef0123456789abcdef 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef ">
    xml version="1.0" encoding="utf-8"?>
    <resources xmlns:android="http://schemas.android.com/apk/res/android">
        <string name="tvdb_api_key">0123456789ABCDEFstring>
        <string name="tmdb_api_key">0123456789abcdef0123456789abcdefstring>
        <string name="trakt_api_key">0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdefstring>
        <string name="trakt_api_secret">0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdefstring>
    resources>

Please note that enabling TheTVDB API registration can be completed following this link: https://www.thetvdb.com/?tab=apiregister

To create a Trakt api, first register to trakt then add a new app https://trakt.tv/oauth/applications

Redirect URI should be http://localhost and be aware to grant all permissions.

Localization

You are welcome to contribute to the translation of the application at https://crowdin.com/project/nova-video-player

Donate

Any contribution to show your gratitude and appreciation is always welcome keeping the small team of developers working on their personal time motivated and aware that their dedication means something.

Three main platforms are proposed for that purpose: liberapay, github sponsor and opencollective.

Funds collected are essentially used to buy devices on which problems are reported for analysis and fix in order to cope with Android fragmentation.

Please bare in mind that the work carried out here results from a small community effort done with good will on scarce personal time. If need be, we might in the future introduce some extra bounty programs for specific feature development requests.

Support community and chat room

NovaVideoPlayer reddit community community is used as the support community for the Nova Video Player application. It is possible to chat with Nova Video Player developers on #novavideoplayer freenode IRC channel (https://webchat.freenode.net).

Comments
  • [Bug]: 6.0.75 makes video stutters / no smooth playback anymore

    [Bug]: 6.0.75 makes video stutters / no smooth playback anymore

    Problem description

    All my movies slightly stutters since 6.0.75 Google Play Release

    Steps to reproduce the issue

    Play any movie and see how it's not smooth

    Expected behavior

    Videos should play normally, as they did till 6.0.74

    Your phone/tablet/androidTV model

    Freebox Pop

    Operating system version

    Android 10 (beta)

    Application version and app store

    6.0.75 Google Play

    Additional system information

    Maybe due to the new and experimental playback functionnality

    Debug logs

    No response

    bug blocker 
    opened by mitch133 53
  • [Bug]:

    [Bug]: "Filecorelibrary" NDK build failure

    Problem description

    I tried building on Linux it gives this error "Filecorelibrary" NDK build , I also tried on windows using Docker gives me the same error , I appreciate if you could help me out here.

    Steps to reproduce the issue

    Building nova using linux or windows

    Expected behavior

    successful build

    Your phone/tablet/androidTV model

    LG V50 Thinq

    Operating system version

    Android 10

    Application version and app store

    No response

    Additional system information

    No response

    Debug logs

    No response

    bug 
    opened by bronnel 40
  • Latest version very slow even on 1080p

    Latest version very slow even on 1080p

    The latest version is very slow - skipping frames even on 1080p files, 4K unplayable. Last relatively usable version was 3.2...everything newer is very slow. I installed ARCHOS again for comparison and it is way faster even than 3.2. MX Player has a NEON hardware accelerator plugin for FFMPEG I do not know if you can't use it too: https://forum.xda-developers.com/apps/mx-player/mx-player-custom-codec-dts-support-t2156254

    I am sorry if I am annoying, but if playback is slow (unusable) then all other features are just useless.

    opened by JJD2K 38
  • Trakt connection not possible - no internet connection

    Trakt connection not possible - no internet connection

    Nova isn't able to sign into Trakt. The white window starts to open, then nova states "no internet connection".

    I clear cache, data, reinstalled. Different phone. No luck.

    Using latest beta.

    opened by Textator 36
  • [Bug]: Scraping does not work on latest build (v6.0.39)

    [Bug]: Scraping does not work on latest build (v6.0.39)

    Problem description

    Media scraping is not working in the latest builds AutoScrapeService is not launching

    Steps to reproduce the issue

    just launching the app and waiting for videos to be added , nothing will be added to the library

    Expected behavior

    No response

    Your phone/tablet/androidTV model

    LG V50

    Operating system version

    Android 10

    Application version and app store

    v6.0.39

    Additional system information

    this is an ongoing issue since v6.0.37

    Debug logs

    D/com.archos.mediascraper.AutoScrapeService: [Binder:25995_2] DEBUG c.a.mediascraper.AutoScrapeService - registerObserver: onChange getting 0 videos not yet scraped -> not launching service!

    bug blocker 
    opened by bronnel 29
  • Add support for  SMBv2 and SMBv3 and not only SMBv1

    Add support for SMBv2 and SMBv3 and not only SMBv1

    Since most of the OS are deactivating SMBv1, switching from jcifs to jcifs-ng is the identified way to go. There is some work started in trying to get SMB2+ (not yet functional) here: https://github.com/nnoury in devSmb branches.

    enhancement 
    opened by courville 29
  • 6.0.11 crashes immediately upon start on 2019 Shield Pro

    6.0.11 crashes immediately upon start on 2019 Shield Pro

    Just an FYI- I know it’s not a public release but it crashes every time.

    6.0.10 exhibited similar behavior if you set it to scan library for new content on launch.

    bug blocker 
    opened by HDGuy 25
  • Version 4.49.1-20200704.1437 crashes out on Sony Android TV

    Version 4.49.1-20200704.1437 crashes out on Sony Android TV

    I've replicated this issue on two different Sony Android TVs containing Android 8. No system updates of any note just prior to the bug occurring. The incidence happened following the install of 4.49.1-20200704.1437 on about 6 July.

    The app crashes out randomly, back to the home screen. A restart of the whole TV will let you re-open Nova and browse the content (on an SMB server on the LAN), and you can open any movie or TV episode up to the description. When it goes to play the item, you get a spinning blue circle. It then either returns you to the description screen without playing, or crashes out to the home screen altogether.

    The video content I'm trying to play is very simple: MP4 in 576p, one audio track in 2 channel stereo.

    Re-opening Nova after one initial crash (as per above) will then result in regular crashing, which will happen even without trying to play or browse anything. The crash back to the home screen will usually happen within seconds of opening the app.

    Something's really wrong here.

    Important 
    opened by Dandemon 25
  • Android R migration

    Android R migration

    In order to target SDK 30 you need:

    diff --git a/build.gradle b/build.gradle
    index ea5d6de..bd9c633 100644
    --- a/build.gradle
    +++ b/build.gradle
    @@ -115,7 +115,7 @@ android {
             sourceCompatibility JavaVersion.VERSION_1_8
             targetCompatibility JavaVersion.VERSION_1_8
         }
    -    compileSdkVersion 29
    +    compileSdkVersion 'android-R'
         buildToolsVersion '29.0.3'
         sourceSets {
             main {
    @@ -130,7 +130,7 @@ android {
         defaultConfig {
             generatedDensities = []
             minSdkVersion 21
    -        targetSdkVersion 29
    +        targetSdkVersion 'R'
             multiDexEnabled true
             versionCode getDate()
             version = '4.48.1'
    

    When launching the app you get this obvious introspection not allowed anymore to solve:

    2020-04-26 13:56:05.111 7491-7550/org.courville.nova W/.courville.nov: Accessing hidden method Landroid/os/storage/StorageVolume;->getPath()Ljava/lang/String; (greylist-max-q,test-api, reflection, denied)
    2020-04-26 13:56:05.111 7491-7550/org.courville.nova W/System.err: java.lang.NoSuchMethodException: android.os.storage.StorageVolume.getPath []
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at java.lang.Class.getMethod(Class.java:2072)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at java.lang.Class.getMethod(Class.java:1693)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.filecorelibrary.ExtStorageManager.updateAllVolumes(ExtStorageManager.java:127)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.filecorelibrary.ExtStorageManager.getExtStorageManager(ExtStorageManager.java:51)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.Blacklist.isBlacklisted(Blacklist.java:84)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.VideoStoreImportImpl$Job.<init>(VideoStoreImportImpl.java:246)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.VideoStoreImportImpl.handleScanCursor(VideoStoreImportImpl.java:171)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.VideoStoreImportImpl.doScan(VideoStoreImportImpl.java:331)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.VideoStoreImportImpl.doFullImport(VideoStoreImportImpl.java:105)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.VideoStoreImportService.doImport(VideoStoreImportService.java:417)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at com.archos.mediaprovider.video.VideoStoreImportService.handleMessage(VideoStoreImportService.java:364)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at android.os.Looper.loop(Looper.java:216)
    2020-04-26 13:56:05.112 7491-7550/org.courville.nova W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:67)
    
    blocker task 
    opened by courville 25
  • MXPlayer has smoother 4k video playback than Nova

    MXPlayer has smoother 4k video playback than Nova

    I read that for Sony TV to go 4K you have to set the app type as VIDEO:

    https://community.sony.co.uk/t5/android-tv/sony-4k-bravia-tv-reports-1080p-resolution-to-apps/td-p/2251639

    "Apps compiled as "Application (Video)" have access to hardware 4K video decoding, that is why Youtube, Netflix, etc, play video at 4K. Apps compiled as "Application" have limited access to 1080p video rendering only. You can see how an app is compiled pressing "action menu" button, chosing "image" and reading if it says "Application" or "Application (video)" on top. " If you need beta testing on Sony TV I can do it for you. 4K playback at the moment is almost unusable except on low bitrate files - if it plays it stutters or lags.

    opened by JJD2K 24
  • [FEAT]: 85% watched = 'watched'

    [FEAT]: 85% watched = 'watched'

    Description

    Can you implement a system where if a variable % of the total movie is played (watched) then it triggers the 'watched' flag. This will save on having to either skip through all the credits or stopping the movie and manually marking as 'watched'

    Maybe make setting a spinner to set the total % before the flag is tripped..?

    Additional information

    No response

    enhancement 
    opened by SpudR 23
  • Add option to prefer external subtitles over embedded ones [FEAT]:

    Add option to prefer external subtitles over embedded ones [FEAT]:

    Description

    This issue is more irritating for me because Persian language isn't supported in this app and for each episode I have to choose my external subtitle manually. It would be great if there was an option to prefer external subtitles over embedded subtitles.

    Additional information

    No response

    enhancement 
    opened by farhad1200 0
  • SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=32178, totalRows=24398

    SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=32178, totalRows=24398

    Sentry Issue: NOVA-VIDEO-PLAYER-2N6

    SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=32178, totalRows=24398
        at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(SQLiteConnection.java)
        at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:1001)
        at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:838)
        at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
        at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:161)
    ...
    (14 additional frame(s) were not displayed)
    
    opened by sentry-io[bot] 0
  • Video file parses but doesn't play

    Video file parses but doesn't play

    I've got a bunch of TV episodes that won't play. Nova parses them fine - works out the file details, audio codec etc - but when I attempt to play them I get a few screen refreshes but am then dumped back into Nova again.

    Here's an example file:

    https://www.newtonnet.co.uk/temp/BlueyS02E01.mp4 (~58MB) (Renamed from the original so it might not fetch the TVDB info correctly)

    I'm running v6.0.81 on a Firestick (tested with same results on both a 4K and non-4K version). Having posted on Reddit someone confirmed it played fine for them (running v5.15) and indeed I can play it without issue using players on other devices.

    I appreciate I am not giving much to go on here. Would a logcat extract help? If so, anything in particular to pull out or should I just dump the whole lot here?

    opened by mjnewton 2
  • IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the...

    IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the...

    Sentry Issue: NOVA-VIDEO-PLAYER-38

    IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes. [in ListView(2131362362, class android.widget.ListView) with Adapter(class com.archos.mediacenter.video.utils.ScraperResultsAdapter)]
        at android.widget.ListView.layoutChildren(ListView.java:1814)
        at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:5499)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
        at android.view.Choreographer.doCallbacks(Choreographer.java:809)
        at android.view.Choreographer.doFrame(Choreographer.java:740)
    ...
    (8 additional frame(s) were not displayed)
    
    bug help wanted Important 
    opened by sentry-io[bot] 0
  • [Bug]: choppy video when playing over shortcut (sftp)

    [Bug]: choppy video when playing over shortcut (sftp)

    Problem description

    The video playback is very choppy, when having navigated over an sftp shortcut. It works fine however, if playing over an sftp connection when clicking the browse an ftp server button in the FTP menu under External.

    I tried this with two videos, both in format HEVC/H.265 200kb/s 23.976fps. What did differ was the resolution. The choppy video 1920x800, the normal playing video 1792x1080.

    I did see the Some videos play really slowly on my device. section in the FAQ, but after testing this with shortcut and direct connection, I tend to think that the problem does not come from the video file itself.

    Steps to reproduce the issue

    choppy playback

    1. create an sftp shortcut
    2. click on created shortcut
    3. navigate to a folder, in which a video is contained
    4. play said video

    normal playback

    1. connect to sftp server with button browse an ftp server
    2. navigate to a folder, in which a video is contained
    3. play said video

    Expected behavior

    a choppy video will start playing

    Your phone/tablet/androidTV model

    Pixel 6

    Operating system version

    Graphene OS

    Application version and app store

    v6.0.81

    Additional system information

    SFTP connection to a device in my local network

    Debug logs

    No response

    bug 
    opened by youngtrashbag 3
Releases(v6.0.93)
Owner
NOVA
Nova opeN sOurce Video plAyer
NOVA
Yet Another Video Player (or YAVP) is a Video Player for Android that is based on Googles ExoPlayer.

Yet Another Video Player Yet Another Video Player (or YAVP) is a Video Player for Android that is based on Googles ExoPlayer. Who Is YAVP For? First o

null 62 Dec 29, 2022
Compose-video-player - Video player for Android Compose powered by ExoPlayer

Compose Video Player Video player for Android Compose powered by ExoPlayer. Addi

Juan Pablo Herrera 22 Dec 13, 2022
Video Transcoder is an application which uses the open source program FFmpeg to transcode video files from one format to another.

Video Transcoder Do you want to encode videos on your phone into different formats, trim videos, or extract audio? Are you looking for a free solution

Branden Archer 358 Dec 30, 2022
Shuttle is an open source, local music player for Android.

Shuttle Music Player Shuttle is an open source, local music player for Android. Shuttle comes in two flavours: Shuttle (free) Shuttle+ The free versio

Tim Malseed 2.2k Jan 4, 2023
SocyMusic is an open-source Android music player written in Java with the aim of creating an easy-to-use app for exchanging and listening to top-quality music. Help us create it!

SocyMusic SocyMusic is an open-source Android music player written entirely in Java. It's objectives are to provide top-quality music to everyone for

Benji 23 Dec 26, 2022
Blade is an open source music player for Android, allowing you to play music from multiple services : files on your phone, Spotify, and more.

Blade Player Blade is an open source music player for Android, allowing you to play music from multiple services : files on your phone, Spotify, and m

Valentin HAUDIQUET 72 Jan 5, 2023
Free p2p cdn android github sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀

Android p2p cdn sdk to distribute load and reduce costs(https://peervadoo.com) Vadootv is a p2p sdk integration to reduce your video streaming costs b

Vadootv 40 Oct 5, 2022
The Madman library (Media Ads Manager) enables you to advertise video contents with video ads.

Madman (Media ads manager) is a high performance alternative to Google's standard IMA android SDK. If you have your own VAST server and want to render video ads and have full control over the UI, then this library is for you.

Flipkart Incubator 65 Nov 10, 2022
mpv-android is a video player for Android based on libmpv.

mpv-android is a video player for Android based on libmpv.

null 1.1k Jan 6, 2023
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.

ijkplayer Platform Build Status Android iOS Video player based on ffplay Download Android: Gradle # required allprojects { repositories {

bilibili 31k Jan 3, 2023
Custom Android view with video player, loader and placeholder image

VideoPlayerView Custom Android view with video player, loader and placeholder image. To stay up-to-date with news about the library Usage Here is an e

Marcin Moskała 89 Nov 18, 2022
Simple and lightweight, yet polished and powerful Android video player based on ExoPlayer

Just (Video) Player Android video player based on ExoPlayer It uses ExoPlayer's extension-ffmpeg with all its audio formats enabled (it can handle eve

Marcel Dopita 677 Dec 28, 2022
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.

ijkplayer Platform Build Status Android iOS Video player based on ffplay Download Android: Gradle # required allprojects { repositories {

bilibili 29.8k Dec 22, 2021
api.video Android player

api.video is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.

api.video 9 Dec 15, 2022
A Custom Video Player with Controls in Kotlin

UNT-Video-Player A Custom Video Player with Controls in Kotlin Hello folks, Here is the custom video player built in Kotlin; with SeekBar, fast forwar

ultroNeous Technologies 0 Nov 8, 2021
AutoPlayer - A player based on ExoPlayer for play video automatically in RecyclerView, when an item is visible.

A player based on ExoPlayer for play video automatically in RecyclerView, when an item is visible.

Kishan Singh 6 Aug 14, 2022
Exo Player Video with jetPack Compose

Exo Player Video with jetPack Compose

mohamed tamer 2 Feb 26, 2022
Sample HLS Video player in Kotlin with mvvm

HLSVideoPlayer Sample HLS Video player in Kotlin with mvvm Note: mvvm is partially implemented due to time constraint, so here is a scope for improvem

null 0 Apr 9, 2022
Odeon Music Player is a lightweight music player for Android.

Odeon ?? Odeon Music Player is a lightweight music player for Android. Get it on Google Play. We value your privacy, your battery life and your device

Thibault Seisel 63 Dec 20, 2022