Page 1 of 1

Cannot cast to Chromecast 2, but Chromecast Audio works

PostPosted: Tue Apr 26, 2016 6:50 pm
by Tartarus
Problem Description: I cannot cast audio to my Chromecast 2. I can connect to the Chromecast (and on the TV the application does indeed appear), but when I select a file and press play (have tried with both MP3 and Flac) nothing happens. DSub on my phone just says "Buffering" and on the Web Client from my Laptop nothing happens when I press the play button. The same happens if I play without connecting to the Chromecast. Playback works fine, but the moment I connect to the Chromecast it hangs at "Buffering".

The strange thing is that I also have a Chromecast Audio on the same WiFi network, and that works fine. Both with Flac and MP3, with and without transcoding.

Troubleshooting Steps: I have tried both with and without transcoding for the DSubCC player. I have tried without SSL on the server and with a certificate from Lets Encrypt. Everything I tried works on the Chromecast Audio, but not the regular Chromecast 2.

Playback Application and version: DSub and the Subsonic web interface.

Subsonic Version: 6.0.beta2 (build ef60a8) – March 20, 2016

Server Version: jetty-6.1.x, java 1.8.0_91, Linux (53.6 MB / 133.5 MB)

Hardware Platform: CentOS 7 64-bit on a standard Intel PC.

Output from ffmpeg -i:

Code: Select all
ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-nonfree --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-nvenc --enable-nonfree --extra-cflags=-I/usr/include/nvenc --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100


Log: When I start playing on the Chromecast 2:

Code: Select all
[2016-04-26 20:32:27,386] DEBUG StreamController - GET /rest/stream.view?u=Michael&p=enc:4b786e694131597165764a66426d5a5030386a45&v=1.2.0&c=DSubCC&id=2287&format=raw, Range: bytes=0-
[2016-04-26 20:32:27,389] DEBUG StreamController - Content-Length: 7301818
[2016-04-26 20:32:27,389] DEBUG StreamController - Content-Range: 0-7301817/7301818


Log: When I stop playing on the Chromecast 2 and disconnect from it (the only way to stop, since the play button does not respond):

Code: Select all
[2016-04-26 20:33:05,053] WARN RESTFilter - Error in REST API: EofException
org.mortbay.jetty.EofException
   at org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:760)
   at org.mortbay.jetty.AbstractGenerator$Output.flush(AbstractGenerator.java:564)
   at org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:907)
   at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:628)
   at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:575)
   at com.google.common.io.ByteStreams.copy(ByteStreams.java:74)
   at com.google.common.io.ByteSource.copyTo(ByteSource.java:220)
   at net.sourceforge.subsonic.controller.StreamController.sendFile(StreamController.java:300)
   at net.sourceforge.subsonic.controller.StreamController.handleRequest(StreamController.java:209)
   at net.sourceforge.subsonic.controller.RESTController.stream(RESTController.java:1544)
   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.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.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
   at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:148)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
   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:113)
   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.RESTFilter.doFilter(RESTFilter.java:60)
   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:59)
   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.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)
   at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:626)
   at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Caused by: java.net.SocketException: Connection reset
   at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
   at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
   at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:431)
   at sun.security.ssl.OutputRecord.write(OutputRecord.java:417)
   at sun.security.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:876)
   at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:847)
   at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
   at org.mortbay.io.ByteArrayBuffer.writeTo(ByteArrayBuffer.java:158)
   at org.mortbay.io.bio.StreamEndPoint.flush(StreamEndPoint.java:122)
   at org.mortbay.jetty.HttpGenerator.flush(HttpGenerator.java:693)
   ... 74 more

[2016-04-26 20:33:05,059] ERROR JAXBWriter - Failed to marshal JAXB
java.lang.IllegalStateException: STREAM
   at org.mortbay.jetty.Response.getWriter(Response.java:583)
   at net.sourceforge.subsonic.controller.JAXBWriter.writeResponse(JAXBWriter.java:140)
   at net.sourceforge.subsonic.controller.JAXBWriter.writeErrorResponse(JAXBWriter.java:154)
   at net.sourceforge.subsonic.filter.RESTFilter.handleException(RESTFilter.java:76)
   at net.sourceforge.subsonic.filter.RESTFilter.doFilter(RESTFilter.java:62)
   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:59)
   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.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)
   at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:626)
   at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

[2016-04-26 20:33:05,059] ERROR RESTFilter - Failed to write error response.
java.lang.IllegalStateException: STREAM
   at org.mortbay.jetty.Response.getWriter(Response.java:583)
   at net.sourceforge.subsonic.controller.JAXBWriter.writeResponse(JAXBWriter.java:140)
   at net.sourceforge.subsonic.controller.JAXBWriter.writeErrorResponse(JAXBWriter.java:154)
   at net.sourceforge.subsonic.filter.RESTFilter.handleException(RESTFilter.java:76)
   at net.sourceforge.subsonic.filter.RESTFilter.doFilter(RESTFilter.java:62)
   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:59)
   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.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:227)
   at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:626)
   at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)


Log: When I start playing and a few seconds later stop on the Chromecast Audio:

Code: Select all
[2016-04-26 20:35:31,996] DEBUG StreamController - GET /rest/stream.view?u=Michael&p=enc:4b786e694131597165764a66426d5a5030386a45&v=1.2.0&c=DSubCC&id=2287&format=raw, Range: bytes=0-
[2016-04-26 20:35:31,998] DEBUG StreamController - Content-Length: 7301818
[2016-04-26 20:35:31,998] DEBUG StreamController - Content-Range: 0-7301817/7301818
[2016-04-26 20:35:42,994] DEBUG StreamController - Wrote 7301818 bytes of 7301818 requested

Re: Cannot cast to Chromecast 2, but Chromecast Audio works

PostPosted: Wed Apr 27, 2016 7:24 am
by Tartarus
I should add that I have also tried with the stable release of Subsonic with the same result.

Also, the Chromecast 2 works fine with other services (YouTube, HBO Nordic, Spotify).

Re: Cannot cast to Chromecast 2, but Chromecast Audio works

PostPosted: Mon May 02, 2016 4:46 pm
by daneren2005
Can you try sending me a log from DSub (Home tab -> three dot menu -> Send Logs) so I can see if there is any helpful information in there?