Shoutcast v1 stream in Chrome

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Koenvh
  • Registratie: December 2011
  • Laatst online: 15:56

Koenvh

Hier tekenen: ______

Topicstarter
Beste mede-Tweakers,

Vanaf Chrome versie 55 wordt HTTP/0.9 over een niet-standaard poort niet meer ondersteund. Hier valt onder andere elke Shoutcast v1 stream onder. (https://www.internet-radi...v1-x-html5-players.27560/)
Nu heb ik een webapplicatie die dmv. HTML5 radiostreams afspeelt (https://github.com/Koenvh1/ets2-local-radio), maar een gedeelte van de radiostations werkt nu dus niet meer in Chrome. Deze streams zijn niet in mijn beheer.

Mijn vraag is nu of iemand een idee heeft om het toch te laten werken in Chrome.

De webserver is geschreven in C# en draait op elke PC lokaal onder een niet-standaard poort, dus een proxy op de server laten draaien gaat niet.
Een vereiste is wel dat het CPU-gebruik laag blijft (De server draait op de achtergrond van een spel, en als de server veel CPU gebruikt, gaat de fps in het spel omlaag), daarom zal iets als VLC integreren in de server niet gaan (VLC gebruikt al snel 15 tot 30 procent CPU bij het afspelen van een HLS stream).
De streams zijn HLS streams, AAC en MP3... Dus de enige twee browsers waar alle streams in werken zijn Edge en Firefox.

Een voorbeeld van een stream die niet in Chrome werkt: http://stream3.polskieradio.pl:8900/;
Alle streams: https://github.com/Koenvh1/ets2-local-radio/blob/master/web/stations/stations-europe.js

Alvast bedankt. :)

🠕 This side up

Alle reacties


Acties:
  • 0 Henk 'm!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Dit is een issue in Chrome voor streams die niet beschikbaar zijn op port 80. Dus streams die draaien op port 80 doen nog wel in Chrome. En voor streams die dan niet op port 80 draaien, zouden de radiostations ditzelf moeten oplossen door gebruik te maken van port 80. Daar kan jij niks aan doen.

Je zou wel een advies kunnen tonen wanneer iemand Chrome gebruikt (leest de user-agent uit) en een stream aanklikt die dan niet port 80 gebruikt een advies te geven dat deze alleen werkt met Firefox, Edge etc.

Bug info https://bugs.chromium.org/p/chromium/issues/detail?id=669800

[ Voor 17% gewijzigd door robertpNL op 17-01-2017 13:01 ]


Acties:
  • 0 Henk 'm!

  • Koenvh
  • Registratie: December 2011
  • Laatst online: 15:56

Koenvh

Hier tekenen: ______

Topicstarter
Daarom vraag ik of iemand een methode weet om 't toch te laten werken ;)
Ik heb controle over de server, en aangezien alles lokaal draait (localhost) is het hervormen van de stream geen probleem (ook qua licenties e.d.).

Op dit moment toon ik inderdaad een melding als de pagina in Chrome, Opera of Internet Explorer geopend wordt, en de applicatie probeert al eerst de pagina te openen in Edge, dan in Firefox en dan pas in de standaardbrowser, maar het liefste zou ik 'm toch overal laten werken...

Ik ben 't wel met je eens dat deze radiostations wel eens over zouden mogen schakelen naar iets nieuwers dan Shoutcast v1 (waarvan de ondersteuning in 2004 gestaakt is), maar die keuze heb ik helaas niet. En Polskie Radio is wel de staatsomroep van Polen.

[ Voor 3% gewijzigd door Koenvh op 17-01-2017 13:09 ]

🠕 This side up


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Voor zover ik zie in die bugreport is dat omdat Shoutcast een niet-standaard HTTP-response teruggeeft (ICY 200 OK) die wordt geinterpreteerd als HTTP/0.9, en dat mag niet meer op poorten anders dan poort 80. Er heeft iemand een patch gemaakt voor de Shoutcast binary die de headers aanpast en dan werkt het weer.

Je kan dan toch een lokale proxy maken in je software die de (foutieve) HTTP-response van Shoutcast omvormt naar iets wat Chrome wel interpreteert als HTTP/1.0 of 1.1?

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Werkt deze bij jou in Chrome 55+? http://radiogetswild.com/listen-chrome.php / http://radiogetswild.com/16k-mono.mp3

Zo ja, gebruik in .htaccess:
code:
1
2
3
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(16k-mono|64k|128k).mp3$ http://127.0.0.1:7777/$1.mp3 [L,P]

Pas dan wel RewriteRule aan naar jouw configuratie.
De P betekend Proxy ;)

[ Voor 5% gewijzigd door DJMaze op 17-01-2017 13:21 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • HansvDr
  • Registratie: Augustus 2009
  • Niet online
Zet een link er bij naar een .asx of .m3u file met daarin het serveradres. Dan kan de gebruiker het gewoon afspelen met zijn mediaspeler.

Acties:
  • 0 Henk 'm!

  • Koenvh
  • Registratie: December 2011
  • Laatst online: 15:56

Koenvh

Hier tekenen: ______

Topicstarter
HansvDr schreef op dinsdag 17 januari 2017 @ 13:20:
Zet een link er bij naar een .asx of .m3u file met daarin het serveradres. Dan kan de gebruiker het gewoon afspelen met zijn mediaspeler.
Ik zal uitleggen hoe 't werkt: De server in C# ontvangt via een plugin in Euro Truck Simulator 2 de huidige coördinaten, maakt deze via de webserver beschikbaar als JSON, en Javascript geeft op basis van deze informatie de beschikbare radiostations (dat wil zeggen, de radiostations die daar in de buurt zijn, dus Oostenrijkse radiostations in Oostenrijk e.d.) weer. Als het huidige radiostation niet meer beschikbaar is, wisselt hij automatisch naar een beschikbaar radiostation, dus een m3u-linkje gaat 'm niet worden.
DJMaze schreef op dinsdag 17 januari 2017 @ 13:18:
Werkt deze bij jou in Chrome 55+? http://radiogetswild.com/listen-chrome.php / http://radiogetswild.com/16k-mono.mp3

Zo ja, gebruik in .htaccess:
code:
1
2
3
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(16k-mono|64k|128k).mp3$ http://127.0.0.1:7777/$1.mp3 [L,P]

Pas dan wel RewriteRule aan naar jouw configuratie.
De P betekend Proxy ;)
Ik draai geen Apache, 't is een aangepaste class die op basis van de request de data terugstuurt, omdat de informatie van de plugin ook meegezonden moet kunnen worden (gebaseerd op https://gist.github.com/aksakalli/9191056 ).
Radiant schreef op dinsdag 17 januari 2017 @ 13:14:
Voor zover ik zie in die bugreport is dat omdat Shoutcast een niet-standaard HTTP-response teruggeeft (ICY 200 OK) die wordt geinterpreteerd als HTTP/0.9, en dat mag niet meer op poorten anders dan poort 80. Er heeft iemand een patch gemaakt voor de Shoutcast binary die de headers aanpast en dan werkt het weer.

Je kan dan toch een lokale proxy maken in je software die de (foutieve) HTTP-response van Shoutcast omvormt naar iets wat Chrome wel interpreteert als HTTP/1.0 of 1.1?
Daar zat ik ook aan te denken, maar kan ik de response omvormen zonder dat het veel CPU kost? Mede omdat het een stream is in plaats van een bestand met een bepaalde grootte.

🠕 This side up


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Koenvh schreef op dinsdag 17 januari 2017 @ 13:32:
[...]


Daar zat ik ook aan te denken, maar kan ik de response omvormen zonder dat het veel CPU kost? Mede omdat het een stream is in plaats van een bestand met een bepaalde grootte.
Als je oplet dat je alleen aan het begin van de stream je vergelijkingen en replaces doet en daarna gewoon de data ruw van de stream naar je output socket doorstuurt zal je daar niets van merken.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Tja, aan de andere kant, waarom Shoutcast v1 nog gebruiken? :?
DJMaze schreef op dinsdag 17 januari 2017 @ 13:18:
Werkt deze bij jou in Chrome 55+? http://radiogetswild.com/listen-chrome.php / http://radiogetswild.com/16k-mono.mp3

Zo ja, gebruik in .htaccess:
code:
1
2
3
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(16k-mono|64k|128k).mp3$ http://127.0.0.1:7777/$1.mp3 [L,P]

Pas dan wel RewriteRule aan naar jouw configuratie.
De P betekend Proxy ;)
Het liefste wil je er geen lagen (zoals in jouw voorbeeld Apache) er tussen hebben hangen.

[ Voor 82% gewijzigd door CH4OS op 17-01-2017 13:46 ]


Acties:
  • 0 Henk 'm!

  • Koenvh
  • Registratie: December 2011
  • Laatst online: 15:56

Koenvh

Hier tekenen: ______

Topicstarter
CH40S schreef op dinsdag 17 januari 2017 @ 13:38:
Tja, aan de andere kant, waarom Shoutcast v1 nog gebruiken? :?
Ik zal 't in m'n beste Pools aan Polskie Radio vragen ;)
Nogmaals: Het is ook niet mijn keuze dat sommige radiostations nog archaïstische software gebruiken, maar ik moet er wel mee omgaan om het zo maar te zeggen :)

🠕 This side up


Acties:
  • 0 Henk 'm!

  • HansvDr
  • Registratie: Augustus 2009
  • Niet online
Koenvh schreef op dinsdag 17 januari 2017 @ 13:32:
[...]
Ik zal uitleggen hoe 't werkt: De server in C# ontvangt via een plugin in Euro Truck Simulator 2 de huidige coördinaten, maakt deze via de webserver beschikbaar als JSON, en Javascript geeft op basis van deze informatie de beschikbare radiostations (dat wil zeggen, de radiostations die daar in de buurt zijn, dus Oostenrijkse radiostations in Oostenrijk e.d.) weer. Als het huidige radiostation niet meer beschikbaar is, wisselt hij automatisch naar een beschikbaar radiostation, dus een m3u-linkje gaat 'm niet worden.
Aha oké, dat wordt inderdaad lastig.
Als alles op 1 systeem draait zou je er een windows-forms programma van kunnen maken met hierin een interop naar Windows Media Player. Daar kun je dan de streams mee openen.

Ik heb ooit eens een eigen programmatje zo gemaakt om een eigen lijstje met radiostations in een eigen player te hebben.

Het enige wat je doet is:

C#:
1
2
3
4
5
axWindowsMediaPlayer1.URL = http://x.x.x.x:8000;
if (axWindowsMediaPlayer1.playState != WMPLib.WMPPlayState.wmppsPlaying)
{
 axWindowsMediaPlayer1.Ctlcontrols.play();
}

Acties:
  • 0 Henk 'm!

  • Koenvh
  • Registratie: December 2011
  • Laatst online: 15:56

Koenvh

Hier tekenen: ______

Topicstarter
HansvDr schreef op dinsdag 17 januari 2017 @ 13:43:
[...]


Aha oké, dat wordt inderdaad lastig.
Als alles op 1 systeem draait zou je er een windows-forms programma van kunnen maken met hierin een interop naar Windows Media Player. Daar kun je dan de streams mee openen.

Ik heb ooit eens een eigen programmatje zo gemaakt om een eigen lijstje met radiostations in een eigen player te hebben.

Het enige wat je doet is:

C#:
1
2
3
4
5
axWindowsMediaPlayer1.URL = http://x.x.x.x:8000;
if (axWindowsMediaPlayer1.playState != WMPLib.WMPPlayState.wmppsPlaying)
{
 axWindowsMediaPlayer1.Ctlcontrols.play();
}
Het is al een applicatie in WinForms, maar Windows Media Player ondersteunt geen AAC en HLS.

🠕 This side up


Acties:
  • 0 Henk 'm!

  • HansvDr
  • Registratie: Augustus 2009
  • Niet online
Koenvh schreef op dinsdag 17 januari 2017 @ 13:45:
[...]

Het is al een applicatie in WinForms, maar Windows Media Player ondersteunt geen AAC en HLS.
Hmm mischief kun je Libvlc.Net gebruiken?

Ik heb het zelf nooit getest maar het zou kunnen werken.

http://libvlcnet.sourceforge.net/

Acties:
  • 0 Henk 'm!

  • Koenvh
  • Registratie: December 2011
  • Laatst online: 15:56

Koenvh

Hier tekenen: ______

Topicstarter
HansvDr schreef op dinsdag 17 januari 2017 @ 13:52:
[...]


Hmm mischief kun je Libvlc.Net gebruiken?

Ik heb het zelf nooit getest maar het zou kunnen werken.

http://libvlcnet.sourceforge.net/
VLC gebruikt te veel CPU, staat ook in de TS ;)

[ Voor 4% gewijzigd door Koenvh op 17-01-2017 13:58 ]

🠕 This side up


Acties:
  • 0 Henk 'm!

  • HansvDr
  • Registratie: Augustus 2009
  • Niet online
Koenvh schreef op dinsdag 17 januari 2017 @ 13:53:
[...]

VLC gebruikt te veel CPU, staat ook in de TS ;)
Inderdaad, ik zie het nu pas :-)

Dan heb ik geen opties. Ik zou dan ook gewoon Edge of Firefox gebruiken.
Pagina: 1