Changes

Jump to navigation Jump to search
6,556 bytes added ,  22:56, 23 July 2022
Line 1: Line 1: −
to play as jukebox on the server
+
you might get this error trying to play music as jukebox (using internal soundcard) :
   −
first you need to change ffmpeg, it is too recent for our kernel !
+
you should rather do:
   −
# /var/madsonic/transcode/ffmpeg -i ./01-*
+
https://bugs.contribs.org/show_bug.cgi?id=10700
FATAL: kernel too old
  −
Erreur de segmentation
     −
I have taken the ffmpeg from the package subsonic for sme it works well
     −
  mv /var/madsonic/transcode/ffmpeg /var/madsonic/transcode/ffmpeg.old
+
<code>
  cp -a /var/subsonic/transcode/ffmpeg /var/madsonic/transcode/
+
tail -f /var/madsonic/madsonic.log
 +
[2020-01-26 10:44:08,478] DEBUG TranscodeInputStream - Starting transcoder: [/var/madsonic/transcode/ffmpeg] [-ss] [0] [-i] [/home/e-smith/files/ibays/musique/files/emon.mp3] [-v] [0] [-f] [au] [-]
 +
[2020-01-26 10:44:08,850] ERROR JukeboxService - Error in jukebox: java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian is supported.
 +
java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian is supported.
 +
at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:479)
 +
at javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:606)
 +
at net.sourceforge.subsonic.service.jukebox.AudioPlayer.<init>(AudioPlayer.java:60)
 +
at net.sourceforge.subsonic.service.JukeboxService.play(JukeboxService.java:110)
 +
at net.sourceforge.subsonic.service.JukeboxService.updateJukebox(JukeboxService.java:78)
 +
at net.sourceforge.subsonic.ajax.PlayQueueService.convert(PlayQueueService.java:529)
 +
at net.sourceforge.subsonic.ajax.PlayQueueService.doSkip(PlayQueueService.java:123)
 +
at net.sourceforge.subsonic.ajax.PlayQueueService.skip(PlayQueueService.java:116)
 +
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 +
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 +
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 +
at java.lang.reflect.Method.invoke(Method.java:498)
 +
at org.directwebremoting.impl.CreatorModule$1.doFilter(CreatorModule.java:230)
 +
at org.directwebremoting.impl.CreatorModule.executeMethod(CreatorModule.java:242)
 +
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:358)
 +
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:311)
 +
at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:105)
 +
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:126)
 +
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:144)
 +
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
 +
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
 +
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
 +
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
 +
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:124)
 +
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:174)
 +
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.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
 +
at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
 +
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
 +
at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
 +
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
 +
at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:54)
 +
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
 +
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
 +
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
 +
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
 +
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
 +
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
 +
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
 +
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
 +
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
 +
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
 +
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
 +
at org.eclipse.jetty.server.Server.handle(Server.java:370)
 +
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
 +
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
 +
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
 +
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
 +
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
 +
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
 +
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
 +
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
 +
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
 +
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
 +
at java.lang.Thread.run(Thread.java:748)
    +
</code>
   −
  /var/madsonic/transcode/ffmpeg -i ./01-*
+
to play as jukebox on the server
ffmpeg version N-31780-gd5d74cf, Copyright (c) 2000-2011 the FFmpeg developers
  −
  built on Aug  9 2011 14:18:27 with gcc 4.5.2
  −
  configuration: --disable-ffplay --disable-ffprobe --disable-ffserver --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libvpx --enable-libtheora  --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-version3 --enable-bzlib --enable-static --disable-shared --extra- libs=-static --extra-cflags=--static
  −
  libavutil    51. 11. 1 / 51. 11. 1
  −
  libavcodec  53.  9. 1 / 53.  9. 1
  −
  libavformat  53.  6. 0 / 53.  6. 0
  −
  libavdevice  53.  2. 0 / 53.  2. 0
  −
  libavfilter  2. 28. 1 /  2. 28. 1
  −
  libswscale    2.  0. 0 /  2.  0. 0
  −
  libpostproc  51.  2. 0 / 51.  2. 0
  −
./01-*: No such file or directory
  −
 
  −
 
  −
then find your audio device and configure
  −
 
     −
  yum install java-1.7.0-openjdk-devel java-openjdk-devel -y
+
  yum install java-1.8.0-openjdk-devel java-openjdk-devel -y
      Line 73: Line 133:  
Now edit sound.properties in Java installation used to run SubSonic and add:
 
Now edit sound.properties in Java installation used to run SubSonic and add:
   −
javax.sound.sampled.Clip=#Intel [plughw:0,0]
+
javax.sound.sampled.Clip=#Intel [plughw:0,0]
javax.sound.sampled.Port=#Port Intel [hw:0]
+
javax.sound.sampled.Port=#Port Intel [hw:0]
javax.sound.sampled.SourceDataLine=#Intel [plughw:0,0]
+
javax.sound.sampled.SourceDataLine=#Intel [plughw:0,0]
javax.sound.sampled.TargetDataLine=#Intel [plughw:0,0]
+
javax.sound.sampled.TargetDataLine=#Intel [plughw:0,0]
   −
In my case, file was: /
+
In my case, files were in one of these: /
 +
vim /usr/lib/jvm/java-1.8.0/jre/lib/sound.properties
 
  vim /usr/lib/jvm/java-1.7.0/jre/lib/sound.properties
 
  vim /usr/lib/jvm/java-1.7.0/jre/lib/sound.properties
 
  vim /usr/lib/jvm/java-1.6.0/jre/lib/sound.properties  
 
  vim /usr/lib/jvm/java-1.6.0/jre/lib/sound.properties  
Line 84: Line 145:  
that works, but now ALL Java apps on my system output audio to that device - which defeats the purpose of having ONLY music played on that device, avoiding system sounds like incoming mail notifications blowing your ears out at 110 decibels....
 
that works, but now ALL Java apps on my system output audio to that device - which defeats the purpose of having ONLY music played on that device, avoiding system sounds like incoming mail notifications blowing your ears out at 110 decibels....
    +
Adding -Djavax.sound.sampled.SourceDataLine="#Audio [plughw:1,0]" to java command line does not work in any combination I could think of, with or without other lines I added to sound.properties file.
    +
Does anyone know how to achieve this for SubSonic only, without using system-wide configuration file?
   −
alternatively :
  −
vim /usr/bin/madsonic
  −
Adding after -verbose:gc \ line
  −
 
  −
  '-Djavax.sound.sampled.SourceDataLine=#Intel [plughw:0,0]'\
     −
should work ...
+
sources
       +
# http://forum.subsonic.org/forum/viewtopic.php?t=2038
 +
# http://gravyflex.wordpress.com/2013/10/18/supersonic-subsonic-jukebox-mode-config/
 +
# http://forum.subsonic.org/forum/viewtopic.php?f=5&t=8374&start=45
 +
# http://mj2p.co.uk/a-raspberry-pi-subsonic-jukebox-using-java-8/
 +
# http://forum.subsonic.org/forum/viewtopic.php?t=2879%29
 +
# http://forum.subsonic.org/forum/viewtopic.php?f=2&t=9303
    +
== opensource alternatives ==
   −
http://forum.subsonic.org/forum/viewtopic.php?t=2038
+
# https://github.com/airsonic-advanced/airsonic-advanced
http://gravyflex.wordpress.com/2013/10/18/supersonic-subsonic-jukebox-mode-config/
+
# armpache
 +
# nextcloud
Super Admin, Wiki & Docs Team, Bureaucrats, Interface administrators, Administrators
3,250

edits

Navigation menu