Subsonic Jukebox Mode Error: No line matching interface

Need help? Post your questions here.

Moderator: moderators

Subsonic Jukebox Mode Error: No line matching interface

Postby dasilva333 » Wed Dec 01, 2010 2:27 pm

Hey I'm trying to setup my server as a jukebox, I really love Subsonic I think it's great however when I try to use jukebox mode it isnt working.

Here is my setup:
Code: Select all
Subsonic
Version   4.2 (build 1944) – November 21, 2010
Server   jetty-6.1.x, java 1.6.0_21, Linux (40.9 MB / 66.6 MB)
Ubuntu 9.04
Java SE for Embedded 6 Update 21 (Build 9) ARMv5 Linux - Headless, EABI, Soft Float, Little-Endian

Because of the arm architecture I used these instructions to switch from OpenJDK to Java: http://forum.subsonic.org/forum/viewtopic.php?p=14535

And Finally my sound card is:
Code: Select all
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: default [C-Media USB Audio Device   ], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
cat /proc/asound/cards
1 [default        ]: USB-Audio - C-Media USB Audio Device
                      C-Media USB Audio Device    at usb-orion-ehci.0-1.4, full speed
cat /proc/asound/modules
1 snd_usb_audio
cat /proc/asound/devices
  1:        : sequencer
32: [ 1]   : control
33:        : timer
48: [ 1- 0]: digital audio playback
56: [ 1- 0]: digital audio capture



Ok so thats my setup. Now the error I get is this:

Code: Select all
[2010-12-01 08:01:47,902] INFO JukeboxService - Starting jukebox player on behalf of admin
[2010-12-01 08:01:48,024] DEBUG JukeboxService - stateUpdated : OPENING:-1:java.io.BufferedInputStream@1168da1
[2010-12-01 08:01:48,029] INFO PlaylistInputStream - admin listening to "Muse/Muse - Assasain.mp3"
[2010-12-01 08:01:48,129] WARN JukeboxService - Error in BasicPlayer.play()
java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian is supported.
        at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:459)
        at javazoom.jlgui.basicplayer.BasicPlayer.createLine(Unknown Source)
        at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
        at javazoom.jlgui.basicplayer.BasicPlayer.open(Unknown Source)
        at net.sourceforge.subsonic.service.JukeboxService$JuxeboxPlayer.play(JukeboxService.java:153)
        at net.sourceforge.subsonic.service.JukeboxService.play(JukeboxService.java:76)
        at net.sourceforge.subsonic.ajax.PlaylistService.convert(PlaylistService.java:268)
        at net.sourceforge.subsonic.ajax.PlaylistService.play(PlaylistService.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:740)
        at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:744)
        at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:593)
        at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:90)
        at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
        at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
        at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
        at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
        at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:54)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:313)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)


I saw someone had a similar problem in this link:
http://forum.subsonic.org/forum/viewtopic.php?t=2038

However I'm not sure how to compile audioDevList in those instructions and I'm not sure what my audio device's name is so I can edit sound.properties.

Finally it seems the error implies that my device can't play that type of audio however I installed mpg321 and then ran mp3-decoder {samefile} and it plays fine via command line so it's not like the hardware doesn't actually support decoding it.

If anyone has any insight as to what this error could mean or even help me compile that audioDevList so I can try editing sound.properties that would be so great.

Thank you for your time.
dasilva333
 
Posts: 3
Joined: Wed Dec 01, 2010 2:13 pm

Postby dasilva333 » Wed Dec 01, 2010 7:16 pm

Update: I got the java code compiled and getMixerInfo doesnt return any mixers. Im thinking maybe Oracle's JRE doesnt support the Audio hooks?

I'm also thinking if I cant get it to work with java I'll just create my own custom player that'll script the commands using mp3-decoder or xmms2.

Any help would be apreciated. Thanks
dasilva333
 
Posts: 3
Joined: Wed Dec 01, 2010 2:13 pm

Postby Exrace » Thu Dec 02, 2010 3:24 am

Sounds like this usb audio device drivers are messed up.
Can you play audio with any other app on the Linux box?
Exrace
 
Posts: 218
Joined: Thu Nov 11, 2010 5:02 am

Postby dasilva333 » Thu Dec 02, 2010 4:27 am

Yeah like i said I can play audio fine with aplay and mp3-decoder which is why I was considering modifying the soruce code to use mp3-decoder instead of Javazoom but it seems like an intense change so I'm trying to figure out how else I can solve this.
dasilva333
 
Posts: 3
Joined: Wed Dec 01, 2010 2:13 pm

Re: Subsonic Jukebox Mode Error: No line matching interface

Postby devr » Wed Feb 08, 2012 2:42 am

Sorry to re-awaken a thread so old without no update. I had the same issue, and came up with a solution.

My situation was that if I ran the audioDevList (viewtopic.php?t=2038) with the openjdk java, i saw my USB sound device. If I ran it with Oracles Embedded JRE, no sound devices were seen. This is a problem for me, since running subsonic with openjdk6 java is dog slow and pegs my cpu at 100%. It is nice to have jukebox working, but the price was too high.

The issue seems to be the the Oracle Embedded JRE does not come with a library for alsa sound cards (libjsoundalsa.so), but openjdk6 does. So I just copied the library from openjdk6 to oracle ejre.. Which for my distro was something like this:
Code: Select all
cp /usr/lib/jvm/java-6-openjdk/jre/lib/arm/libjsoundalsa.so /opt/ejre1.6.0_30/lib/arm

After that, audioDevList was able to list my sound devices, and subsonic is able to work in jukebox mode with oracle ejre.

Hope this helps.
devr
 
Posts: 2
Joined: Wed Feb 08, 2012 2:30 am

Re: Subsonic Jukebox Mode Error: No line matching interface

Postby phlawn » Sun Feb 26, 2012 4:14 pm

devr,

That's fantastic work right there!

I had the EXACT same set of circumstances as you: oracle jre, and the program included above when run listed no sound devices.
And I did the copy of the libjsoundasla.so from openjdk and voila things just worked.
Really impressed.

May I ask how you landed on this solution?
I can't imagine just random trial and error, or maybe it was.
But I'm assuming you did a more methodical and informed triaging to arrive at this finding.
Do you mind sharing what you had to do - just for my own learning?

Thanks!
phlawn
 
Posts: 1
Joined: Sun Feb 26, 2012 4:07 pm


Return to Help

Who is online

Users browsing this forum: No registered users and 15 guests