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 |