Once an for all, does GStreamer support .pls playlists?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Once an for all, does GStreamer support .pls playlists?

GStreamer-devel mailing list
Hi.
Having troubles with playing a particular radio stream in Clementine, and
getting the reply for one of the maintainers there that "It's working for me
with gstreamer 1.18.2" whereas I have "1.14.4-1", I built from source the
latest version, GStreamer 1.19.0 and tried the following:

```
[gst-master] buster@debian:~/gst-build/build$ gst-launch-1.0 --version
gst-launch-1.0 version 1.19.0
GStreamer 1.19.0 (GIT)
Unknown package origin
[gst-master] buster@debian:~/gst-build/build$

```

```
[gst-master] buster@debian:~/gst-build/build$ GST_DEBUG=*:3 gst-launch-1.0
-v playbin uri= http://serpent0.duckdns.org:8088/kbsfm.pls
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-size = -1
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-duration = -1
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: force-sw-decoders =
false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: use-buffering = false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: download = false
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: uri =
http://serpent0.duckdns.org:8088/kbsfm.pls
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: connection-speed = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: source =
"\(GstSoupHTTPSrc\)\ source"
0:00:00.038604197 25480 0x55922d154070 WARN               structure
gststructure.c:2093:priv_gst_structure_append_to_gstring: No value transform
to serialize field 'session' of type 'SoupSession'
Got context from element 'source': gst.soup.session=context,
session=(SoupSession)NULL, force=(boolean)false;
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstTypeFindElement:typefindelement0.GstPad:src:
caps = text/plain
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind:
force-caps = text/plain
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
sink-caps = text/plain
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
bitrate = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
bitrate = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0.GstPad:sink:
caps = text/plain
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
bitrate = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
bitrate = 0
Setting pipeline to PLAYING ...
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0.GstPad:src:
caps = text/plain
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
bitrate = 0
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0:
caps = text/plain
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src:
caps = text/plain
0:00:00.230288908 25480 0x7f610c413770 WARN               decodebin
gstdecodebin2.c:2890:type_found:<decodebin0> error: This appears to be a
text file
0:00:00.230350827 25480 0x7f610c413770 WARN               decodebin
gstdecodebin2.c:2890:type_found:<decodebin0> error: decodebin cannot decode
plain text files
ERROR: from element
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
This appears to be a text file
Additional debug info:
../subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c(2890):
type_found ():
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
decodebin cannot decode plain text files
0:00:00.230483403 25480 0x7f610c413770 WARN                  queue2
gstqueue2.c:3242:gst_queue2_loop:<queue2-0> error: Internal data stream
error.
0:00:00.230531074 25480 0x7f610c413770 WARN                  queue2
gstqueue2.c:3242:gst_queue2_loop:<queue2-0> error: streaming stopped, reason
not-linked (-1)
Execution ended after 0:00:00.000350034
Setting pipeline to NULL ...
ERROR: from element
/GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
Internal data stream error.
Additional debug info:
../subprojects/gstreamer/plugins/elements/gstqueue2.c(3242): gst_queue2_loop
(): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
streaming stopped, reason not-linked (-1)
Freeing pipeline ...
[gst-master] buster@debian:~/gst-build/build$

```




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Once an for all, does GStreamer support .pls playlists?

GStreamer-devel mailing list
Le mardi 20 avril 2021 à 07:45 -0500, diracsbracket via gstreamer-devel a
écrit :
> Hi.
> Having troubles with playing a particular radio stream in Clementine, and
> getting the reply for one of the maintainers there that "It's working for me
> with gstreamer 1.18.2" whereas I have "1.14.4-1", I built from source the
> latest version, GStreamer 1.19.0 and tried the following:

GStreamer does not natively handle PLS. Though applications like Totem (Gnome
Video), do have various playlist parsers and can use GStreamer to play the
content.

>
> ```
> [gst-master] buster@debian:~/gst-build/build$ gst-launch-1.0 --version
> gst-launch-1.0 version 1.19.0
> GStreamer 1.19.0 (GIT)
> Unknown package origin
> [gst-master] buster@debian:~/gst-build/build$
>
> ```
>
> ```
> [gst-master] buster@debian:~/gst-build/build$ GST_DEBUG=*:3 gst-launch-1.0
> -v playbin uri= http://serpent0.duckdns.org:8088/kbsfm.pls

Just tried this one in Totem, and it fails with "open: File name too long". From
what I understood it is using GVFS to access the files over HTTP, and this seems
like a limitation of it. Would have been nicer to use souphttpsrc for that, but
this is application design choice.

The playlist is the following:

[playlist]
File1=https://1fm.gscdn.kbs.co.kr/1fm_192_1.m3u8?Expires=1619111851&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly8xZm0uZ3NjZG4ua2JzLmNvLmtyLzFmbV8xOTJfMS5tM3U4IiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNjE5MTExODUxfX19XX0_&Signature=mnNon5XupF~K1FJ2mdzn-k~ffjgnM4zlTxLI19pfnGuHbfBtjjw2ojGZdn862qkHfAFhnM85hqAM6CryIsi2HC8nrduJrlaCJHC0TGwcv2N9kQaHRdYfJCw12O0r9ChkE48ldqgxkg7cYqPfIdvlAbxoAv1yL-ogVER6o4OdGtbBS5LCiaLZ0b6svpA6FbtKuLHhCAJnupkNyrf97cbgHMnwXTNVeKs5u3uiSvNMAW3LLgKVfuOIzbwvJxKkNlKbXg05YKkRaSJgHzCPk9ucM1Ka6XSOpPmxkqcHKCV~mWJC199qKzcAivbNKqUlXfBCzQYIaNfwTLoHtGT7KoBqUg__&Key-Pair-Id=APKAICDSGT3Y7IXGJ3TA
Title1=KBS Classic FM
Length1=-1

So it points to an .m3u8 playlist, this one is special playlist, it's an
adaptive HLS stream, which GStreamer handles natively. You can test with:

gst-play-1.0
"https://1fm.gscdn.kbs.co.kr/1fm_192_1.m3u8?Expires=1619111851&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly8xZm0uZ3NjZG4ua2JzLmNvLmtyLzFmbV8xOTJfMS5tM3U4IiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNjE5MTExODUxfX19XX0_&Signature=mnNon5XupF~K1FJ2mdzn-k~ffjgnM4zlTxLI19pfnGuHbfBtjjw2ojGZdn862qkHfAFhnM85hqAM6CryIsi2HC8nrduJrlaCJHC0TGwcv2N9kQaHRdYfJCw12O0r9ChkE48ldqgxkg7cYqPfIdvlAbxoAv1yL-ogVER6o4OdGtbBS5LCiaLZ0b6svpA6FbtKuLHhCAJnupkNyrf97cbgHMnwXTNVeKs5u3uiSvNMAW3LLgKVfuOIzbwvJxKkNlKbXg05YKkRaSJgHzCPk9ucM1Ka6XSOpPmxkqcHKCV~mWJC199qKzcAivbNKqUlXfBCzQYIaNfwTLoHtGT7KoBqUg__&Key-Pair-Id=APKAICDSGT3Y7IXGJ3TA"

> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-size = -1
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-duration = -1
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: force-sw-decoders =
> false
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: use-buffering = false
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: download = false
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: uri =
> http://serpent0.duckdns.org:8088/kbsfm.pls
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: connection-speed = 0
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: source =
> "\(GstSoupHTTPSrc\)\ source"
> 0:00:00.038604197 25480 0x55922d154070 WARN               structure
> gststructure.c:2093:priv_gst_structure_append_to_gstring: No value transform
> to serialize field 'session' of type 'SoupSession'
> Got context from element 'source': gst.soup.session=context,
> session=(SoupSession)NULL, force=(boolean)false;
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstTypeFindElement:typefindelement0.GstPad:src:
> caps = text/plain
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind:
> force-caps = text/plain
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
> sink-caps = text/plain
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> bitrate = 0
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> bitrate = 0
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0.GstPad:sink:
> caps = text/plain
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> bitrate = 0
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> bitrate = 0
> Setting pipeline to PLAYING ...
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0.GstPad:src:
> caps = text/plain
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> bitrate = 0
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0:
> caps = text/plain
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src:
> caps = text/plain
> 0:00:00.230288908 25480 0x7f610c413770 WARN               decodebin
> gstdecodebin2.c:2890:type_found:<decodebin0> error: This appears to be a
> text file
> 0:00:00.230350827 25480 0x7f610c413770 WARN               decodebin
> gstdecodebin2.c:2890:type_found:<decodebin0> error: decodebin cannot decode
> plain text files
> ERROR: from element
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
> This appears to be a text file
> Additional debug info:
> ../subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c(2890):
> type_found ():
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
> decodebin cannot decode plain text files
> 0:00:00.230483403 25480 0x7f610c413770 WARN                  queue2
> gstqueue2.c:3242:gst_queue2_loop:<queue2-0> error: Internal data stream
> error.
> 0:00:00.230531074 25480 0x7f610c413770 WARN                  queue2
> gstqueue2.c:3242:gst_queue2_loop:<queue2-0> error: streaming stopped, reason
> not-linked (-1)
> Execution ended after 0:00:00.000350034
> Setting pipeline to NULL ...
> ERROR: from element
> /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> Internal data stream error.
> Additional debug info:
> ../subprojects/gstreamer/plugins/elements/gstqueue2.c(3242): gst_queue2_loop
> (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0:
> streaming stopped, reason not-linked (-1)
> Freeing pipeline ...
> [gst-master] buster@debian:~/gst-build/build$
>
> ```
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel