Re: ServiiGo (Android 3G/4G/Wifi Playback App)
Thought I would pass this along.
I have found it necessary to add a line to your standard profile for online transcoding of AVC_TS_MP_SD_AAC_MULT5_ISO-0 streams.
These streams are produced by "Livestreamer", which I invoke with my ffmpeg wrapper when a url (From the console) is of the form lst://http://.... and pipe to ffmpeg.
Livestreamer supports the extraction of many web site streams such as Ustream, and this avoids the need to write Webresource plugins for them.
They play fine on the PC because with the flv_player profile these mpegts containers fall thru the online rules but are remixed to flv by the transcoding rules. With your standard profile they fall thru the online rules but there are no transcoding rules to remux them so they fail.
Without this line playing "Original" AVC_TS_MP_SD_AAC_MULT5_ISO-0 streams gave me this error and an MX "could not play" message.
- Code:
2016-01-17 11:35:43,472 DEBUG [CDSRetrieveMediaServerResource] GET http://192.168.1.10:23424/cds/resource/1000005450001726/MEDIA_ITEM/AVC_TS_MP_SD_AAC_MULT5_ISO-0/ORIGINAL?profile=serviigo_standard&authToken=b9803b6063ae40d6a96790f659fbe1ae&clientId=5d11c00c6e324a4ca2aea3a216b978fc HTTP/1.1, headers = [user-agent: Mozilla/5.0 (Linux; Android 6.0.1; en-US; Nexus 7 Build/MMB29K) MXPlayer/1.8.3,host: 192.168.1.10:23424,connection: Keep-Alive,accept-encoding: gzip]
2016-01-17 11:35:43,472 DEBUG [CDSRetrieveMediaServerResource] Creating client with id '5d11c00c6e324a4ca2aea3a216b978fc'
2016-01-17 11:35:43,475 WARN [ServiioStatusService] HttpCodeException occured. Returning error code 404 to the REST layer. Message: null
2016-01-17 11:35:43,475 DEBUG [ServiioStatusService] Detailed exception:
org.serviio.restlet.HttpCodeException
at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSRetrieveMediaServerResource.deliver(CDSRetrieveMediaServerResource.java:103)
at sun.reflect.GeneratedMethodAccessor261.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:524)
at org.restlet.resource.ServerResource.get(ServerResource.java:743)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:618)
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:679)
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:357)
at org.serviio.restlet.AbstractServerResource.doConditionalHandle(AbstractServerResource.java:49)
at org.serviio.restlet.AbstractProEditionServerResource.doConditionalHandle(AbstractProEditionServerResource.java:35)
at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractCDSServerResource.doConditionalHandle(AbstractCDSServerResource.java:59)
at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractRestrictedCDSServerResource.doConditionalHandle(AbstractRestrictedCDSServerResource.java:59)
at org.restlet.resource.ServerResource.handle(ServerResource.java:1014)
at org.restlet.resource.Finder.handle(Finder.java:246)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:155)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:211)
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:84)
at org.restlet.Application.handle(Application.java:384)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:155)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:211)
at org.restlet.Component.handle(Component.java:406)
at org.restlet.Server.handle(Server.java:516)
at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:72)
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:152)
at org.restlet.ext.simple.internal.SimpleContainer.handle(SimpleContainer.java:80)
at org.simpleframework.http.core.Dispatcher.dispatch(Dispatcher.java:121)
at org.simpleframework.http.core.Dispatcher.run(Dispatcher.java:103)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
After adding this line the stream remixed and played correctly.
- Code:
2016-01-17 12:27:49,617 DEBUG [CDSRetrieveMediaServerResource] GET http://192.168.1.10:23424/cds/resource/1000005450001941/MEDIA_ITEM/AVC_TS_MP_SD_AAC_MULT5_ISO-0/ORIGINAL?profile=serviigo_standard&authToken=b9803b6063ae40d6a96790f659fbe1ae&clientId=5d11c00c6e324a4ca2aea3a216b978fc HTTP/1.1, headers = [user-agent: Mozilla/5.0 (Linux; Android 6.0.1; en-US; Nexus 7 Build/MMB29K) MXPlayer/1.8.3,accept: */*,range: bytes=0-,connection: close,host: 192.168.1.10:23424,icy-metadata: 1]
2016-01-17 12:27:49,617 DEBUG [CDSRetrieveMediaServerResource] Creating client with id '5d11c00c6e324a4ca2aea3a216b978fc'
2016-01-17 12:27:49,620 DEBUG [AbstractAVTranscodingDeliveryEngine] Getting media info for transcoded version of file lst://http://www.ustream.tv/channel/live-iss-stream
2016-01-17 12:27:49,623 DEBUG [AbstractAVTranscodingDeliveryEngine] No suitable transcoding job exists yet, start one for client 'Identifier=5d11c00c6e324a4ca2aea3a216b978fc, Profile=ServiiGo (Standard)'
2016-01-17 12:27:49,623 DEBUG [FFMPEGWrapper] Invoking FFmpeg to transcode video file: lst://http://www.ustream.tv/channel/live-iss-stream
2016-01-17 12:27:49,624 DEBUG [ProcessExecutor] Starting C:\Program Files\Serviio\lib\ffdump.bat -fflags +genpts -threads 3 -analyzeduration 10000000 -i lst://http://www.ustream.tv/channel/live-iss-stream -y -threads 3 -c:v copy -c:a copy -map 0:0 -map 0:1 -sn -f mpegts pipe: