[SOLVED] Resampling MP3 with Lame failing since 4.6 upgrade

Need help? Post your questions here.

Moderator: moderators

[SOLVED] Resampling MP3 with Lame failing since 4.6 upgrade

Postby Japanorama » Tue Dec 27, 2011 2:36 am

<-------------------------Subsonic Help Request---------------------->
Problem Description: Since upgrading from 4.4 to the most recent version (4.6), MP3 files that need to be downsampled to meet the max bitrate requirements of the player are not transcoding properly. The server is then transmitting a truncated version of the file which cuts out before the end of the song, usually in about the middle of the song (so a 3-minute song cuts out at 1:30, and a 10-minute song cuts out around 5:00).
Troubleshooting Steps: I've identified that this only happens with .mp3 files, and then only those that are above the max bitrates I've set for my playback devices. But it does it reliably. Any file that requires lame to resample it to a different bitrate will fail in this way. The original files are fine (I've checked). I can't figure out how to get a more verbose error from lame. Log suggests that the "lame" file doesn't exist at /var/subsonic/transcode but it does. And it has the same permission bits as ffmpeg, which is working fine.
Playback Application and version: (Android player - v 3.3 and iSub music player v 3.0.4)
Subsonic Version: 4.6 (build 2585) – December 6, 2011
Server Version: jetty-6.1.x, java 1.6.0_22, Linux (53.3 MB / 74.6 MB)
Hardware Platform: Ubuntu Server 11.04 (64-bit)
Lame version: LAME 64bits version 3.98.4
Output from ffmpeg -i:
Code: Select all
FFmpeg version 0.6.2-4:0.6.2-1ubuntu1.1, Copyright (c) 2000-2010 the Libav developers
  built on Sep 16 2011 17:00:39 with gcc 4.5.2
  configuration: --extra-version=4:0.6.2-1ubuntu1.1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --disable-stripping --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0

Last ten log file lines:
Code: Select all
[2011-12-27 11:25:06,539] INFO PlaylistInputStream - iRabbit listening to "The Book Of Secrets/Loreena McKennitt-The Book of Secrets-05-The Highwayman.mp3"
[2011-12-27 11:25:06,541] DEBUG TranscodeInputStream - Starting transcoder: [/var/subsonic/transcode/lame] [-S] [-h] [--resample] [44.1] [-b] [128] [--tt] [The Highwayman] [--ta] [Loreena McKennitt] [--tl] [The Book of Secrets] [/tank/hrududu/Neuros/ON PLAYER/Loreena McKennitt/The Book Of Secrets/Loreena McKennitt-The Book of Secrets-05-The Highwayman.mp3] [-]
[2011-12-27 11:25:06,581] WARN TranscodingService - Failed to transcode /tank/hrududu/Neuros/ON PLAYER/Loreena McKennitt/The Book Of Secrets/Loreena McKennitt-The Book of Secrets-05-The Highwayman.mp3. Using original.
java.io.IOException: Cannot run program "/var/subsonic/transcode/lame": java.io.IOException: error=2, No such file or directory
   at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
   at net.sourceforge.subsonic.io.TranscodeInputStream.<init>(TranscodeInputStream.java:61)
   at net.sourceforge.subsonic.service.TranscodingService.createTranscodeInputStream(TranscodingService.java:374)
   at net.sourceforge.subsonic.service.TranscodingService.createDownsampledInputStream(TranscodingService.java:417)
   at net.sourceforge.subsonic.service.TranscodingService.getTranscodedInputStream(TranscodingService.java:236)
   at net.sourceforge.subsonic.io.PlaylistInputStream.prepare(PlaylistInputStream.java:134)
   at net.sourceforge.subsonic.io.PlaylistInputStream.read(PlaylistInputStream.java:96)
   at net.sourceforge.subsonic.io.PlaylistInputStream.read(PlaylistInputStream.java:88)
   at net.sourceforge.subsonic.controller.StreamController.handleRequest(StreamController.java:211)
   at net.sourceforge.subsonic.controller.RESTController.stream(RESTController.java:810)
   at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:616)
   at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
   at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
   at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
   at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
   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 net.sourceforge.subsonic.security.RESTRequestParameterProcessingFilter.doFilter(RESTRequestParameterProcessingFilter.java:122)
   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.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.headerComplete(HttpConnection.java:830)
   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
   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)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
   at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
   at java.lang.ProcessImpl.start(ProcessImpl.java:81)
   at java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
   ... 67 more

<-------------------------Subsonic Help Request---------------------->

Thanks for any advice...

Cheers,

Japanorama
Last edited by Japanorama on Thu Dec 29, 2011 3:59 am, edited 1 time in total.
User avatar
Japanorama
 
Posts: 3
Joined: Tue Dec 27, 2011 2:01 am

Re: Resampling MP3 with Lame failing since 4.6 upgrade

Postby foulou » Wed Dec 28, 2011 4:52 am

had the same problem,

I did a symbolic link to my lame binary

on ubuntu
Code: Select all
sudo apt-get update
sudo apt-get install lame ffmpeg

sudo su ==> need to be root for next steps

cd /var/subsonic/transcode/lame
mv lame lame.subsonic.bak

ln -s /usr/bin/lame /var/subsonic/transcode/lame


now it work fine
foulou
 
Posts: 1
Joined: Wed Dec 28, 2011 4:47 am

Re: Resampling MP3 with Lame failing since 4.6 upgrade

Postby Japanorama » Thu Dec 29, 2011 3:59 am

Hi Foulou,

Thanks! That completely solved the problem!

To all: is this documented somewhere?
User avatar
Japanorama
 
Posts: 3
Joined: Tue Dec 27, 2011 2:01 am


Return to Help

Who is online

Users browsing this forum: No registered users and 31 guests