Giter Site home page Giter Site logo

hamidrezaamz / magicalexoplayer Goto Github PK

View Code? Open in Web Editor NEW
338.0 338.0 77.0 445 KB

The Easiest Way To Play/Stream Video And Audio Using Google ExoPlayer In Your Android Application

License: MIT License

Java 4.89% Kotlin 95.11%
android androidvideoplayer androidx audio audioplayer controller dash exoplayer githubplayer google googleexoplayer hls mediaplayer mobile mp4 player stream video videoplayer

magicalexoplayer's Introduction

Hi there 👋, I am Hamidreza Amz

Instagram Linkedin Badge Stackoverflow Badge Gmail Badge

I'm a self-taught passionate android developer from Earth 🌏

  • 🔭 I’m currently working on client side Java/kotlin technologies in android.
  • 🌱 I’m currently learning UI/UX design principles and techniques (Just for fun)
  • 💬 Ask me about android development or UI/UX, I will be happy if i can help you

Github Status

Anurag's github stats

Top Repositories



magicalexoplayer's People

Contributors

em-ad avatar hamidrezaamz avatar kamendo avatar razarasool 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

magicalexoplayer's Issues

Create key-value map for the HTTP headers

Can you update the header when playing hls video? like this:
Map <String, String> header = new HashMap <> ();
header.put ("cookie", "abcd1234");
andExoPlayerView.addHeader(header);

tks you very much <3

No AndroidX

Is it possible use it on support library?

Not Able to Repeat.

How can I set the player to repeat the playback. i-e, play the video again and again after completion?

How can i change RepeatMode??

i want change RepeatMode but i dont know well..
i was try ComponentListener().onRepeatModeChanged(). but its not working

Remove timer

Hello.

How can I remove time stamps while playing videos? Player works well. I just looking for solution to remove timer on both sides of time line.

Chromecast

Hello.

I was wondering, if there is any option to enable or integrate chromecast while watching videos?

Thanks

Problem when used in recyclerview

I used this library in recyclerview. but not working recyclerview adapter.
My app is a social media app and I used this player in story view.

Please advise if there is any solution is available.

holder.binding.videoPlayer.setSource("video_url");

com.google.android.exoplayer2.ParserException: org.xmlpull.v1.XmlPullParserException: unterminated entity ref

I'm getting the following error, I have followed the instructions of usage given in the ReadMe file nothing much than that

Source error
com.google.android.exoplayer2.ParserException: org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT @1:779 in java.io.InputStreamReader@bc13d05)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:96)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:61)
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:172)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT @1:779 in java.io.InputStreamReader@bc13d05)
at com.android.org.kxml2.io.KXmlParser.readEntity(KXmlParser.java:1262)
at com.android.org.kxml2.io.KXmlParser.readValue(KXmlParser.java:1465)
at com.android.org.kxml2.io.KXmlParser.next(KXmlParser.java:408)
at com.android.org.kxml2.io.KXmlParser.next(KXmlParser.java:321)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:89)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:61) 
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:172) 
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
at java.lang.Thread.run(Thread.java:919) 

"Try Again" appears when it shouldn't

When the video is buffering and the video has not started yet, "try again" appears in the center of the video, block the UI and reset buffer. This is not wanted.

E/ExoPlayerImplInternal: Internal runtime error. java.lang.IllegalStateException at android.media.MediaCodec.native_dequeueInputBuffer(Native Method) at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2726) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:977) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:654) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:575) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:326) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:214) at android.os.HandlerThread.run(HandlerThread.java:67)

E/ExoPlayerImplInternal: Disable failed. java.lang.IllegalStateException at android.media.MediaCodec.native_flush(Native Method) at android.media.MediaCodec.flush(MediaCodec.java:2194) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:702) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.flushOrReleaseCodec(MediaCodecVideoRenderer.java:604) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:580) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:451) at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:158) at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1088) at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:851) at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:813) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:399) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:214) at android.os.HandlerThread.run(HandlerThread.java:67)

E/BufferQueueProducer: [SurfaceView - detachBuffer: BufferQueue has no connected producer E/ExoPlayerImplInternal: Reset failed. java.lang.IllegalStateException at android.media.MediaCodec.native_stop(Native Method) at android.media.MediaCodec.stop(MediaCodec.java:2147) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:609) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.releaseCodec(MediaCodecVideoRenderer.java:594) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onReset(MediaCodecRenderer.java:587) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onReset(MediaCodecVideoRenderer.java:460) at com.google.android.exoplayer2.BaseRenderer.reset(BaseRenderer.java:164) at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:860) at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:813) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:399) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:214) at android.os.HandlerThread.run(HandlerThread.java:67)

com.google.android.exoplayer2.ParserException: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT ������ftypmp42��������

E/ExoPlayerImplInternal: Source error
com.google.android.exoplayer2.ParserException: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT �������ftypmp42��������...@6:87 in java.io.InputStreamReader@ed67357)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:96)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:61)
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:172)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT �������ftypmp42��������...@6:87 in java.io.InputStreamReader@ed67357)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:440)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:321)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:89)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:61) 
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:172) 
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
at java.lang.Thread.run(Thread.java:764) 

Video break hls

video break with 3 seconds time interval and show try again alert

try gain and try again

trying to play video from local raw folder but this error.........
E/ExoPlayerImplInternal: Source error.

It always crash Error inflating class com.potyvideo.library.AndExoPlayerView

2020-04-07 02:04:47.420 18114-18114/com.app.a E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.a, PID: 18114
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.a/com.app.a.resourcehelper.VideoPlayer}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.potyvideo.library.AndExoPlayerView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2928)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.potyvideo.library.AndExoPlayerView
Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class com.potyvideo.library.AndExoPlayerView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.app.a.resourcehelper.VideoPlayer.onCreate(VideoPlayer.java:42)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
Caused by: android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class com.google.android.exoplayer2.ui.SimpleExoPlayerView
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.exoplayer2.ui.SimpleExoPlayerView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
2020-04-07 02:04:47.426 18114-18114/com.app.a E/AndroidRuntime: at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.potyvideo.library.AndExoPlayerView.initializeView(AndExoPlayerView.java:192)
at com.potyvideo.library.AndExoPlayerView.(AndExoPlayerView.java:176)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.app.a.resourcehelper.VideoPlayer.onCreate(VideoPlayer.java:42)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3063)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1823)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
Caused by: java.lang.BootstrapMethodError: Exception from call site #87 bootstrap method
at com.google.android.exoplayer2.ui.PlayerControlView.(PlayerControlView.java:339)
at com.google.android.exoplayer2.ui.PlayerView.(PlayerView.java:463)
at com.google.android.exoplayer2.ui.PlayerView.(PlayerView.java:313)
at com.google.android.exoplayer2.ui.SimpleExoPlayerView.(SimpleExoPlayerView.java:34)
... 39 more
Caused by: java.lang.ClassCastException: Bootstrap method returned null
... 43 more

No audio in some videos

Hello.

I have a issue with playing audio in some videos. I think player is missing some codecs. Most of the the videos play perfect but some with no sound only video. The same videos working in vlc on my laptop with sound but no sound in magical player. I think it is codecs issue.

VideoPlayer 16:9 Height

Hi
tnx for your library
i need a 16:9 width and height for show content under my video player

Using spécific User-Agent with MagicalExoPlayer ?

Hi, we can use a spécific User-Agent with MagicalExoPlayer ?
I tried this :

  HashMap<String , String> extraHeaders = new HashMap<>();
  extraHeaders.put("User-Agent","My User Agent");
  andExoPlayerView.setSource("STREAM_URL", extraHeaders);

But i have still the original ExoPlayer User-Agent, how to do it ?
thanks

add dependency

سلام من توی اضافه کردن لایبرری به پروژه ام مشکل دارم ممنون میشم راهنماییم کنید ..
[email protected]

Are there any callbacks here?

Hi, thanks for your awesome player, but i need to know when video is over or video loaded or something else. Can i get some callback from this player?

Default interface methods are only supported starting with Android N (--min-api 24)

After implementing while building the application getting the following errors:

  1. Default interface methods are only supported starting with Android N (--min-api 24): java.lang.CharSequence com.google.android.exoplayer2.ui.PlayerNotificationManager$MediaDescriptionAdapter.getCurrentSubText(com.google.android.exoplayer2.Player)

  2. Default interface methods are only supported starting with Android N (--min-api 24): void com.google.android.exoplayer2.Player$EventListener.onIsPlayingChanged(boolean)

  3. Invoke-customs are only supported starting with Android O (--min-api 26)

FullScreen

FullScreen mode rotate all views in screen! why?

set TimeOut

how to set time out when play streaming video

NullPointer issue just when added view in xml

aused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.AppCompatImageButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

Caused by: android.view.InflateException: Binary XML file line #23: Binary XML file line #18: Error inflating class com.potyvideo.library.AndExoPlayerView
Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class com.potyvideo.library.AndExoPlayerView
Caused by: java.lang.reflect.InvocationTargetException

Not able to set start position of aspect ratio (Left/right)

I want to play a single video in tow player instance in 1:1 aspect ratio from left side in one player and other half portion of frem in the second player, I tried 1:1 aspect ratio but it crop video from the center there is any option available for set aspect ration from the left or right side?

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.