Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
ThirdWaveSka
Level 7

Changes to Shoutcast v2.5 affecting metadata lookup


    I have three channels. Deep Pockets Jazz, Third Wave Ska and Power Chord Radio.  I've been having problems with metadata being returned from Last.FM which this board has been very helpful sort through some problems.  In the most blatant proof of where the problem lies, here's what happened yesterday. Third Wave Ska was running on a server from Wavestreaming that was running Shoutcast v2.4.7. All the metadata was returning fine from Last.FM and included Album Art, Album, Title and Artist from the standard artist - title filename. Last night they upgraded to v2.5 and nothing is returning at all.  The stream is playing but nothing is being returned and only the defaults from InstantTVChannel are showing up.  When I talked to Wavestreaming they stated that "There are some metadata layout changes but they are minor" I also talked to InstantTVChannel who stated that "The only change I ran into was that many new SHOUTcast installations use the text string "Playing Now:" to prefix the artist & title instead of the older version which uses "Current Song:". The current version of Instant TV Channel only looks for "Current Song:". The next version will look for both, Does anyone have any ideas as to what may have changed? This is only occurring on my roku channels. All other players are returning data with album art if filenames match or artist info if it doesn't. However that still shows that it is returning something.  Roku has nothing.Thank you for the help.Sorry but here's the long list of changes.Changes from 2.5.1 build 723 to 2.5.1 build 724Smiley Sad28 Jan 2017)

    • Fix libcurl i686 32bit lib build (ssl was broken)
    • Avoid forced icy metadata for Roku and WMP

    • Purge adverts not used in some time, frees up memory for re-use

    • Adjust automatic cpu scaler

    • Drop to HTTP/1.0 in most responses

    • Use correct IP for stats engine, xml stats were wrong for XFF

    • Improve buffer handling

    • Dropping pragma/expires header
    Changes from 2.4.7 build 256 to 2.5.1 build 723Smiley Sad30 Sep 2016)

    • Added FLV containerisation support for MP3 and AAC streams (add ?type=.flv to compatible stream urls to use)

    • Added support for sending title updates to Tunein for DNAS+ streams

    • Added 'minbitrate' and 'streamminbitrate' options to complement the 'maxbitrate' and 'streammaxbitrate' options

    • Added 'streambitrate' alias for setting both 'streammaxbitrate' and 'streamminbitrate' to enforce a single allowed bitrate

    • Added the HTML5 player to /index.html?sid=0 page for all compatible streams (currently only MP3 streams)

    • Added 'type=x' parameter to force specific connection handling (e.g. type=http or type=.flv or type=sc1 or type=sc2 or type=html) irrespective of what the connection may indicate from header and user-agent values)

    • Added unlimited listener support when setting 'maxuser=0' to allow any listener connection (the server will still need to be able to support the number of requests when this is enabled to avoid streaming issues)

    • Added frame syncing support on all source inputs (direct and relay) to filter out bad stream data

    • Added 'dns' mappings of the 'ip' config options (e.g. publicdns -> publicip)

    • Added modes to enable / disable only the source and only the listener debugging options via mode=debug?option=source and mode=debug?option=listener respectively

    • Added StreamNext='xxx' to the SHOUTcast 1.x-style in-stream title updates (will need listener software updates to be able to make use of this)

    • Added samplerate reporting on the appropriate stream pages and log output

    • Added rate limiting on all listener handlers to help reduce listeners getting too far ahead or adverts being resumed from at the in-correct position (or playing the filler as well as the adverts)

    • Added 'ratelimit' to enable control of the frame rate limiting feature (set ratelimit=0 to disable if it causes issues)

    • Added 'adtestfile', 'adtestfileloop', 'streamadtestfile', 'streamadtestfileloop', and related handling to aid in testing advert triggers will work (see documentation for details)

    • Added 'adminfile' support which allows for restricting unwanted access to admin.cgi to only valid IP / hostnames added intto the 'sc_serv.admin' file (see documentation for details)

    • Added 'forceshortsends' support which allows for mimicking restricted network output which can occassionally be helpful for debugging

    • Added 'adminnowrap' support to allow for disabling some of the mobile friendly CSS / HTML changes for the stream admin page and its display of the listener list

    • Added a sanitised configuration settings view mode for the server administrator to aid in checking that the DNAS is using the settings it is meant to be using

    • Added /currentmetadata?sid=# which is a more accessible version of the admin.cgi mode=viewxml or mode=viewjson and page=5 requests for getting the extended stream metadata

    • Added support to make better use of the X-Forwarded-For HTTP header (use usexff=0 to disable this change) which is helpful if all listeners appear to be connected from the local machine due to front-facing services

    • Added proper handling of HTTP HEAD requests to resolve a number of issues with unexpected listener connections and failed source connections

    • Added a 'kick duplicates' option to the stream administrator page to make it easier to kick duplicate connections from the same user agent and address (see documentation for how to use this in a script)

    • Added support for direct HTTP sources (e.g. Icecast based sources) to be accepted when providing MP3 and AAC based stream content)

    • Added support for SHOUTcast 1.x sources to be accepted on 'portbase' and not 'portbase+1' as per the SHOUTcast 1.x protocol specification which makes it possible for all sources (1.x and 2.x) to be accepted on a single port instead of needing two ports (see documentation for details and limitations of this mode)

    • Changed authhash management to improve integration with the Radionomy platform and services now being offered for SHOUTcast broadcasters

    • Changed the default CSS / HTML output to adjustements to work better on mobile devices / small screens including consolidating and removing some of the information on the summary pages

    • Changed the YP update to be able to do a full re-add of the stream on update incase of YP-side issues on add

    • Changed the YP update handling to be more dynamic to aid with remote clustering fixes

    • Changed to use a new scheduler which allows the server to be more flexible and allows the rate limiting support to work correctly

    • Changed to require a key press if running normally (non-daemon and non-service modes) when a major issue occurs of the server cannot be run

    • Changed 1.x source handling to check the password earlier in the connection steps which allows for quicker checking and setup of the source or rejection as applicable

    • Changed the the existing playing and admin metadata responses to include extended metadata (if available)

    • Changed the tailing mode to match the 1.x DNAS so it will now only show the log output from when opening the tailing view

    • Changed title update to clarify why certain title updates are being rejected

    • Changed the way that advert triggers are detected and processed to increase the reliability of advert triggers being actioned

    • Changed some of the page icons to appear more visible on dark backgrounds

    • Changed log output to only show 'Terminating listeners...' if there are listeners

    • Changed some more internal data sctructures to provide additional memory reductions on per-listener basis

    • Changed applicable timeout handling to go through a common handler which now ensures that per-stream overrides on the timeouts are correctly applied

    • Changed to indicate CDN mode on backup relay connections

    • Changed the internal handling of the config items to better handle large stream ids so as to save memory if not using sequential streamids (which speeds up config handling as well as potentially saving a lot of memory)

    • Changed to check and abort starting the DNAS if no source passwords are specified

    • Changed some of the log start-up wording messages

    • Changed the Flash Policy Server to generate the response immediately to reduce time to provide a response

    • Changed to not check for <policy-file-request/> if the Flash Policy Server is not enabled on the port

    • Changed the HTTP handler to reduce the time to process requests when first processing the request

    • Changed to show the bitrate of the skipped files to help with diagnosing why a file was skipped

    • Changed handling of relay and direct 1.x sources to improve consistency between them and reduce the time to start a relay connection

    • Changed the 2.x relay handling to reduce time to setup the relay connection as well as reducing memory for the connection setup

    • Changed file / advert checking to also check the samplerate to improve reliabity of file / advert inserts

    • Changed the stream login / logout options to have 'Stream' in front of them to make it clearer vs the main Server actions

    • Changed to look for SSLv2 / SSLv3 / TLSv1.x connections and abort them as we do not support HTTPS connections and this was causing false source connection attempts

    • Changed debugging output to make it easier to see the full filepath of the control files being used

    • Changed when the YP 'add' is issued to prevent it spamming the metrics system if the connnection quickly fails (e.g. when running a relay that cannot connect to the source)

    • Changed SHOUTcast 1.x and HTTP listener connection handling to be done separately which allows us to provide an optimised HTTP experience than the prior shared handling

    • Changed the debugging options admin page to make it easier to enable groups of options and find other related usage changes

    • Changed the help / documentation links to use a more complete page which better details information

    • Changed the Windows version to make use of a modified pthread-win32 to make internal handling more consistent between OS platforms

    • Changed the 'kick all' button to span across all of 'kick' actions and to respond to clicks anywhere in the element

    • Changed the advert status to now be in it's own column instead of being in the 'connected duration' column

    • Changed the 'sources' page to show the direct stream urls of the configured streams

    • Changed error message output to be more consistent between the platform versions

    • Changed Windows Vista+ usage to better scale for larger listener numbers compared to using the Windows XP and prior mode

    • Changed the listener duration output to be a more condensed version (more like the 1.x DNAS which is better for mobile)

    • Changed the ultravox creation to reduce the processing overhead when creating such data

    • Changed admin.cgi?mode=history to provide XML and JSON responses like the /played(.html) method can provide

    • Changed to ignore empty icy-icq, icy-irc and icy-aim headers which some older sources send and which could cause the source to be incorrectly rejected

    • Changed to allow empty icy-url headers to improve legacy source connection support

    • Changed the stream admin page to load the current listener list asynchronously instead of waiting for all of the details to load at once

    • Changed the HTML5 player on the DNAS pages to force http mode

    • Changed the HTML5 player on the DNAS pages to be hidden if the browser being used does not support such playback of the stream(s)

    • Changed to use HTTPS for all communication the DNAS needs to make

    • Changed to show the user agent in the banned connection log messages

    • Changed to not save 'streamid' when re-writing or editing the config file as the DNAS is able to work this out without needing the option to be present (unlike with older 2.x releases)

    • Changed to about direct source connections earlier on if the source password is incorrect than was previously being done

    • Fixed handling of XML title updates with escaped characters leading to unexpected title update failures

    • Fixed issues with excessive CPU usage due to connections to the DNAS not having enough data ready to be provided or received

    • Fixed unexpected CPU usage when under low or no listener load (most noticeable on resource limited setups)

    • Fixed all reproducible memory and object leaks (mainly against the advert implementation)

    • Fixed the wrong streampath being used if the streampath config option is set but is left empty

    • Fixed streampath generation for the HTML5 player on the DNAS pages and for any listener / playlist requests (to improve listener / player compatibility)

    • Fixed Roku playback issues (affects 2.4.x)

    • Fixed Winamp 5.6+ playback issues (affects 2.4.7)

    • Fixed peaklisteners not being shown when there are no active listeners on the server admin page

    • Fixed metrics handling issues which were causing corrupted reponses to be sent (breaking account statistics)

    • Fixed advert updates being re-tried too often and not following the server side update interval

    • Fixed advert update pulls failing randomly after the first pull attempt

    • Fixed advert group not being updated in all cases for the existing listeners

    • Fixed advert groups not being displayed on the admin page in all situations

    • Fixed no message being shown on the advert groups if there are no known advert groups (affects 2.4.7)

    • Fixed adverts for SHOUTcast 1.x listeners not always firing if no data could be sent

    • Fixed lock-up for SHOUTcast 1.x listener when providing adverts and a title update needs to be sent

    • Fixed invalid HTTP requests attempting to be handled as a source connection

    • Fixed advert groups not being updated on the admin page unless some internal checks had been made

    • Fixed issue with the updater repeatedly re-downloading the update (2.4.3 / 2.4.7 beta issue)

    • Fixed /admin.cgi?mode=viewxml and /admin.cgi?mode=viewjson requests without a page parameter not being allowed for requests using the stream source password (resolves a 1.x DNAS compatibility issue)

    • Fixed configuration file writing not saving correctly with non-sequential stream configurations

    • Fixed default 'pidfile' generation not creating the file in the correct directory when run as a daemon (affects 2.4.x)

    • Fixed some debug messages from showing when they should not appear in non-debug mode

    • Fixed passwords containing the # character being incorrectly rejected due to the multi-1.x source support (affects 2.4.7)

    • Fixed the edit config handler not being able to create the backup config file on Windows (affects 2.4.x)

    • Fixed the receive and send buffers not being correctly limited in all cases to help prevent overflow issues

    • Fixed some of the supporting resource methods not providing compressed version of the resource as needed

    • Fixed ID3v1.x tags not being correctly stripped from intro / backup / adtest files

    • Fixed streampath allowing /listen to be used which would cause failed stream playback as a playlist would be provided instead of the stream (due to /listen being a reserved url

    • Fixed the YP connection tester causing listener add metrics requests to be sent

    • Fixed a number of scenarios where aborting a pending source relay connection would not terminate correctly

    • Fixed some path resolution issues where accented characters are in the file path

    • Fixed listeners already connected to a stream before it has obtained information from the YP not being reported to the metrics system and not being applied to advert groups if applicable

    • Fixed admincssfile not being re-loaded correctly on configuarion file reload

    • Fixed random crash on accessing the log view

    • Fixed random crash on closing when trying to write a log message and the logger has already been stopped

    • Fixed error reporting if there is an issue with configuration file backup and edit actions

    • Fixed HTTPS urls not being processed correctly causing broken urls on some of the server pages

    • Fixed handling of 1.x sources and relays which do not provide bitrate information so it is now determined from the stream audio data as needed

    • Fixed url reported when doing a YP url change not being correctly updated

    • Fixed advert triggers not always working Ultravox and manual XML title updates

    • Fixed AAC kbps calculations not being correct in some situations

    • Fixed a number of streaming related issues if 'short sends' are occurring (which primarily could lead to skips and data loss)

    • Fixed SHOUTcast 2.x sources reporting their received bandwidth total against SHOUTcast 2.x relays

    • Fixed some issues with the user agent management page

    • Fixed trying to ban listeners by user agent with an empty user agents not being handled correctly

    • Fixed 'http://' being incorrectly added onto some of the 1.x style 'StreamUrl' metadata values

    • Fixed a number of title update verification issues which were causing title corruption with extended character titles (affects 2.4.x)

    • Fixed the configuration file re-write option not working correctly in some scenarios

    • Fixed reported random locking issues being seen on some setups causing the DNAS to appear like it has crashed but is still running and just in a locked state

    • Updated the streampath filtering

    • Updated title filtering mappings

    • Updated to the latest cacert.pem

    • Updated to libcurl 7.47.1

    • Updated to OpenSSL 1.0.2g

    • Other code cleanup, minor bug fixes, re-ordering common cases to be checked first, processing reductions, page cleanups and anything else to improve stability, useability and responsiveness of the DNAS server

    • A plethora of monetization-related, stability and other general fixes
0 Kudos
5 Replies
gabek
Level 7

Re: Changes to Shoutcast v2.5 affecting metadata lookup

It sounds like you're able to outline what the user-facing issue is, but it's probably best to detail what the technical/code-level issues that you're seeing is.

What is the code that you're running?  What did it used to do?  What does it do now?
0 Kudos
destruk
Level 10

Re: Changes to Shoutcast v2.5 affecting metadata lookup

Yeah, posting pages of the release notes with information entirely unrelated to the problem isn't going to get you the help you're looking for.  That's like copying the entire user manual to figure out the initialization string.  Maybe you should ask Shoutcast what their current requirements are to get metadata instead of asking Roku to support third-party software they didn't write.
0 Kudos
ThirdWaveSka
Level 7

Re: Changes to Shoutcast v2.5 affecting metadata lookup

Sorry, I thought I was providing Information. I have been in contact with both SHOUTcast and InstantTVChannel. They information is being passed long just fine. Like I said, one possible culprit is the prefix. however I didn't want to edit out a possible solution because I didn't understand the affects of each line. I'll edit it an maybe the lesser amount of data will encourage a dialogue. Seeing how a minor change affects crashes they entire Last.fm reporting system, I thought it would be something less obvious. Thank you for showing me the error of my ways
0 Kudos
belltown
Level 7

Re: Changes to Shoutcast v2.5 affecting metadata lookup

"ThirdWaveSka" wrote:

I also talked to InstantTVChannel who stated that "The only change I ran into was that many new SHOUTcast installations use the text string "Playing Now:" to prefix the artist & title instead of the older version which uses "Current Song:". The current version of Instant TV Channel only looks for "Current Song:". The next version will look for both, Does anyone have any ideas as to what may have changed? This is only occurring on my roku channels. All other players are returning data with album art if filenames match or artist info if it doesn't. However that still shows that it is returning something.  Roku has nothing.

I'm not sure what you and/or InstantTVChannel are using to extract the artist/track info from SHOUTcast. However, from what I'm seeing when looking at ThirdWaveSka's stream, the format is still "artistName - trackName".

E.g. with http://stereo.wavestreamer.com:2735/stats I see:

<?xml version="1.0" encoding="UTF-8"?>
<SHOUTCASTSERVER>
 <CURRENTLISTENERS>1</CURRENTLISTENERS>
 <PEAKLISTENERS>21</PEAKLISTENERS>
 <MAXLISTENERS>500</MAXLISTENERS>
 <UNIQUELISTENERS>1</UNIQUELISTENERS>
 <AVERAGETIME>5038</AVERAGETIME>
 <SERVERGENRE>Punk</SERVERGENRE>
 <SERVERGENRE2/>
 <SERVERGENRE3/>
 <SERVERGENRE4/>
 <SERVERGENRE5/>
 <SERVERURL>http://www.thirdwaveska.com</SERVERURL>
 <SERVERTITLE>Third Wave Ska</SERVERTITLE>
 <SONGTITLE>Keep Flying - Safety Harbor</SONGTITLE>
 <NEXTTITLE>Tef London - Still Standing</NEXTTITLE>
 <STREAMHITS>799</STREAMHITS>
 <STREAMSTATUS>1</STREAMSTATUS>
 <BACKUPSTATUS>0</BACKUPSTATUS>
 <STREAMLISTED>1</STREAMLISTED>
 <STREAMPATH>/Live</STREAMPATH>
 <STREAMUPTIME>74418</STREAMUPTIME>
 <BITRATE>128</BITRATE>
 <SAMPLERATE>44100</SAMPLERATE>
 <CONTENT>audio/mpeg</CONTENT>
 <VERSION>2.5.1.724 (posix(linux x64))</VERSION>
</SHOUTCASTSERVER>
https://github.com/belltown/
0 Kudos
OddScott
Level 7

Re: Changes to Shoutcast v2.5 affecting metadata lookup

Instant TV Channel screen-scrapes the index page.
www.InstantTvChannel.com - Build a Roku channel in 5 minutes!
0 Kudos