Subsonic 6.0.beta1 released

Announcements and discussion of new releases.

Moderator: moderators

Re: Subsonic 6.0.beta1 released

Postby grheard » Fri Mar 04, 2016 5:07 pm

sindre_mehus wrote:I'm happy to say that I've made some major breakthroughs with respect to video streaming.

The next beta will have these video features:

- Selectable audio tracks
- Subtitles support
- Adaptive bitrate streaming
- Fullscreen support
- Scrubber thumbnails
- No Flash required
- No upfront conversion necessary (but still possible as a fallback)
- Works in Chrome, Firefox and Safari (haven't tried other browsers yet)

I'm really excited about this, as I think it's a major step forward for video in Subsonic :)

I'm estimating to have a new beta release ready within a week or two.

Sindre


Thank you!

I've been eagerly awaiting HTML5 video, but 6beta1 just didn't work for me.

I am away from home quite a lot. I rely on being able to play videos over a VPN into my home network. My ISP is TWC and my upload bandwidth is less than desirable. To play videos remotely, I have to be able to use 1k or below for the bitrate. When I first tried 6beta1 I was shocked to find out my bitrate control was gone and that I would have to recode a lot of my library (most are in mkv). I really look forward to the next beta.

Thanks for the hard work. This has been the best media platform I have ever used.
grheard
 
Posts: 7
Joined: Fri Nov 04, 2011 6:49 pm

Re: Subsonic 6.0.beta1 released

Postby acroyear » Sat Mar 05, 2016 3:49 pm

However, all transcoded files show 'Infinity:NaN:Nan' as a track length when playing through the HTML5 player.


VERY technical details follow, because to be honest, this is a very technical bug.

This is more likely a browser issue. The reality of mp3s is that "duration" is something that doesn't really exist. Shocking and stupid, but true. There is an estimate for it in variable bit rate files (like what you can buy from Google Play and Amazon), but Constant Bit Rate files actually have no means to tell the browser how long they are.

Subsonic uses range and content-length (estimate) headers in the wrapping HTTP response to attempt to work around this. It works for Firefox (all platforms I've got including Android) and for Chrome on Desktop for me.

It does NOT work on any Chromium-based browser for Android (I've filed this as a 'bug' with Chromium but gotten very little traction; its like explaining why a Norwegian Blue Parrot is dead). This means it has also 'broken' on Amazon Fire tablets and tvs with the 5.1 updates, whose webview based on Chromium 41. They're also messy in that currentTime doesn't actually update either on those boxes (though it used to with Chromium < 40 - they actually made it worse, not better).

So if the web player is getting NaN or Infinity for duration, it might help to know exactly what browser and OS you are using. Be as precise as possible (better still, also give the userAgent, if you know how to find it).

Why is this detail all relevant?

The ffmpeg command to downsample FLAC to MP3 use constant bit rate.

You might be able to fix it by adding a variable bit rate setting to the downsample command:

https://trac.ffmpeg.org/wiki/Encode/MP3

But no promises. It may also initially slow down start-up of playing because it would likely need to finish encoding the whole file in order to set the duration value in the header. On a fast server not doing anything else at the time, a 4 minute mp3 should only take about 4 to 10 seconds to do.
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby acroyear » Sat Mar 05, 2016 3:52 pm

(btw, on SubFire I have to do major hackery to get it to work past that bug - I use the duration value taken from the song's subsonic metadata, and keep my own seconds counter of how long I think it has been playing...mostly works, but a few files have 'fooled' it and ended earlier than they should - yes, this bug on Chrome Android means I don't even get a message telling me the song has actually ended!)
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby tranceConscious » Sun Mar 06, 2016 9:35 pm

Since the upgrade to the beta, I've noticed this...

Out of 10.2 terrabbytes of files
my library is 7193.14 GB.

I've made sure this is not permissions problem.
How can I investigate this?
What else could it be?
tranceConscious
 
Posts: 15
Joined: Wed Dec 02, 2015 11:17 am

Re: Subsonic 6.0.beta1 released

Postby IceFreak2000 » Mon Mar 07, 2016 9:25 am

acroyear wrote:(btw, on SubFire I have to do major hackery to get it to work past that bug - I use the duration value taken from the song's subsonic metadata, and keep my own seconds counter of how long I think it has been playing...mostly works, but a few files have 'fooled' it and ended earlier than they should - yes, this bug on Chrome Android means I don't even get a message telling me the song has actually ended!)


My current OS is Windows 10 Pro 1511.

When accessing Subsonic using Chrome (49.0.2623.75 m) from my work network the response for an audio stream looks like:

Code: Select all
HTTP/1.1 200 OK
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Accept-Ranges: bytes
ETag: 56990
Server: Microsoft-IIS/8.5
Set-Cookie: player-6564=1;Path=/;Expires=Tue, 07-Mar-17 09:04:26 GMT
Access-Control-Allow-Origin: *
X-Content-Duration: 193.0
X-Powered-By: ARR/2.5
Date: Mon, 07 Mar 2016 09:04:25 GMT
Transfer-Encoding: chunked
Content-Type: audio/mpeg
Connection: keep-alive


so I can see the 'X-Content-Duration' header is present and correct, but the UI shows 'Infinity:NaN:NaN' as the length. From a different network the response looks like:

Code: Select all
HTTP/1.1 206 Partial Content
Transfer-Encoding: chunked
Content-Type: audio/mpeg
Content-Range: bytes 0-589823/4632000
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Accept-Ranges: bytes
ETag: 56990
Server: Microsoft-IIS/8.5
Set-Cookie: player-6564=1;Path=/;Expires=Tue, 07-Mar-17 09:19:39 GMT
Access-Control-Allow-Origin: *
X-Content-Duration: 193.0
X-Powered-By: ARR/2.5
Date: Mon, 07 Mar 2016 09:19:39 GMT


It looks like the Content-Range header is being stripped by my work network access device. Subsonic 5.3 didn't seem to have an issue with this header being removed, but 6.0 beta 1 does.
IceFreak2000
 
Posts: 21
Joined: Wed Mar 23, 2011 1:42 pm
Location: United Kingdom

Re: Subsonic 6.0.beta1 released

Postby acroyear » Mon Mar 07, 2016 12:36 pm

Subsonic 5.3 used a flash player first, and fell back on html5 audio tag if flash wasn't found. 6.0b1 now uses html5 audio exclusively.
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby acroyear » Mon Mar 07, 2016 12:47 pm

Can you also echo the request headers for the two?

Content-Range in bytes only seems to come when the Range: header is sent by the client, so it would give a hint as to whether or not the work browser is doing something oddly wrong or if your office firewall is at fault.

I know with Chrome <= 39 (the original FireOS platform was on this version), it did not send a Range header, and that was when I was getting 'Infinity' for duration in SubFire.
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby IceFreak2000 » Mon Mar 07, 2016 1:01 pm

acroyear wrote:Can you also echo the request headers for the two?

Content-Range in bytes only seems to come when the Range: header is sent by the client, so it would give a hint as to whether or not the work browser is doing something oddly wrong or if your office firewall is at fault.

I know with Chrome <= 39 (the original FireOS platform was on this version), it did not send a Range header, and that was when I was getting 'Infinity' for duration in SubFire.


Office

Request:

Code: Select all
GET /stream?player=20&id=57193&auth=48811667 HTTP/1.1
Host: subsonic.edcourtenay.co.uk
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36
Accept: */*
DNT: 1
Referer: http://subsonic.edcourtenay.co.uk/playQueue.view?player=20
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Cookie: player-null=20; JSESSIONID=1bm0gunv3mqe1; player-6564=20
Range: bytes=0-


Response:

Code: Select all
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Connection:keep-alive
Content-Type:audio/mpeg
Date:Mon, 07 Mar 2016 12:52:17 GMT
ETag:57193
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Server:Microsoft-IIS/8.5
Set-Cookie:player-6564=20;Path=/;Expires=Tue, 07-Mar-17 12:52:17 GMT
Transfer-Encoding:chunked
Via:1.1 ip.address.removed:80 (Cisco-WSA/9.0.1-162)
X-Content-Duration:313.0
X-Powered-By:ARR/2.5


Home

Request

Code: Select all
GET /stream?player=20&id=57193&auth=48811667 HTTP/1.1
Host: subsonic.edcourtenay.co.uk
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36
Accept: */*
DNT: 1
Referer: http://subsonic.edcourtenay.co.uk/playQueue.view?player=20
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Cookie: JSESSIONID=qxnzagsy9nj4; player-6564=20
Range: bytes=0-


Response

Code: Select all
Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Content-Range:bytes 0-12519999/12520000
Content-Type:audio/mpeg
Date:Mon, 07 Mar 2016 12:57:03 GMT
ETag:57193
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Server:Microsoft-IIS/8.5
Set-Cookie:player-6564=20;Path=/;Expires=Tue, 07-Mar-17 12:57:04 GMT
Transfer-Encoding:chunked
X-Content-Duration:313.0
X-Powered-By:ARR/2.5
IceFreak2000
 
Posts: 21
Joined: Wed Mar 23, 2011 1:42 pm
Location: United Kingdom

Re: Subsonic 6.0.beta1 released

Postby acroyear » Mon Mar 07, 2016 5:55 pm

hmm...yeah, I'm now inclined to think it is something at your work isp or firewall doing it.
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby IceFreak2000 » Mon Mar 07, 2016 6:32 pm

acroyear wrote:hmm...yeah, I'm now inclined to think it is something at your work isp or firewall doing it.


So the question is, what has changed in 6.0 so that this has become an issue? Subsonic 5.3 has absolutely no problems over the same network connection
IceFreak2000
 
Posts: 21
Joined: Wed Mar 23, 2011 1:42 pm
Location: United Kingdom

Re: Subsonic 6.0.beta1 released

Postby acroyear » Mon Mar 07, 2016 8:45 pm

I already said: the 5.x (and before) uses an mp3 player written in Adobe Flash. The 6.0 code uses the browser's own native html5 <audio> tag. Completely different implementation entirely. The Flash plug-in managed its own connectivity to the server and its own interpretation of the header and content that came back. It was, perhaps, more cross-platform consistent, but it also was risky to continue to depend on as the browser-makers are increasingly saying that Flash WILL go away, just as Java applets already have. Even Adobe has barely bothered to maintain it outside of fixing discovered security holes.

I'm familiar with many of the quirks of html5 <audio> across different browsers since SubFire uses it. You might, for example, find that it works perfectly fine in Firefox on your work box (should you be allowed to install it) because Firefox interprets things differently from Chrome.
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby IceFreak2000 » Mon Mar 07, 2016 9:35 pm

acroyear wrote:I already said: the 5.x (and before) uses an mp3 player written in Adobe Flash. The 6.0 code uses the browser's own native html5 <audio> tag. Completely different implementation entirely. The Flash plug-in managed its own connectivity to the server and its own interpretation of the header and content that came back. It was, perhaps, more cross-platform consistent, but it also was risky to continue to depend on as the browser-makers are increasingly saying that Flash WILL go away, just as Java applets already have. Even Adobe has barely bothered to maintain it outside of fixing discovered security holes.

I'm familiar with many of the quirks of html5 <audio> across different browsers since SubFire uses it. You might, for example, find that it works perfectly fine in Firefox on your work box (should you be allowed to install it) because Firefox interprets things differently from Chrome.


I think you misunderstand me - I fully understand the reasoning behind the move to the HTML player, but if the new implementation can't handle network environments that the previous version dealt with it's a regression that needs to be resolved. I'm hoping that the information I've been providing can help Sindre resolve the issue.

FWIW, neither Firefox nor Edge work in the office environment.
IceFreak2000
 
Posts: 21
Joined: Wed Mar 23, 2011 1:42 pm
Location: United Kingdom

Re: Subsonic 6.0.beta1 released

Postby acroyear » Mon Mar 07, 2016 10:16 pm

The html5 <audio> tag is really out of anybody's hands, other than the browser makers. There is nothing one can do in this situation to *fix* it (especially if one can not personally replicate it because it is an effect of a perhaps badly configured firewall environment), other than report a bug to the browser vendor.

Which in the case of Chrome-Android and SubFire, I did, and finally (hopefully with v50) will see a fix for...but in my case, the browser was getting the right headers and just treating it incorrectly. The browser makers probably won't see this as a 'bug', since they aren't getting the expected headers and the content still plays.

The most Sindre might be able to do is a hack similar to what I have in SubFire right now: if duration is Infinity or NaN (or 0), just render the duration as stored in the DB from the file scan. After that, one needs to check if the 'ended' event correctly fires so that the code knows to skip to the next song. If not, then one also needs to compare currentTime to the db-stored duration and artificially skip to the next song in the queue. And that's IF he can find a way to simulate the problem.
--
Joe Shelby
http://subfiresuite.com/
http://subfireplayer.net/
User avatar
acroyear
 
Posts: 777
Joined: Wed Mar 27, 2013 8:05 pm
Location: Northern, VA

Re: Subsonic 6.0.beta1 released

Postby insann » Mon Mar 07, 2016 11:05 pm

Hi,
little comment hope it will be read by the big guys of this Great project ( specially you sindre ! )

Could you add a new shortcut like all artiste ?
i mean near recently added, more played,... all artiste

because i mapped like this
genre/artiste/album/track artiste - title

and sometimes its better to see all artiste instant of all genres !

i know its a little function to add but i can't help you by pasting code here

Would be great :
Sincerely Thanks

Insann
insann
 
Posts: 39
Joined: Sat Nov 14, 2015 6:37 pm

Re: Subsonic 6.0.beta1 released

Postby ebasta » Tue Mar 08, 2016 3:19 am

insann wrote:Hi,
little comment hope it will be read by the big guys of this Great project ( specially you sindre ! )

Could you add a new shortcut like all artiste ?
i mean near recently added, more played,... all artiste

because i mapped like this
genre/artiste/album/track artiste - title

and sometimes its better to see all artiste instant of all genres !

i know its a little function to add but i can't help you by pasting code here

Would be great :
Sincerely Thanks

Insann


The "INDEX" button is the one you want, yes?
ebasta
 
Posts: 92
Joined: Fri Dec 17, 2010 8:07 pm

PreviousNext

Return to Announcements

Who is online

Users browsing this forum: No registered users and 10 guests