Code Monkey home page Code Monkey logo

player's Introduction

Just (Video) Player

GitHub release (latest SemVer) Google Play F-Droid GitHub all releases Google Play Google Play Media3 Weblate project translated Subreddit subscribers

Android video player based on Media3 (formerly ExoPlayer), compatible with Android 5+ and Android TV.

It uses ExoPlayer's ffmpeg extension with all its audio formats enabled (it can handle even special formats like AC3, EAC3, DTS, DTS HD, TrueHD etc.).

It properly syncs audio with video track when using Bluetooth earphones/speaker. (I was not able to find any other nice ExoPlayer based video player so I created this one.)

Supported formats

  • Audio: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE on Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD
  • Video: H.263, H.264 AVC (Baseline Profile; Main Profile on Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1
  • Containers: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV, AVI (🚧)
  • Streaming: DASH, HLS, SmoothStreaming, RTSP
  • Subtitles: SRT, SSA/ASS (limited styling), TTML, VTT, DVB

HDR (HDR10+ and Dolby Vision) video playback on compatible/supported hardware.

AC-4 audio is supported on devices providing such system decoder (e.g. Samsung Galaxy A, S and Z series running Android 11 or later).

Screenshots

Features

  • Audio/subtitle track selection
  • Playback speed control
  • Horizontal swipe and double tap to quickly seek
  • Vertical swipe to change brightness (left) / volume (right)
  • Pinch to zoom (Android 7+)
  • PiP (Picture in Picture) on Android 8+ (resizable on Android 11+)
  • Resize (fit/crop)
  • Volume boost
  • Auto frame rate matching on Android TV/boxes (Android 6+)
  • Post-playback actions (delete file/skip to next)
  • Touch lock (long tap)
  • App shortcut for direct access to file chooser (Android 7.1+)
  • 3rd party equalizer / audio processing support (e.g. Wavelet)
  • Media Session and Audio Focus support
  • Pause playback when disconnecting headphones
  • No ads, tracking or excessive permissions

Some advanced features can be enabled or configured in settings. To access it, long press the ⚙️ gear icon. (Alternatively, you can also enter this settings from App info screen.)

  • Default audio tracks. Set specific language, prefer device language, media file defaults.
  • File access mode. Use of Storage Access Framework / MediaStore / legacy file access.
  • Decoder priority. Prefer device or app decoders.
  • Auto frame rate matching. (On Android 11+ and "compatible" displays, ExoPlayer supports seamless refresh rate switching)
  • Tunneled playback. Enabling tunneling can improve playback of 4K/HDR content on Android TV.
  • Playback of Dolby Vision profile 7 (UHD Blu-ray) as HDR HEVC
  • Auto picture-in-picture. When you leave Just Player through the home button and video is playing, PiP will be activated automatically.
  • Skip silence
  • Repeat toggle

WRITE_SETTINGS ("Modify system settings") permission: When the system file chooser is opened, it will always use current system orientation, even if the Player app sets its own. Granting this permission via adb (adb shell pm grant com.brouken.player android.permission.WRITE_SETTINGS) or App info screen will allow this app to temporarily enable Auto-rotate to at least partially mitigate this imperfection.

Donate: PayPal | Bitcoin | Litecoin

Translate: Weblate

Download

Get it on Google Play Get it on F-Droid Get it on GitHub Explore it on AppGallery Get it on Mi App Mall Get it on Aptoide available at amazon Get it from Microsoft

Other links/channels: application thread on XDA Developers, subreddit on reddit, entry on AlternativeTo, git mirror on GitLab

❓FAQ

How do I open subtitle file (e.g. .srt)?

To load external (non-embedded) subtitles, long press the 📁 file open action in the bottom bar. The first time you do that, you will be offered to select root video folder to enable automatic loading of external subtitles.

💡📺 Because of limitations on Android TV, Just Player is also able to open subtitle files from external file managers. You can open video file from your file manager, then return back and also open subtitle file in Just Player. Subtitle will be available in the last selected video.

Just Player is also able to detect some subtitle files when accessing videos over HTTP/HTTPS. Just use the same naming for video files as well as subtitles (e.g. video.mkv and video.srt).

How do I change subtitle font, size or color?

Open system Caption preferences on your device (usually in the Accessibility section of Settings) and you will be able to fully customize the subtitle style.

To quickly access the system Caption preferences screen, long tap the subtitle button.

Are there any media formats it CANNOT play?

Unfortunately, upstream ExoPlayer doesn't handle some older formats like AVI container, WMV or Theora. Majority of devices also cannot handle 10-bit AVC.

Just Player focuses on playing videos so audio only playback isn't officialy supported (request).

How to view detailed video information (like resolution, bitrate etc.)?

Install app like MediaInfo (or APK from MediaArea.net). Then, to quickly open MediaInfo from Just Player, long press the video name/title.

I prefer using media library instead of a file chooser...

Just Player uses system file chooser which already allows two different browsing modes:

  1. Videos - listing only device directories that contain videos

  2. File browser - full navigation in the device file system structure

Alternatively, some people choose to use the media library function of Nova Video Player and integrate it with Just Player by enabling "Allow using another video player" feature. This also gives you convenient access to content on network storages (SMB, UPnP, FTP and SFTP).

How to access videos on network storages (SMB, WebDAV, SFTP, etc.)?

  1. The default system file chooser allows access to any remote storage using appropriate Document Provider. I highly recommend CIFS Documents Provider for accessing Samba shares. There are also providers like WebDAV Provider/DAVx⁵ (WebDAV), FileManagerUtils (SFTP) and rcx. Sadly, Document providers are not supported on Android TV.

  2. Open video directly from your favorite file explorer. Solid Explorer works really well, especially if you also want to automatically load subtitles.

How do I open a streaming link, where do I enter an url?

Just Player does not have any UI to enter internet addresses, but it is registered for handling all compatible streaming links. When opening/tapping links in other apps, Just Player should be generally offered as an option. (Though this may not work in all situations, especially on Android 12+.)

Alternatively, select the text url in the source app, choose Share and find Just Player to play it.

How to zoom in to get rid of black bars?

If your device has a touchscreen you can use the pinch-to-zoom gesture or just tap the Resize button for a Crop. Android TV: Long tap the Resize button to enter Zoom mode. Then use Up and Down keys for precise zoom.

What to do if Bluetooth audio is not in sync with video?

Just pause and resume playback once again.

Why is the APK so big?

The APK available here contains native libraries for all supported architectures (armeabi-v7a/armeabi-v7a-neon/arm64-v8a/x86/x86_64), which is what takes the most space. Although Just Player relies mostly on device decoders, it packs FFmpeg for some advanced features (video chapters and frame rate detection). The second largest dependency is ICU4J - 10 MB only for charset detection of subtitle files. 🤷

Please note that installs and updates made through Google Play are significantly smaller thanks to Android App Bundles and delta updates.

Other open source Android video players

Here's a comparison table presenting all available and significant open source video players for Android I was able to find. Just Player is something like 80% 90% feature complete. It will probably never have dozens of options or some rich media library UI. It will never truly compete with feature rich VLC. It just attempts to provide functional feature set and motive others to create greater players based on amazing ExoPlayer.

App name (source) Media engine Gestures PiP Cutout (notch) Android TV
Fermata Media Player MediaPlayer, ExoPlayer and libVLC 🟡 Seek/Volume 🔴 No 🔴 No 🟢 Yes
Just (Video) Player ExoPlayer 🟢 Seek/Volume/Brightness 🟢 Yes 🟢 Yes 🟢 Yes
Kodi ? 🔴 No 🔴 No 🔴 No 🟢 Yes
mpv libmpv 🟢 Seek/Volume/Brightness 🟢 Yes 🟢 Yes 🟢 Yes
Next Player ExoPlayer 🟢 Seek/Volume/Brightness 🔴 No 🟢 Yes 🔴 No
Nova Video Player MediaPlayer 🟡 Volume/Brightness 🟢 Yes 🟢 Yes 🟢 Yes
VLC libVLC 🟢 Seek/Volume/Brightness 🟢 Yes 🟢 Yes 🟢 Yes

To find other video players (including non-FOSS), check out a list on IzzyOnDroid.

player's People

Contributors

bardock88 avatar comradekingu avatar itsmohmans avatar khonsaloh avatar kyelbek avatar leomovskii avatar litvcom avatar luiz-bro avatar merradoklom avatar milotype avatar minh3339 avatar moneytoo avatar mrmrcl avatar nutsupra avatar oersen avatar proficienttroll avatar qaz-6 avatar rex07 avatar rezaalmanda avatar rickym7 avatar romankuzmin1710 avatar samhy147 avatar santossi avatar shareasmile avatar sinapser0x avatar smarquespt avatar sr093906 avatar strebski avatar vasiliskos avatar weblate 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

player's Issues

Subtitle and audio synchronization options.

Thanks for building such nice app.
I'd like to suggest to add subtitles and audio syncing option. It'd be very useful, specially subtitles one because not every external subtitle works out of the box with video.

Add video locking feature.

Please add video locking feature.
You can't change anything (slider & volume & brightness bar) until you unlock.

F-Droid Updates

Looks like F-Droid can't build correctly because you changed your versioning.

It's currently stuck on v0.12. Your newer versions go by: 0.13, 0.14, 0.15

Instead of: v0.13, v0.14, v0.15

Video loop

cau, libi se mi player ale chybi mi tam to co u vetsiny android video playeru a to opakovani videa. Ma to snad jen vlc prehravac, ale ten nechci pouzivat. Je moznost to nejak zprovoznit?

Ogg Theora support

I have several videos in that format and I saw that I could not play them using the player.

[Bug] HEVC videos not playing

MediaCodecVideoRenderer error, index=0, format(1, Ep 1 | 1080p | BD | x265 10bit, null, video/hevc, -1, ja [1920, 1080, -1.0], [-1, -1]), format_supported=YES Details

When pressing on Details it gives this message

Decoder failed: OMX.qcom.video.decoder.hevc

I have tried multiple HEVC videos and none of them seem to work. They play fine on other video players.

Pozice titulků SSA/ASS

Všiml jsem si, že při titulcích, které mají být na různých pozicích v obraze ve stejný čas, dochází k zobrazení v jedné pozici přes sebe.

Orientation option

Add orientation option, press to open dialog box, add this four option

  • portrait, landscape, device and sensor orientation. Set any of this 4, set 1 to be default.

NOTE: REPLACE SUBTITLE FOLDER TO ORIENTATION BUTTON.

PUT SUBTITLE FOLDER TO ( >) INSIDE SETTING CONTAIN OPTION.
ghjj

Unreadable subtitles

Hello! I just found this interesting app but I already encountered a issue with it... The video that I tried to play has unreadable subtitles in this app but for example in VLC the subtitles appears normally.
(If you look closely the subtitles is there but it's just white)
Screenshot_2021-01-28-15-50-01-758_com brouken player

Here is an example of how it looks on the VLC player:
Screenshot_2021-01-28-15-54-20-811_org videolan vlc

This video can be found here: https://nyaa.si/view/1324339

Bug while opening player

https://del.dog/nupilelopo

time: 1612197716649
msg: java.lang.RuntimeException: Cannot initialize effect engine for type: fe3199be-aed0-413f-87bb-11260eb63cf1 Error: -3
stacktrace: java.lang.RuntimeException: Cannot initialize effect engine for type: fe3199be-aed0-413f-87bb-11260eb63cf1 Error: -3
	at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:521)
	at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:488)
	at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:462)
	at android.media.audiofx.LoudnessEnhancer.<init>(LoudnessEnhancer.java:80)
	at com.brouken.player.PlayerActivity$3.onAudioSessionId(PlayerActivity.java:561)
	at com.google.android.exoplayer2.SimpleExoPlayer.notifyAudioSessionIdSet(SimpleExoPlayer.java:2037)
	at com.google.android.exoplayer2.SimpleExoPlayer.access$2900(SimpleExoPlayer.java:75)
	at com.google.android.exoplayer2.SimpleExoPlayer$ComponentListener.onAudioSessionId(SimpleExoPlayer.java:2231)
	at com.google.android.exoplayer2.audio.AudioRendererEventListener$EventDispatcher.lambda$audioSessionId$6$AudioRendererEventListener$EventDispatcher(AudioRendererEventListener.java:177)
	at com.google.android.exoplayer2.audio.-$$Lambda$AudioRendererEventListener$EventDispatcher$MnqtJ56WvRd4g2TMAefvhP3gwCk.run(Unknown Source:4)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:223)
	at android.app.ActivityThread.main(ActivityThread.java:7661)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Suspended from Google Play for listing supported subtitle formats

After a tiny unrelated description update, Just Player got suspended from the Google Play Store for "Sexual Content and Profanity policy". Google finds issues with following:

Full description (en_US): “* Subtitles: SRT, SSA, ASS, TTML, VTT”

Based on this, I suspect that the issue is with the word ASS. But it's an actual file format (/extension). Just Player uses ExoPlayer (a Google library) which lists the very same on the support page:

SubStationAlpha (SSA/ASS) | YES | MimeTypes.TEXT_SSA

Wikipedia lists the same formats:

Filename extension | .ssa, .ass

I immediately filed an appeal. 🤞

Original message from Google:

suspension

Streaming

Can u support play streaming like .m3u, m3u8, dash, hls,... tks very much

Filter option in file selection disappearing when activating filter for files from "This week"

Hello,

Just a few minutes after discovering "Just Player" I came across a first bug ☺.

Background information

  • Device: OnePlus 7 Pro
  • OS: Oxygen OS 10.0.10.GM21BA (Android 10)

The problem might be specific to OnePlus' file selection dialogue, but I haven't seen the behavior described below in any other app so far. So maybe it's a combination of both, OnePlus tooling and the movie player app.

Description

  • In the file (movie) selection dialogue there are two filter buttons at the top, one for big files and the other one for recent files (from this week). For me the dialogue starts with the "Most recent used" view ("Zuletzt verwendet" in the screenshots, as these show the German UI).
  • The first toggle (for big files) can be selected and deselected just normally (with appropriate effect on the list of files shown below, cropped in the screenshots).
  • The second toggle however kind of "disappears" (together with the first one, the whole row seems to be redrawn) when you try to click it. I think I can still recognize a shifted/distorted part of the button edge, but that's it.
  • The toggle cannot be deselected anymore afterwards. You actually have to close the dialogue (return to the current movie) and re-open it prior to be able to continue (the filter itself cannot be applied).

Screenshots

  1. The "big files" filter active, this works:

    Screenshot_20210113-213152_cropped

  2. Now I selected the "this week" filter, result:

    Screenshot_20210113-213200_cropped_annotated

    As you can see, the filter panel looks a little bit empty and unexpected now… The red rectangle (added by me) highlights the area where I think a part remains of the original button.

Thanks for having a look!

4k video seekbar is not working

Hi Marcel,
I was testing 4k video but seekbar is not working
If you seek it keeps restarting the video and click on any position on seekbar is not responding..all other 1080 videos are working perfactly but this 4k MKV video is not working i will test another 4k video but this is working perfectly in MX player!

Thanks

Add settings page

Hi,

a settings page is missing. A settings page should be added so that more options can be added to generally allow users to decide faster and more directly which functions they want to use or not.

Pinch to zoom gesture, lock button

It is the One of the best video player i been use. Now a days dont want advanced player (VLC) because of Phone hardware. So simple video player will do best in phone nowadays i love It is simplistic and minimal. And it can contain all features. Good Work.
My only Suggestion is

  1. Remove pitch to zoom button and replace to gesture pitch to zoom.
  2. Add video lock option, if add (replace video lock button to pitch to zoom place)
    N_1_1_1

Videos from Huawei Gallery won't play

Hello,

I'd like to report a possible bug. I'm trying to use this app as the default video player on my phone, but if i try to play a file from the Gallery, the player will open, but nothing would actually play. Oddly, if i open the same videos from file manager it works ok. I'm running android 10, and my phone model is Huawei P20 Pro.

[Bug] videos not opening

I recently discovered this video player and it looks very promising however videos wont open. My device is samsung galaxy s9 android 10 and it also doesent work on galaxy tab A android 10. When i press the select files option it brings me to the select file screen and when i select it it brings me to the player screen and nothing happens. I have granted the app storage and it is still not working. A fix would be greatly appreciated.

Add disable certain gestures

I like the Just Player, but I very rarely use gestures and would love to be able to disable certain gestures like pinch to zoom and brightness.

Video Zoom

Pitch to zoom not really in just player. There is some chin in top and bottom. So pls add one more option (zoom) just player already have two (fit, crop). Zoom option helps to coverup full view experience of the phone.

[Feature Request] External subtitles active by default

I use this app in Android TV 9, it is the best. I watch a lot of movies and shows in free time and all of them have external subtitles, but always I have to load them.
Imagining that if always have an external subtitles, the user always has preference for them, since he had to insert it. Can you could add a feature that external subtitles are active by default?

Double tab to pause or restart

Sir Please add this features.
Double tab to pause or restart.
Double tab (both sides) to Seek (10 sec).
These are very basic features Please work on it.

F-Droid

Pls push update on fdroid as soon as possible.

Custom override SSA/ASS styling

  • Hello, thank you very much for a nice project.

In version v0.19, when I set my own font, color, etc. via Settings-> Accessibility-> Captions, it is applied to subtitles.

In version v0.20-wip the set color is not applied (color from subtitles yes, this is a change compared to v0.19).

I think it's due to changes in ExoPlayer 2.13.0 google/ExoPlayer#8490 , google/ExoPlayer#8435

Is it possible to ensure in future versions that user-set values are applied?

  • Dobrý den, moc děkuji za pěkný projekt.

Ve verzi v0.19, když nastavím vlastní font, barvu, atd. přes Settings->Accessibility->Captions dojde k aplikování na titulky.

Ve verzi v0.20-wip se neaplikuje nastavená barva (barva z titulků ano, to je změna oproti v0.19).

Myslím, že je to díky změnám v ExoPlayer 2.13.0 google/ExoPlayer#8490 , google/ExoPlayer#8435

Je možné v budoucích verzích zajistit, že budou uživatelem nastavené hodnoty aplikovány?

[Feature Request] Follow device brightness

Describe the feature

It's not very good to open the app and be greeted by a much higher brightness than the one set up on your device, so it would be great for the app to follow the brightness of the device. In fact the ideal would be an option to enable/disable manual brightness control in the app, but the default would be to follow the brightness of the system.

Describe the solution you'd like

  • 1. [Added in v0.12 (910c4ed)] Follow the system brightness when opening the app.

  • 2. [Will not be added] Option to turn off brightness and volume gestures.

Note: Thank you so much for your great work, I finally found a simple, lightweight and efficient video player. Your app is actually very good.

Make online version updatable?

It seems that the only way to get the online version is to grab it from the github releases page but there's no way to keep it updated except downloading it again and again from that page. Will there be a long term updating solution for people who want to use your player over SMB, for example?

Maybe you can submit the online version to https://apt.izzysoft.de/fdroid/ so we can add that repo to f-droid and izzydroid can always pull the online version for you?

Share option

Hi, great work, is it possible to add a video share option?
Thanks.

Manuální/Automatické schování ovladacích prvků při pauze

Bylo by dobré přidat manuální schování ovládacích prvků při pauze (ťuknutím mimo ovládání, stejně jak je tomu u vyvolání/schování ovládání při přehrávání), případně vrátit automatické schování.

Například, když chci udělat screenshot ovládání zavazí. Nebo je více titulků v jeden okamžik, stopnu a přečtu si je, teď bohužel zavazí ovládání.

Request to implement more screen settings

Screenshot_20210122_194722_com brouken player

/ The subtitles are cut off since the video implements it with its default dimension (They are not subtitles that are added as an extension) 👇 /
Screenshot_20210122_194712_com brouken player

Here I show you the example of the two video settings that the player has, what I mentioned in the play store was the implementation of another screen setting where the video can be filled in the entire screen

VLC player example
/ What I want to show is that the cut subtitles are not seen here like in the example above since the video is filled on the screen with devices of larger dimensions /
Screenshot_20210122_195458_org videolan vlc

Add ExoPlayer version number

It would be very helpful if the ExoPlayer version number is displayed e.g under gear icon when the user clicks on this button.

Silence skip feature

Exo provides great feature called silence skip and I was amazed by its implementation in NewPipe, unfortunately it doesn't play local files. When you don't look at the video it's actually really hard to spot places where it is skipped.
Thus I would like ask for inclusion of this feature [ possibly together with speedup functionality ].

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.