Home of the Squeezebox™ & Transporter® network music players.
Page 3 of 7 FirstFirst 12345 ... LastLast
Results 21 to 30 of 70
  1. #21
    Senior Member
    Join Date
    Dec 2009
    Location
    Albinea (Bologna Area) Italy
    Posts
    604
    Quote Originally Posted by mherger View Post
    > Sure is possible to transcode the stream, I normally do.

    "normally"? Are you transcoding the Qobuz stream? If so, what if you
    didn't?...

    --

    Michael
    I was waiting for this question... Answer is I could not compare exactly in the same moment, but I've tried to have one player with transcoding and the other without, not sinced and had same problems, then tried to have only the one without transcoding and had same kind of problems.

    People claiming for same problems are not transcoding.

    I'm quite sure the problem is bandwidth: it's mainly at 5.00 PM - 23:00 PM, never or almost never during working time or by night, not sure is my ADSL provider or Qobuz servers.
    __________________________________________________ ______________________
    Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See www.marcoc1712.it

  2. #22
    Senior Member
    Join Date
    Dec 2009
    Location
    Albinea (Bologna Area) Italy
    Posts
    604
    Quote Originally Posted by bpa View Post
    I believe Qobuz have a webplayer ?
    Does it have gaps ?
    If not how does it do streaming ? The Web player approach may then be best suited to SB as it should not involve disk storage or large caches. Chrome/Firefox console "network" tabs are great for analysing web players.

    edit:

    Since Qobuz webplayer supports chromecast - this means the web playing streams are probably either normal http or chunked http (DASH, HLS etc,).
    Just noticied that web player do cache in advance for at least 45 secs of music during playback, see the light blue line in progress bar, from network console you only see one request that remain opened for all the stream time, apparently no control messages are exchanged, or at leats I could not see anyone at application level.

    EDIT:

    The stream is simple http, content type = FLAC, you could copy the request form header and execute it in a fresh browser windows, it will open the browser media player and play, is a standard, plain flac file. you could do anything you like with it.
    Last edited by marcoc1712; 2018-01-17 at 08:39.
    __________________________________________________ ______________________
    Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See www.marcoc1712.it

  3. #23
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    15,719
    Quote Originally Posted by marcoc1712 View Post
    Just noticied that web player do cache in advance for at least 45 secs of music during playback, see the light blue line in progress bar, from network console you only see one request that remain opened for all the stream time, apparently no control messages are exchanged, or at leats I could not see anyone at application level.

    EDIT:

    The stream is simple http, content type = FLAC, you could copy the request form header and execute it in a fresh browser windows, it will open the browser media player and play, is a standard, plain flac file. you could do anything you like with it.
    What does the web player HTTP Get request look like - get the browser console to dump all the headers and full request URL with all associated parmaters (sometimes parameters at end of URL can affect the request).

  4. #24
    Senior Member
    Join Date
    Dec 2009
    Location
    Albinea (Bologna Area) Italy
    Posts
    604
    Quote Originally Posted by bpa View Post
    What does the web player HTTP Get request look like - get the browser console to dump all the headers and full request URL with all associated parmaters (sometimes parameters at end of URL can affect the request).
    bpa, I retain myself to write here all the details, you have API key and user auth, replaced with xxx, if you need more I'll send you a pm.

    looks to m e is a standard htttp GET request for a file.

    Request URL:http://streaming.qobuz.com/file?uid=...p=xxx&hmac=xxx
    Request Method:GET
    Status Code:206 Partial Content
    Remote Address:54.192.27.226:80
    Referrer Policy:no-referrer-when-downgrade
    Response Headers
    view source
    Accept-Ranges:bytes
    Cache-Controlublic, max-age=3592
    Connection:keep-alive
    Content-Length:13270331
    Content-Range:bytes 0-13270330/13270331
    Content-Type:audio/flac
    Date:Wed, 17 Jan 2018 15:26:31 GMT
    ETagoEIx2eA2r5sGdvfYBao4A==
    Last-Modified:Fri, 05 Jan 2018 15:49:09 GMT
    Server:Microsoft-IIS/8.5
    Via:1.1 e6b91293dd7890a2ad1d12ed6444c502.cloudfront.net (CloudFront)
    X-Amz-Cf-Id:xxxx==
    X-Cache:Miss from cloudfront
    X-Origin:1
    X-Request-Id:f234963b-1b48-4b80-8d87-474206d81419
    Request Headers
    view source
    Accept:*/*
    Accept-Encoding:identity;q=1, *;q=0
    Accept-Language:it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7
    Connection:keep-alive
    Cookie:__sonar=17375302106054986336; _qobuz_remember=2c9911fa948fac606f160cdd6ba76e61; userCookie=480573; _ga=GA1.2.1124330481.1491413719; __utmz=47190311.1516040885.11.2.utmcsr=google|utmc cn=(organic)|utmcmd=organic|utmctr=(not%20provided ); __utmc=47190311; __utma=47190311.1124330481.1491413719.1516109985.1 516197963.13; _gid=GA1.2.1541090001.1516197964; qobuz-session-aws=f16d67c7a75ce049491e7138fd8931d4:542bde81e3634 e3df890ed6c5368ccb1618ccf37
    Host:streaming.qobuz.com
    Range:bytes=0-
    Referer:http://play.qobuz.com/album/j9fvec0dul4zb
    User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
    Query String Parameters
    view source
    view URL encoded
    uid:xxx
    eid:xxx
    fmt:6
    app_id:xxx
    cid:xxx
    etsp:xxx
    hmac:xxx
    Last edited by marcoc1712; 2018-01-17 at 08:48.
    __________________________________________________ ______________________
    Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See www.marcoc1712.it

  5. #25
    Senior Member
    Join Date
    Dec 2009
    Location
    Albinea (Bologna Area) Italy
    Posts
    604
    Quote Originally Posted by bpa View Post
    I believe Qobuz have a webplayer ?
    Does it have gaps ?.
    Yes, few minutes ago, as usal at 17.00 -18.00 PM, I had dropouts listening to qobuz via squeezebox, then I tried web player and i had dropouts here too. The interesting thing is that the 'buffer' that his afternoon was 45 secs stable, now is much less: 20 to few secs and when less than 5 it stops play until it raise again.

    Starting again the track solves the problem and the buffer line stay at the position reached before restarting, meaning to me the buffer/cache contains all the content downloaded for the track, it's not circular or, if it is, is bigger than the time I've played. A temporary file?
    Last edited by marcoc1712; 2018-01-17 at 10:02.
    __________________________________________________ ______________________
    Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See www.marcoc1712.it

  6. #26
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    15,719
    Quote Originally Posted by marcoc1712 View Post
    bpa, I retain myself to write here all the details, you have API key and user auth, replaced with xxx, if you need more I'll send you a pm.

    looks to m e is a standard htttp GET request for a file.

    Request URL:http://streaming.qobuz.com/file?uid=480573&eid=46396278&fmt=6&app_id=xxx&cid=xxx& etsp=xxx&hmac=xxx]
    .
    Status Code:206 Partial Content.

    .
    Accept-Ranges:bytes
    Cache-Control: public, max-age=3592
    Connection:keep-alive
    Content-Length:13270331
    Content-Range:bytes 0-13270330/13270331
    Content-Type:audio/flac
    This indicates that Qobuz when streaming a file - does not send the file in one chunk (i.e. status 206 Partial Content) so will require multiple GETs. I wonder whether this is part of the "gaps" problem.

  7. #27
    Senior Member
    Join Date
    Dec 2009
    Location
    Albinea (Bologna Area) Italy
    Posts
    604
    Quote Originally Posted by bpa View Post
    This indicates that Qobuz when streaming a file - does not send the file in one chunk (i.e. status 206 Partial Content) so will require multiple GETs. I wonder whether this is part of the "gaps" problem.
    Seems to me that is prepared to, but in reality it asks for 0-13270330 over 13270331 bytes. Maybe is the way it handle pause, resume, fast forward and seek inside the stream, but in the normal use it always hit one GET and just waits.

    Any way, this is up to the client, the server - if capable - will send the partial chunk else the entire resource as usual. I don't think the plugin is asking for partial chunks, do you think it could help?
    __________________________________________________ ______________________
    Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See www.marcoc1712.it

  8. #28
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    15,719
    Quote Originally Posted by marcoc1712 View Post
    Seems to me that is prepared to, but in reality it asks for 0-13270330 over 13270331 bytes. Maybe is the way it handle pause, resume, fast forward and seek inside the stream, but in the normal use it always hit one GET and just waits.

    Any way, this is up to the client, the server - if capable - will send the partial chunk else the entire resource as usual. I don't think the plugin is asking for partial chunks, do you think it could help?
    Partial chunk is the "response" from Qobuz - why would say 206 "Partial" when in fact it is delivering all content so code 200 would be proper. The content length could mess up LMS as I think it uses the length for the jump/rew.

    I think need to check LMS and Plugin code on what happens when 206 code is returned - how does it differ from 200.
    What does Webplayer do when 206 is returned and when all content all is read - does it do a second Get ?

  9. #29
    Senior Member
    Join Date
    Dec 2009
    Location
    Albinea (Bologna Area) Italy
    Posts
    604
    Quote Originally Posted by bpa View Post
    Partial chunk is the "response" from Qobuz - why would say 206 "Partial" when in fact it is delivering all content so code 200 would be proper. The content length could mess up LMS as I think it uses the length for the jump/rew.

    I think need to check LMS and Plugin code on what happens when 206 code is returned - how does it differ from 200.
    What does Webplayer do when 206 is returned and when all content all is read - does it do a second Get ?
    Yes, (with if-Range instead of Range) and it returns 200, then request the new track. Is not completlely clear to me, but seems that when it stops for any reason (i.e. to jump to a new point) it always asks for the last 2Kb (with if-Range) and receives 200, then ask again for data starting from the new point to the end -1, as before.

    AFAIK, content length,when awaillable, is always the entire, not the partial, also when "Range" is specified in the request header.

    LMS when used with "I" streaming method (the one used for the plugin) disables search, so no jump/rew is allowed.

    This feature is an option, also if the server could "Accept-Range" it will answer with partial chunks only if asked for with "Range" or "If-Range" in the request header. I really don't think LMS is currently adding "Ranges" into the request header, so I think it will never receive back a 206 answer, I'll check http module for that, but I'll be suprised if it actually requests Range and do not handles properly.
    __________________________________________________ ______________________
    Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See www.marcoc1712.it

  10. #30
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    15,719
    Quote Originally Posted by marcoc1712 View Post
    Yes, (with if-Range instead of Range) and it returns 200, then request the new track. Is not completlely clear to me, but seems that when it stops for any reason (i.e. to jump to a new point) it always asks for the last 2Kb (with if-Range) and receives 200, then ask again for data starting from the new point to the end -1, as before.

    AFAIK, content length,when awaillable, is always the entire, not the partial, also when "Range" is specified in the request header.
    Not quite sure what you mean here - I need to think abou tit.

    LMS when used with "I" streaming method (the one used for the plugin) disables search, so no jump/rew is allowed.
    No - "I" allows for search and length as long as total length of stream is known. For BBCiPlayer plugin when stream starts ,lengthg ois not known but fater headers are hread, length ios know, added to LMS "Track" object and then LMS will put up the timebar and, jump to a time and ff/rew will work.
    So if no jump is appearing then no "Length" heade in response or when initial URL is determined (i.e. qobuz://) an track object created/

    This feature is an option, also if the server could "Accept-Range" it will answer with partial chunks only if asked for with "Range" or "If-Range" in the request header. I really don't think LMS is currently adding "Ranges" into the request header, so I think it will never receive back a 206 answer, I'll check http module for that, but I'll be suprised if it actually requests Range and do not handles properly.
    LMS includes Ranges when playing Podcast - which is very similar (i.e. streaming http stream) when users want to jump to a specific spot. How does Qobuz http playing differ from the Podcast http playing ?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •