Impossible to play song / video from InpuStream

225 views
Skip to first unread message

berr...@gmail.com

unread,
Jul 15, 2017, 5:57:02 PM7/15/17
to CodenameOne Discussions
Hello,

I try to create Media from MediaManager.createMedia with bytes array (which is a mp3 file) received from server and stored on device with Storage.
It fails with both ways in Simulator and on my device (Alcatel Idol 3) :
- InputStream inputStream =
new ByteArrayInputStream(myBytes);
-   InputStream inputStream = Storage.getInstance().createInputStream(myBytesArrayObjectName);
this.media = MediaManager.createMedia(inputStream, "audio/mp3");

Error stack trace:

MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
    at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
    at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
    at com.codename1.impl.javase.JavaSEPort$CodenameOneMediaPlayer.<init>(JavaSEPort.java:7624)
    at com.codename1.impl.javase.JavaSEPort$65.run(JavaSEPort.java:6306)
    at com.sun.javafx.application.PlatformImpl.lambda$null$117(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$118(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$450(GtkApplication.java:139)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.sun.media.jfxmedia.MediaException: Could not create player!
    at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:224)
    at com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:104)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:467)
    ... 10 more
java.io.IOException: java.lang.RuntimeException: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
    at com.codename1.impl.javase.JavaSEPort.createMedia(JavaSEPort.java:6326)
    at com.codename1.ui.Display.createMedia(Display.java:2925)
    at com.codename1.media.MediaManager.createMedia(MediaManager.java:125)
    at com.codename1.media.MediaManager.createMedia(MediaManager.java:94)
    at com.disco.discoclient.set.CardContainer.makeCard(CardContainer.java:118)
    at com.disco.discoclient.set.CardContainer.makeRecto(CardContainer.java:90)
    at com.disco.discoclient.set.CardContainer.makeRessource(CardContainer.java:79)
    at com.disco.discoclient.set.CardContainer.<init>(CardContainer.java:60)
    at com.disco.discoclient.set.SetForm.onCardReceived(SetForm.java:67)
    at com.disco.discoclient.client.MySocketConnection.lambda$requestCard$4(MySocketConnection.java:486)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
    at com.codename1.impl.javase.JavaSEPort$CodenameOneMediaPlayer.<init>(JavaSEPort.java:7632)
    at com.codename1.impl.javase.JavaSEPort$65.run(JavaSEPort.java:6306)
    at com.sun.javafx.application.PlatformImpl.lambda$null$117(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$118(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$450(GtkApplication.java:139)
    ... 1 more
Caused by: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
    at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
    at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
    at com.codename1.impl.javase.JavaSEPort$CodenameOneMediaPlayer.<init>(JavaSEPort.java:7624)
    ... 8 more
Caused by: com.sun.media.jfxmedia.MediaException: Could not create player!
    at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:224)
    at com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:104)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:467)
    ... 10 more

com.disco.discoclient.set.CardContainer.makeCard(CardContainer.java:118) contains
"this.media = MediaManager.createMedia(inputStream, "audio/mp3");".

First I was thinking that it could come from a bad mp3 file but it's like if it was not working with alls.
I thank you in advance for your help, I'm sure that I've missed something.

Berrien Samuel,

If you are experiencing an issue please mention the full platform your issue applies to:
IDE: IDEA
Desktop Ubuntu 16.04 LTS
Simulator
Device Android

Shai Almog

unread,
Jul 16, 2017, 12:51:58 AM7/16/17
to CodenameOne Discussions, berr...@gmail.com
How did you store the file?

berr...@gmail.com

unread,
Jul 17, 2017, 8:47:00 PM7/17/17
to CodenameOne Discussions, berr...@gmail.com
These lines are executed during the mp3 reception :

byte
[] data = (byte[]) Storage.getInstance().readObject(myBytesArrayObjectName);
if (data == null) {
data = new byte[myBytesArrayLength];
  data = Util.readFully(myInputStreamReader, data);;
Storage.getInstance().writeObject(myBytesArrayObjectName, data);
} else {
//In case I want to get back the bytes array
(byte[]) Storage.getInstance().readObject(myBytesArrayObjectName);
}

Shai Almog

unread,
Jul 18, 2017, 12:20:03 AM7/18/17
to CodenameOne Discussions, berr...@gmail.com
You mix object serialization (write/read Object) with regular streams. You should try storing the file as is using the stream methods and verify each stage (that the downloaded file is identical).

Samuel Berrien

unread,
Jul 18, 2017, 10:43:03 AM7/18/17
to Shai Almog, CodenameOne Discussions
I'm going to verify this important point.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages