Feature #2476

Ability to play WebM, NSV and Ogg Theora video streams over icecast (icecast plugin)

Added by Leonid Protasov over 4 years ago. Updated over 1 year ago.

Status:AcceptedStart date:01/09/2015
Priority:NormalDue date:
Assignee:Andreas Smas% Done:

0%

Category:Video playback
Target version:5.2

Description

You can find those streams in Icecast plugin->Formats->WebM or Ogg Theora or NSV

ST can look at the Content-Type: video/webm
Content-Type: video/webm
but interesting question is how is should be with OGG Theora as by RFC3534 Content-Type: application/ogg could be presented for both audio and video streams so it needs additional probing. But by RFC5334 it is set explicitly as video/ogg and audio/ogg correspondingly.

Interesting thing is - ST already plays WebM and NSV direct links if you pase them via WebUI. But fails if you supply m3u link via icecast route. So changes could be minor.

WebM:

navigator       [INFO ]: Opening icecast:formats
icecast         [DEBUG]: Opening route ^icecast:formats
navigator       [INFO ]: Opening icecast:filter:/by_format/WebM:WebM
icecast         [DEBUG]: Opening route ^icecast:filter:(.*):(.*)
icecast         [DEBUG]:   Page argument 1 : /by_format/WebM
icecast         [DEBUG]:   Page argument 2 : WebM
HTTP            [DEBUG]: Connected to dir.xiph.org:80 (id=3)
HTTP            [DEBUG]: > GET /by_format/WebM HTTP/1.1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: dir.xiph.org
HTTP            [DEBUG]: http://dir.xiph.org/by_format/WebM: Response:
HTTP            [DEBUG]: < HTTP/1.1 200 OK
HTTP            [DEBUG]: < Date: Fri, 09 Jan 2015 07:14:31 GMT
HTTP            [DEBUG]: < Server: Apache/2.2.16 (Debian)
HTTP            [DEBUG]: < X-Powered-By: PHP/5.3.3-7+squeeze19
HTTP            [DEBUG]: < Cache-Control: max-age=1800
HTTP            [DEBUG]: < Expires: Fri, 09 Jan 2015 07:44:31 GMT
HTTP            [DEBUG]: < Vary: Accept-Encoding
HTTP            [DEBUG]: < Connection: close
HTTP            [DEBUG]: < Transfer-Encoding: chunked
HTTP            [DEBUG]: < Content-Type: text/html
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Chunked transfer
HTTP            [DEBUG]: Disconnected from dir.xiph.org:80 (id=3) Request destroyed
HTTP            [DEBUG]: Disconnected from showtime.lonelycoder.com:80 (id=1) Keep alive expired
HTTP            [DEBUG]: Connected to dir.xiph.org:80 (id=4)
HTTP            [DEBUG]: > GET /listen/1027103/listen.m3u HTTP/1.1
HTTP            [DEBUG]: > Icy-MetaData: 1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: dir.xiph.org
HTTP            [DEBUG]: http://dir.xiph.org/listen/1027103/listen.m3u: Response:
HTTP            [DEBUG]: < HTTP/1.1 200 OK
HTTP            [DEBUG]: < Date: Fri, 09 Jan 2015 07:15:11 GMT
HTTP            [DEBUG]: < Server: Apache/2.2.16 (Debian)
HTTP            [DEBUG]: < X-Powered-By: PHP/5.3.3-7+squeeze19
HTTP            [DEBUG]: < Content-Disposition: inline; filename="listen.m3u" 
HTTP            [DEBUG]: < Content-Length: 34
HTTP            [DEBUG]: < Connection: close
HTTP            [DEBUG]: < Content-Type: audio/x-mpegurl
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Opened in streaming mode
Radio           [DEBUG]: http://dir.xiph.org/listen/1027103/listen.m3u content-type: audio/x-mpegurl
HTTP            [DEBUG]: Disconnected from dir.xiph.org:80 (id=4) Connection-mode = close
Radio           [DEBUG]: http://dir.xiph.org/listen/1027103/listen.m3u is an .m3u playlist according to content-type
Radio           [DEBUG]: http://dir.xiph.org/listen/1027103/listen.m3u guessed to be an m3u based on content
HTTP            [DEBUG]: Connected to g2.euer.tv:8000 (id=5)
HTTP            [DEBUG]: > GET /erde.webm HTTP/1.1
HTTP            [DEBUG]: > Icy-MetaData: 1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: g2.euer.tv:8000
HTTP            [DEBUG]: http://g2.euer.tv:8000/erde.webm: Response:
HTTP            [DEBUG]: < HTTP/1.0 200 OK
HTTP            [DEBUG]: < Server: Icecast 2.3.99.3-euerradio
HTTP            [DEBUG]: < Date: Fri, 09-Jan-2015 07:15:12 GMT
HTTP            [DEBUG]: < Content-Type: video/webm
HTTP            [DEBUG]: < Cache-Control: no-cache
HTTP            [DEBUG]: < Expires: Mon, 26 Jul 1997 05:00:00 GMT
HTTP            [DEBUG]: < Pragma: no-cache
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Opened in streaming mode
HTTP            [DEBUG]: http://g2.euer.tv:8000/erde.webm: Refusing to seek to END on non-seekable file
Radio           [DEBUG]: Starting playback of http://g2.euer.tv:8000/erde.webm
audio           [DEBUG]: Codec changed to vorbis (0x15005)
PA              [DEBUG]: Context ready
PA              [DEBUG]: Created stream float32le 2ch 44100Hz [front-left,front-right] (tilesize=8184)
Audio           [DEBUG]: Converting from [stereo 44100Hz fltp] to [stereo 44100Hz flt]

NSV:

navigator       [INFO ]: Opening icecast:filter:/by_format/NSV:NSV
icecast         [DEBUG]: Opening route ^icecast:filter:(.*):(.*)
icecast         [DEBUG]:   Page argument 1 : /by_format/NSV
icecast         [DEBUG]:   Page argument 2 : NSV
HTTP            [DEBUG]: Connected to dir.xiph.org:80 (id=6)
HTTP            [DEBUG]: > GET /by_format/NSV HTTP/1.1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: dir.xiph.org
HTTP            [DEBUG]: http://dir.xiph.org/by_format/NSV: Response:
HTTP            [DEBUG]: < HTTP/1.1 200 OK
HTTP            [DEBUG]: < Date: Fri, 09 Jan 2015 07:18:13 GMT
HTTP            [DEBUG]: < Server: Apache/2.2.16 (Debian)
HTTP            [DEBUG]: < X-Powered-By: PHP/5.3.3-7+squeeze19
HTTP            [DEBUG]: < Cache-Control: max-age=1800
HTTP            [DEBUG]: < Expires: Fri, 09 Jan 2015 07:48:13 GMT
HTTP            [DEBUG]: < Vary: Accept-Encoding
HTTP            [DEBUG]: < Connection: close
HTTP            [DEBUG]: < Transfer-Encoding: chunked
HTTP            [DEBUG]: < Content-Type: text/html
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Chunked transfer
HTTP            [DEBUG]: Disconnected from dir.xiph.org:80 (id=6) Request destroyed
HTTP            [DEBUG]: Disconnected from g2.euer.tv:8000 (id=5) Request destroyed
HTTP            [DEBUG]: Connected to dir.xiph.org:80 (id=7)
HTTP            [DEBUG]: > GET /listen/985424/listen.m3u HTTP/1.1
HTTP            [DEBUG]: > Icy-MetaData: 1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: dir.xiph.org
HTTP            [DEBUG]: http://dir.xiph.org/listen/985424/listen.m3u: Response:
HTTP            [DEBUG]: < HTTP/1.1 200 OK
HTTP            [DEBUG]: < Date: Fri, 09 Jan 2015 07:18:23 GMT
HTTP            [DEBUG]: < Server: Apache/2.2.16 (Debian)
HTTP            [DEBUG]: < X-Powered-By: PHP/5.3.3-7+squeeze19
HTTP            [DEBUG]: < Content-Disposition: inline; filename="listen.m3u" 
HTTP            [DEBUG]: < Content-Length: 76
HTTP            [DEBUG]: < Connection: close
HTTP            [DEBUG]: < Content-Type: audio/x-mpegurl
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Opened in streaming mode
Radio           [DEBUG]: http://dir.xiph.org/listen/985424/listen.m3u content-type: audio/x-mpegurl
HTTP            [DEBUG]: Disconnected from dir.xiph.org:80 (id=7) Connection-mode = close
Radio           [DEBUG]: http://dir.xiph.org/listen/985424/listen.m3u is an .m3u playlist according to content-type
Radio           [DEBUG]: http://dir.xiph.org/listen/985424/listen.m3u guessed to be an m3u based on content
HTTP            [DEBUG]: Connected to jay.krivanek.org:8000 (id=8)
HTTP            [DEBUG]: > GET /mst3k.nsv HTTP/1.1
HTTP            [DEBUG]: > Icy-MetaData: 1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: jay.krivanek.org:8000
HTTP            [DEBUG]: http://jay.krivanek.org:8000/mst3k.nsv: Response:
HTTP            [DEBUG]: < ICY 200 OK
HTTP            [DEBUG]: < icy-notice1:<BR>This stream requires a media player
HTTP            [DEBUG]: < icy-notice2:Steamcast Distributed Network Media Server/1.0.0 decennium (Windows 64-bit)<BR>
HTTP            [DEBUG]: < icy-name:Mystery Science Theater 3000 - Powered by ShoutCheap.com
HTTP            [DEBUG]: < icy-genre:video
HTTP            [DEBUG]: < icy-url:http://www.shoutcheap.com
HTTP            [DEBUG]: < content-type:video/nsv
HTTP            [DEBUG]: < icy-pub:1
HTTP            [DEBUG]: < icy-br:128
HTTP            [DEBUG]: < icy-metaint:8192
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Opened in streaming mode
Radio           [DEBUG]: Starting playback of http://jay.krivanek.org:8000/mst3k.nsv
audio           [DEBUG]: Codec changed to aac (0x15002)
PA              [DEBUG]: Created stream float32le 1ch 32000Hz [mono] (tilesize=16368)
Audio           [DEBUG]: Converting from [mono 32000Hz fltp] to [mono 32000Hz flt]

Ogg Theora:

navigator       [INFO ]: Opening icecast:filter:/by_format/Ogg_Theora:Ogg Theora
icecast         [DEBUG]: Opening route ^icecast:filter:(.*):(.*)
icecast         [DEBUG]:   Page argument 1 : /by_format/Ogg_Theora
icecast         [DEBUG]:   Page argument 2 : Ogg Theora
HTTP            [DEBUG]: Connected to dir.xiph.org:80 (id=9)
HTTP            [DEBUG]: > GET /by_format/Ogg_Theora HTTP/1.1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: dir.xiph.org
HTTP            [DEBUG]: http://dir.xiph.org/by_format/Ogg_Theora: Response:
HTTP            [DEBUG]: < HTTP/1.1 200 OK
HTTP            [DEBUG]: < Date: Fri, 09 Jan 2015 07:23:22 GMT
HTTP            [DEBUG]: < Server: Apache/2.2.16 (Debian)
HTTP            [DEBUG]: < X-Powered-By: PHP/5.3.3-7+squeeze19
HTTP            [DEBUG]: < Cache-Control: max-age=1800
HTTP            [DEBUG]: < Expires: Fri, 09 Jan 2015 07:53:22 GMT
HTTP            [DEBUG]: < Vary: Accept-Encoding
HTTP            [DEBUG]: < Connection: close
HTTP            [DEBUG]: < Transfer-Encoding: chunked
HTTP            [DEBUG]: < Content-Type: text/html
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Chunked transfer
HTTP            [DEBUG]: Disconnected from dir.xiph.org:80 (id=9) Request destroyed
Radio           [ERROR]: Playback error: Operation not permitted (-1)
HTTP            [DEBUG]: Disconnected from jay.krivanek.org:8000 (id=8) Request destroyed
HTTP            [DEBUG]: Connected to dir.xiph.org:80 (id=10)
HTTP            [DEBUG]: > GET /listen/919922/listen.m3u HTTP/1.1
HTTP            [DEBUG]: > Icy-MetaData: 1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: dir.xiph.org
HTTP            [DEBUG]: http://dir.xiph.org/listen/919922/listen.m3u: Response:
HTTP            [DEBUG]: < HTTP/1.1 200 OK
HTTP            [DEBUG]: < Date: Fri, 09 Jan 2015 07:23:24 GMT
HTTP            [DEBUG]: < Server: Apache/2.2.16 (Debian)
HTTP            [DEBUG]: < X-Powered-By: PHP/5.3.3-7+squeeze19
HTTP            [DEBUG]: < Content-Disposition: inline; filename="listen.m3u" 
HTTP            [DEBUG]: < Content-Length: 35
HTTP            [DEBUG]: < Connection: close
HTTP            [DEBUG]: < Content-Type: audio/x-mpegurl
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Opened in streaming mode
Radio           [DEBUG]: http://dir.xiph.org/listen/919922/listen.m3u content-type: audio/x-mpegurl
HTTP            [DEBUG]: Disconnected from dir.xiph.org:80 (id=10) Connection-mode = close
Radio           [DEBUG]: http://dir.xiph.org/listen/919922/listen.m3u is an .m3u playlist according to content-type
Radio           [DEBUG]: http://dir.xiph.org/listen/919922/listen.m3u guessed to be an m3u based on content
HTTP            [DEBUG]: Connected to modulix.org:8000 (id=11)
HTTP            [DEBUG]: > GET /libre.ogg HTTP/1.1
HTTP            [DEBUG]: > Icy-MetaData: 1
HTTP            [DEBUG]: > User-Agent: Showtime Linux/x86_64 4.9.46.g5134a.dirty
HTTP            [DEBUG]: > Connection: keep-alive
HTTP            [DEBUG]: > Accept: */*
HTTP            [DEBUG]: > Accept-Encoding: identity
HTTP            [DEBUG]: > Host: modulix.org:8000
HTTP            [DEBUG]: http://modulix.org:8000/libre.ogg: Response:
HTTP            [DEBUG]: < HTTP/1.0 200 OK
HTTP            [DEBUG]: < Content-Type: application/ogg
HTTP            [DEBUG]: < icy-br:1152
HTTP            [DEBUG]: < ice-audio-info: bitrate=1152;channels=2;samplerate=44100;quality=1%2e0
HTTP            [DEBUG]: < icy-description:Diffusion en broadcast de toutes informations qui concernent le Logiciel Libre ainsi que des créations vidéo sous Licence Libre.
HTTP            [DEBUG]: < icy-genre:WebTV, Libre, France, Bordeaux
HTTP            [DEBUG]: < icy-name:WebTV - Télévision Libre
HTTP            [DEBUG]: < icy-pub:1
HTTP            [DEBUG]: < icy-url:http://modulix.org:8000/libre.ogg
HTTP            [DEBUG]: < Server: icecast 2.3.3
HTTP            [DEBUG]: < Cache-Control: no-cache
HTTP            [DEBUG]: < 
HTTP            [DEBUG]: Opened in streaming mode
HTTP            [DEBUG]: http://modulix.org:8000/libre.ogg: Refusing to seek to END on non-seekable file
HTTP            [DEBUG]: http://modulix.org:8000/libre.ogg: Refusing to seek to END on non-seekable file
HTTP            [DEBUG]: http://modulix.org:8000/libre.ogg: Refusing to seek to END on non-seekable file
Radio           [DEBUG]: Starting playback of http://modulix.org:8000/libre.ogg
audio           [DEBUG]: Codec changed to vorbis (0x15005)
PA              [DEBUG]: Created stream float32le 2ch 44100Hz [front-left,front-right] (tilesize=8184)
Audio           [DEBUG]: Converting from [stereo 44100Hz fltp] to [stereo 44100Hz flt]


Related issues

Related to Bug #2071: Live OGG video stream is probed forever Accepted 03/21/2014

History

#1 Updated by Leonid Protasov over 4 years ago

  • Related to Bug #2071: Live OGG video stream is probed forever added

#2 Updated by Leonid Protasov over 4 years ago

I missed Content-Type: video/nsv

#3 Updated by Andreas Smas over 4 years ago

  • Status changed from New to Need feedback

If it plays ok without icecast: why do you add icecast: ?

icecast: is for radio (audio only) playback, trying to play video in there just won't work.

#4 Updated by Leonid Protasov over 4 years ago

Those video icecasts are in m3u and to know that it is video - you need to know that it's content type is video (on the link request from m3u).

#5 Updated by Andreas Smas over 4 years ago

  • Target version deleted (4.10)

#6 Updated by Leonid Protasov over 1 year ago

  • Status changed from Need feedback to Accepted
  • Target version set to 5.2

Also available in: Atom PDF