JakeSteam / Vidsta

Easily implementable and customisable Android video player library
https://play.google.com/store/apps/details?id=uk.co.jakelee.exposurevideoplayersample
GNU General Public License v3.0
37 stars 13 forks source link

SetVideoSource #3

Closed Sifogiannos closed 6 years ago

Sifogiannos commented 7 years ago

When i try to set a second url in function setViewSource for the second player it says "IllegalStateException".

Code example

VidstaPlayer player = (VidstaPlayer) findViewById(R.id.player);
player.setVideoSource("http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4");
...
...
public void changeUrl(String url){
   player.setVideoSource(url);
}
JakeSteam commented 7 years ago

Can you try stopping the first video first? It's most likely getting confused about the current state of the player.

Sifogiannos commented 7 years ago

Can i stop it programatically?

Actualy the video has not started because i have set property player.setAutoPlay(false);

JakeSteam commented 7 years ago

Should be able to. I'm not near my machine atm, but something like player.stop()?

Sifogiannos commented 7 years ago

Does not seems to work either.

JakeSteam commented 7 years ago

Darn. I'll take a look for next release, a possible workaround would be programmatically creating the VidstaPlayer as a new object on-screen, although it will be inefficient.

Sifogiannos commented 7 years ago

Creating about 300+ players it will be very inefficient, I will find some solution. Anyway thanks for your quick response. I will wait for the next release.

Wolf00Bomber commented 7 years ago

I am encountering the exact same issue, please resolve this as soon as possible.

Wolf00Bomber commented 7 years ago

Attached Stack Trace:

E/MediaPlayer: attachNewPlayer called in state 32 E/AndroidRuntime: FATAL EXCEPTION: main Process: com., PID: 24376 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=131272, result=-1, data=Intent { dat=file:///storage/emulated/0/Pictures//VID_20170811_103648.mp4 flg=0x1 (has extras) }} to activity {com./com..NamedActivity}: java.lang.IllegalStateException at android.app.ActivityThread.deliverResults(ActivityThread.java:3852) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3895) at android.app.ActivityThread.access$1600(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5582) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.IllegalStateException at android.media.MediaPlayer._setDataSource(Native Method) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1128) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1113) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1092) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1069) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1023) at uk.co.jakelee.vidsta.VidstaPlayer.setUpVideoPlayer(VidstaPlayer.java:376) at uk.co.jakelee.vidsta.VidstaPlayer.setVideoSource(VidstaPlayer.java:362) at uk.co.jakelee.vidsta.VidstaPlayer.setVideoSource(VidstaPlayer.java:357) at com..fragments.NamedFragment.addVideo(NamedFragment.java:500) at com..fragments.NamedFragment.addMedia(NamedFragment.java:485) at com..fragments.NamedFragment.onActivityResult(NamedFragment.java:470) at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164) at com..NamedActivity.onActivityResult(NamedActivity.java:115) at android.app.Activity.dispatchActivityResult(Activity.java:6526) at android.app.ActivityThread.deliverResults(ActivityThread.java:3848) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3895)  at android.app.ActivityThread.access$1600(ActivityThread.java:154)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1445)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5582)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

joseAugustoCR commented 6 years ago

Just call videoPlayer.reset() before videoPlayer.setDataSource() on setUpVideoPlayer() method. Can you provide an update with this solution?

JakeSteam commented 6 years ago

I'm afraid I don't have time to update the project, pull requests are welcomed.