mirror of https://github.com/streamlink/streamlink
98 lines
2.9 KiB
ReStructuredText
98 lines
2.9 KiB
ReStructuredText
Streaming protocols
|
|
===================
|
|
|
|
There are many types of streaming protocols used by services today and
|
|
Streamlink supports most of them. It's possible to tell Streamlink
|
|
to access a streaming protocol directly instead of relying on a plugin
|
|
to extract the streams from a URL for you.
|
|
|
|
|
|
Playing built-in streaming protocols directly
|
|
---------------------------------------------
|
|
|
|
A streaming protocol can be accessed directly by specifying it in the ``protocol://URL`` format
|
|
with an optional list of parameters, like so:
|
|
|
|
.. code-block:: console
|
|
|
|
$ streamlink "protocol://https://streamingserver/path key1=value1 key2=value2"
|
|
|
|
Depending on the input URL, the explicit protocol scheme may be omitted.
|
|
The following example shows HLS streams (``.m3u8``) and DASH streams (``.mpd``):
|
|
|
|
.. code-block:: console
|
|
|
|
$ streamlink "https://streamingserver/playlist.m3u8"
|
|
$ streamlink "https://streamingserver/manifest.mpd"
|
|
|
|
|
|
Supported streaming protocols
|
|
-----------------------------
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:class: table-custom-layout
|
|
|
|
* - Name
|
|
- Explicit prefix
|
|
* - Apple HTTP Live Streaming
|
|
- ``hls://``
|
|
* - MPEG-DASH
|
|
- ``dash://``
|
|
* - Progressive HTTP/HTTPS
|
|
- ``httpstream://``
|
|
|
|
.. note::
|
|
|
|
Local files can be read by adding the ``file://`` scheme to the ``URL`` component.
|
|
|
|
|
|
Protocol parameters
|
|
-------------------
|
|
|
|
When passing parameters to the built-in streaming protocols, the values will either be treated as plain strings
|
|
or they will be interpreted as Python literals:
|
|
|
|
.. code-block:: console
|
|
|
|
$ streamlink "httpstream://https://streamingserver/path method=POST params={'abc':123} json=['foo','bar','baz']"
|
|
|
|
.. code-block:: python
|
|
|
|
method="POST"
|
|
params={"key": 123}
|
|
json=["foo", "bar", "baz"]
|
|
|
|
The parameters from the example above are used to make an HTTP ``POST`` request with ``abc=123`` added
|
|
to the query string and ``["foo", "bar", "baz"]`` used as the content of the HTTP request's body (the serialized JSON data).
|
|
|
|
Some parameters allow you to configure the behavior of the streaming protocol implementation directly:
|
|
|
|
.. code-block:: console
|
|
|
|
$ streamlink "hls://https://streamingserver/path start_offset=123 duration=321 force_restart=True"
|
|
|
|
|
|
Available parameters
|
|
--------------------
|
|
|
|
Parameters are passed to the following methods of their respective stream implementations:
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:class: table-custom-layout
|
|
|
|
* - Protocol prefix
|
|
- Method references
|
|
* - ``httpstream://``
|
|
- - :py:meth:`streamlink.stream.HTTPStream`
|
|
- :py:meth:`requests.Session.request`
|
|
* - ``hls://``
|
|
- - :py:meth:`streamlink.stream.HLSStream.parse_variant_playlist`
|
|
- :py:meth:`streamlink.stream.HLSStream`
|
|
- :py:meth:`streamlink.stream.MuxedHLSStream`
|
|
- :py:meth:`requests.Session.request`
|
|
* - ``dash://``
|
|
- - :py:meth:`streamlink.stream.DASHStream.parse_manifest`
|
|
- :py:meth:`requests.Session.request`
|