Giter Site home page Giter Site logo

shadow578 / yetanothervideoplayer Goto Github PK

View Code? Open in Web Editor NEW
68.0 9.0 21.0 16.33 MB

Yet Another Video Player for Andoid

License: GNU General Public License v3.0

Java 96.77% GLSL 3.23%
android video-player video-streaming streaming mediaplayer java exoplayer anime anime4k

yetanothervideoplayer's Introduction

End of Support

I'm sorry to inform you that, as of this commit, YAVP will no longer receive any updates.
If you want to continue development of YAVP, feel free to fork the project.

For users seeking an alternative, i'd recommend using VLC for Android or moneytoo/Player.


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 off, YAVP is not meant to compete with any of the big players like VLC or MX Player.

With that out of the way, here are some reasons you might want to consider using YAVP:

  • YAVP is fully Open Source
    • The source code of YAVP and all libraries is open source and can be found here
  • YAVP will (and cannot) spy on your data
    • Take a look here to see what permissions YAVP uses
  • YAVP is completely free and without ads
  • YAVP does not include any Trackers
  • YAVP now has a media picker
  • YAVP will play most Video and Audio Files and Streams
    • For a full list of supported formats, see here
  • Simple and modern User Interface
    • No flashy lights and thousands of buttons, just a simple user interface
  • Resume where I left Features
    • You can just close the app at any point - it will handle resuming for you later
  • Build and Optimized for watching Anime
    • For Anime- Specific features, see here

Things you should Know

  • YAVP requires at least Android 7.0 (Nougat)
    • This may change in the future
  • While Anime4K really is great at making Anime look great, it is also outstandingly eager to drain your battery
    • When Anime4K is enabled, you will experience a much higher battery drain
    • To slow down battery drain, you can enable FPS limiting in the app Settings
    • But don't worry, YAVP will warn you when your battery is running out of charge (if enabled)
  • YAVP is my very first Android App and my first (public) project on Github
    • If I'm doing something wrong, please feel free to let me know :)

Anime Specific Features

I personally use YAVP to watch Anime. As a result of this, it has some features specifically built with Anime in mind.

  • Anime- Upscaling with Anime4K
    • Watch Anime like it was meant to be watched: in the highest possible quality
  • Skip Anime Openings with the click of a button
    • Skip that super annoying opening with YAVP's advanced seeking technology
  • More to come

FAQ

How Do I Play Videos using YAVP?

Simply open YAVP and select a video from the media browser. Additionally, you can also open a video file in another app (eg. the Gallery app) and Android will ask you what video player to use. Simply select YAVP and your video will start playing. In addition to this, you can also share the video with YAVP. In the Share menu, there will be a entry called Play with YAVP.

A App Forces Me To Use VLC For Videos

Take a look at NotVLC.

How Do I Use Swipe Gestures?

For Volume Control, swipe the right side of your screen Vertically.
For Brightness Control, swipe the left side of your screen Vertically.

How Do I Choose The Quality / Jump To A Position / Access The Settings?

All these functions can be accessed in the quick settings drawer.
To open the quick settings drawer, swipe from the right edge of the screen to the left. Make sure the play/pause button is visible when you do this.

How Do I Enable Anime4K?

Anime4K can be enabled in the effects drawer.
To open the effects drawer, swipe from the left edge of the screen to the right. Make sure the play/pause button is visible when you do this.

Will YAVP Stay Ad- Free?

99% Yes. Although Exoplayer supports adding Ads into Videos, I don't feel like this is something I'd like to do.

Does YAVP Use Trackers?

Nope.

How does YAVP Scale up Anime?

When enabled in the Quick Settings menu, YAVP will use bloc97's Anime4K for upscaling and enhancing Anime. This algorithm does, in a nutshell, look where there are Lines in the Video and makes the Lines appear sharper.
If you want to learn more on how Anime4K works, I suggest looking at bloc97's Preprint.

Why Only Anime4K 0.9?

Because this version of Anime4K is still quite simple to understand and implement.
Additionally, I'm not sure if a mobile GPU could handle any of the newer versions.

What Permissions Does YAVP Use?

Obviously, YAVP cannot function without having any permissions.
These are all permissions that YAVP uses:

  • INTERNET
    • To access the Internet and stream videos
    • Also to check for and download updates
  • MODIFY_AUDIO_SETTINGS
    • To adjust the Volume with gestures
  • READ_EXTERNAL_STORAGE
    • To list and play local videos
    • This permission is actually disabled by default and is only requested when needed
  • WRITE_EXTERNAL_STORAGE
    • To download app updates
    • This permission is actually disabled by default and is only requested when needed
  • REQUEST_INSTALL_PACKAGES
    • This might sound scary, but it only means that YAVP is allowed to ask you to install new apps (a new screen will open for you to confirm the installation)
    • This is used to install app updates

As you can see, YAVP cannot access any of your private information (for example READ_CONTACTS).

Bugs And Feature Requests

Bugs

  • Include the App Version
    • If not on the latest App Version, try updating the app. The Issue may have already been solved
  • Include the crash details (select and copy the text on the crash screen)
  • Include steps to reproduce the Bug (if not obvious from the Description)
  • Include Screenshots (if needed)
  • If you suspect the Bug may be device specific, try reproducing on another device (if possible)
  • For large logs use pastebin.com or similar
  • Don't group unrelated requests into one issue

Feature Requests

  • Write a detailed request, explaining what the feature should do and how it should do it
  • Include Screenshots to illustrate your request (if needed)

Used Librarys

yetanothervideoplayer's People

Contributors

shadow578 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yetanothervideoplayer's Issues

Android 10 Broken

Launched app, gived permission, relaunched app, `Platform Info:
Device: Xiaomi M2010J19CG (citrus_global)
Board: citrus
Type&Tags: user (release-keys)
Android 10 SDK 29 (REL)
ABIs: arm64-v8a, armeabi-v7a, armeabi,

Stacktrace:
java.lang.RuntimeException: setDataSource failed: status = 0x80000000
at android.media.MediaMetadataRetriever.setDataSource(Native Method)
at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:75)
at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:163)
at de.shadow578.yetanothervideoplayer.ui.mediapicker.chooser.MediaChooserFragment.scanMedia(MediaChooserFragment.java:352)
at de.shadow578.yetanothervideoplayer.ui.mediapicker.chooser.MediaChooserFragment.populateMediaList(MediaChooserFragment.java:278)
at de.shadow578.yetanothervideoplayer.ui.mediapicker.chooser.MediaChooserFragment.initializeMediaEntries(MediaChooserFragment.java:249)
at de.shadow578.yetanothervideoplayer.ui.mediapicker.chooser.MediaChooserFragment.onCreate(MediaChooserFragment.java:114)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2684)
at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:280)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1175)
at androidx.fragment.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1255)
at androidx.fragment.app.FragmentTransition.calculateFragments(FragmentTransition.java:1138)
at androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:136)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1989)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433)
at android.app.Activity.performStart(Activity.java:7946)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3346)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2058)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
`Video player works if open video from any file explorer

player unable to play video

at com.google.android.exoplayer2.SimpleExoPlayer.maybeNotifySurfaceSizeChanged (SimpleExoPlayer.java:1504)

Add to F-droid

Hi,

Adding the app to F-droid would be very helpful for discoverability and the app wouldn't need to handle auto updates (and app installs) itself.

Thanks

latest version adds non-free dependencies?

I just noticed your new release added two non-free (i.e. non FOSS) dependencies: GMS and Android Vision. Are those really needed? Special "headache" in this context is the CAMERA permission together with INTERNET. I thought this is a video player?

Could you please explain what the CAMERA permission plus GMS are needed for by a video player? I'm a bit confused ๐Ÿ˜‰ Also, abstention from non-FOSS components would be a good idea IMHO โ€“ they leave an otherwise good FOSS app "tainted".

Thanks!

PS: most likely an oversight, but the latest APK also comes with debugging enabled.

Crashes on startup if packaged without internet permission.

Thanks for the app. When I try to repackage it without INTERNET permission (as a precaution and I only need it offline), it crashes on startup. It should still function offline. Most other apps handle absence of INTERNET and ACCESS_NETWORK_STATE gracefully.

And thanks for the app, btw!

Compiling error

Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'com.pascalwelsch.gitversioner']

Not able to play Live Streaming m3u8 URL more than 40 seconds.

Hi,
Thanks for this great app.
I was trying to play live streaming url but getting following error.
Please look into this matter.

URL: https://aajtaklive-amd.akamaized.net//hls//live//2014416//aajtak//aajtaklive//aajtak_5//chunklist.m3u8

Platform Info:
Device: OnePlus GM1901 (OnePlus7)
Board: msmnile
Type&Tags: user (release-keys)
Android 10 SDK 29 (REL)
ABIs: arm64-v8a, armeabi-v7a, armeabi,

Stacktrace:
com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker$PlaylistStuckException
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:386)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker$PlaylistStuckException
at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker$MediaPlaylistBundle.processLoadedPlaylist(DefaultHlsPlaylistTracker.java:637)
at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker$MediaPlaylistBundle.onLoadCompleted(DefaultHlsPlaylistTracker.java:518)
at com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistTracker$MediaPlaylistBundle.onLoadCompleted(DefaultHlsPlaylistTracker.java:443)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.handleMessage(Loader.java:450)
at android.os.Handler.dispatchMessage(Handler.java:107)
... 2 more

please disable auto scanning of media library in start of application by default

Hello thank you very much for this great application.

When I start application on most of my devices it's legs a lot and freezes for several minutes and in one of devices (although ot was not that much powerless) it completely freezes even if i wait alot although i only had 32GB video files.

so please disable auto scanning of media library in start of application as it makes the app completely unusable and let us to use folder browsing for playing videos.

You can make enabling it optional in setting menu but please disable it as default.

Thank you very much

Why end this project

Please sir don't drop this project.
It is too good. Concept is impressive.
But many bugs are available inside it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.