1STREAMLINK(1) Streamlink STREAMLINK(1)
2
3
4
6 streamlink - extracts streams from various services and pipes them into
7 a video player of choice
8
10 Streamlink is a command-line application, which means that the commands
11 described here should be typed into a terminal. On Windows, you have to
12 open either the command prompt or the PowerShell, on macOS open the
13 Terminal app and if you're on Linux or BSD you probably already know
14 the drill.
15
16 The way Streamlink works is that it's only a means to extract and
17 transport the streams, and the playback is done by an external video
18 player. Streamlink works best with VLC or mpv, which are also
19 cross-platform, but other players may be compatible too, see the Play‐
20 ers page for a complete overview.
21
22 Now to get into actually using Streamlink, let's say you want to watch
23 the stream located on twitch.tv/day9tv, you start off by telling
24 Streamlink where to attempt to extract streams from. This is done by
25 giving the URL to the command streamlink as the first argument:
26
27 $ streamlink twitch.tv/day9tv
28 [cli][info] Found matching plugin twitch for URL twitch.tv/day9tv
29 Available streams: audio, high, low, medium, mobile (worst), source (best)
30
31 NOTE:
32 You don't need to include the protocol when dealing with HTTP(s)
33 URLs, e.g. just twitch.tv/day9tv is enough and quicker to type.
34
35 This command will tell Streamlink to attempt to extract streams from
36 the URL specified, and if it's successful, print out a list of avail‐
37 able streams to choose from.
38
39 In some cases (Supported streaming protocols) local files are sup‐
40 ported using the file:// protocol, for example a local HLS playlist can
41 be played. Relative file paths and absolute paths are supported. All
42 path separators are /, even on Windows.
43
44 $ streamlink hls://file://C:/hls/playlist.m3u8
45 [cli][info] Found matching plugin stream for URL hls://file://C:/hls/playlist.m3u8
46 Available streams: 180p (worst), 272p, 408p, 554p, 818p, 1744p (best)
47
48 To select a stream and start playback, simply add the stream name as a
49 second argument to the streamlink command:
50
51 $ streamlink twitch.tv/day9tv 1080p60
52 [cli][info] Found matching plugin twitch for URL twitch.tv/day9tv
53 [cli][info] Opening stream: 1080p60 (hls)
54 [cli][info] Starting player: vlc
55
56 The stream you chose should now be playing in the player. It's a common
57 use case to just want to start the highest quality stream and not be
58 bothered with what it's named. To do this, just specify best as the
59 stream name and Streamlink will attempt to rank the streams and open
60 the one of highest quality. You can also specify worst to get the low‐
61 est quality.
62
63 Now that you have a basic grasp of how Streamlink works, you may want
64 to look into customizing it to your own needs, such as:
65
66 · Creating a configuration file of options you want to use
67
68 · Setting up your player to cache some data before playing the stream
69 to help avoiding buffering issues
70
72 Writing the command-line options every time is inconvenient, that's why
73 Streamlink is capable of reading options from a configuration file
74 instead.
75
76 Streamlink will look for config files in different locations depending
77 on your platform:
78
79 ┌──────────────────┬───────────────────────────┐
80 │Platform │ Location │
81 ├──────────────────┼───────────────────────────┤
82 │Unix-like (POSIX) │ │
83 │ │ · $XDG_CON‐ │
84 │ │ FIG_HOME/stream‐ │
85 │ │ link/config │
86 │ │ │
87 │ │ · ~/.streamlinkrc │
88 ├──────────────────┼───────────────────────────┤
89 │Windows │ %APPDATA%\stream‐ │
90 │ │ link\streamlinkrc │
91 └──────────────────┴───────────────────────────┘
92
93 You can also specify the location yourself using the --config option.
94
95 NOTE:
96
97 · $XDG_CONFIG_HOME is ~/.config if it has not been overridden
98
99 · %APPDATA% is usually <your user directory>\AppData
100
101 NOTE:
102 On Windows there is a default config created by the installer but on
103 any other platform you must create the file yourself.
104
105 Syntax
106 The config file is a simple text file and should contain one
107 command-line option (omitting the dashes) per line in the format:
108
109 option=value
110
111 or for a option without value:
112
113 option
114
115 NOTE:
116 Any quotes used will be part of the value, so only use when the
117 value needs them, e.g. specifying a player with a path containing
118 spaces.
119
120 Example
121 # Player options
122 player=mpv --cache 2048
123 player-no-close
124
125 # Authenticate with Twitch
126 twitch-oauth-token=mytoken
127
128 NOTE:
129 Full player paths are supported via configuration file options such
130 as player="C:\mpv-x86_64\mpv"
131
133 You may want to use specific options for some plugins only. This can be
134 accomplished by placing those settings inside a plugin specific config
135 file. Options inside these config files will override the main config
136 file when a URL matching the plugin is used.
137
138 Streamlink expects this config to be named like the main config but
139 with .<plugin name> attached to the end.
140
141 Examples
142 ┌──────────────────┬───────────────────────────┐
143 │Platform │ Location │
144 ├──────────────────┼───────────────────────────┤
145 │Unix-like (POSIX) │ │
146 │ │ · $XDG_CON‐ │
147 │ │ FIG_HOME/stream‐ │
148 │ │ link/con‐ │
149 │ │ fig.twitch │
150 │ │ │
151 │ │ · ~/.stream‐ │
152 │ │ linkrc.ustreamtv │
153 ├──────────────────┼───────────────────────────┤
154 │Windows │ %APPDATA%\stream‐ │
155 │ │ link\streamlinkrc.youtube │
156 └──────────────────┴───────────────────────────┘
157
158 Have a look at the list of plugins to see the name of each built-in
159 plugin.
160
162 Authenticating with Twitch
163 It's possible to access subscription content on Twitch by giving
164 Streamlink access to your account.
165
166 Authentication is done by creating an OAuth token that Streamlink will
167 use to access your account. It's done like this:
168
169 $ streamlink --twitch-oauth-authenticate
170
171 This will open a web browser where Twitch will ask you if you want to
172 give Streamlink permission to access your account, then forwards you to
173 a page with further instructions on how to use it.
174
175 Authenticating with Crunchyroll
176 Crunchyroll requires authenticating with a premium account to access
177 some of their content. To do so, the plugin provides a couple of
178 options to input your information, --crunchyroll-username and
179 --crunchyroll-password.
180
181 You can login like this:
182
183 $ streamlink --crunchyroll-username=xxxx --crunchyroll-password=xxx http://crunchyroll.com/a-crunchyroll-episode-link
184
185 NOTE:
186 If you omit the password, streamlink will ask for it.
187
188 Once logged in, the plugin makes sure to save the session credentials
189 to avoid asking your username and password again.
190
191 Nevertheless, these credentials are valid for a limited amount of time,
192 so it might be a good idea to save your username and password in your
193 configuration file anyway.
194
195 WARNING:
196 The API this plugin uses isn't supposed to be available to use it on
197 computers. The plugin tries to blend in as a valid device using cus‐
198 tom headers and following the API usual flow (e.g. reusing creden‐
199 tials), but this does not assure that your account will be safe from
200 being spotted for unusual behavior.
201
202 HTTP proxy with Crunchyroll
203 You can use the --http-proxy and --https-proxy options (you need both
204 since the plugin uses both protocols) to access the Crunchyroll servers
205 through a proxy to be able to stream region locked content.
206
207 When doing this, it's very probable that you will get denied to access
208 the stream; this occurs because the session and credentials used by the
209 plugin where obtained when logged from your own region, and the server
210 still assumes you're in that region.
211
212 For this, the plugin provides the --crunchyroll-purge-credentials
213 option, which removes your saved session and credentials and tries to
214 log in again using your username and password.
215
216 Authenticating with FunimationNow
217 Like Crunchyroll, the FunimationNow plugin requires authenticating with
218 a premium account to access some content: --funimation-email,
219 --funimation-password. In addition, this plugin requires a incap_ses
220 cookie to be sent with each HTTP request (see issue #2088); this unique
221 session cookie can be found in your browser and sent via the
222 --http-cookie option.
223
224 For example:
225
226 $ streamlink --funimation-email='xxx' --funimation-password='xxx' --http-cookie 'incap_ses_xxx=xxxx=' https://funimation.com/shows/show/an-episode-link
227
228 NOTE:
229 There are multiple ways to retrieve the required cookie. For more
230 information on browser cookies, please consult the following:
231
232 · What are cookies?
233
235 Streamlink will attempt to load standalone plugins from these directo‐
236 ries:
237
238 ┌──────────────────┬────────────────────────────┐
239 │Platform │ Location │
240 ├──────────────────┼────────────────────────────┤
241 │Unix-like (POSIX) │ $XDG_CONFIG_HOME/stream‐ │
242 │ │ link/plugins │
243 ├──────────────────┼────────────────────────────┤
244 │Windows │ %APPDATA%\streamlink\plug‐ │
245 │ │ ins │
246 └──────────────────┴────────────────────────────┘
247
248 NOTE:
249 If a plugin is added with the same name as a built-in plugin then
250 the added plugin will take precedence. This is useful if you want to
251 upgrade plugins independently of the Streamlink version.
252
254 There are many types of streaming protocols used by services today and
255 Streamlink supports most of them. It's possible to tell Streamlink to
256 access a streaming protocol directly instead of relying on a plugin to
257 extract the streams from a URL for you.
258
259 A protocol can be accessed directly by specifying it in the URL format:
260
261 protocol://path [key=value]
262
263 Accessing a stream that requires extra parameters to be passed along
264 (e.g. RTMP):
265
266 $ streamlink "rtmp://streaming.server.net/playpath live=1 swfVfy=http://server.net/flashplayer.swf"
267
268 When passing parameters to the built-in stream plugins the values will
269 either be treated as plain strings, as is the case in the above example
270 for swfVry, or they will be interpreted as Python literals. For example
271 you can pass a Python dict or Python list as one of the parameters.
272
273 $ streamlink "rtmp://streaming.server.net/playpath conn=['B:1', 'S:authMe', 'O:1', 'NN:code:1.23', 'NS:flag:ok', 'O:0']"
274 $ streamlink "hls://streaming.server.net/playpath params={'token': 'magicToken'}"
275
276 In the above examples conn will be passed as the Python list:
277
278 ['B:1', 'S:authMe', 'O:1', 'NN:code:1.23', 'NS:flag:ok', 'O:0']
279
280 and params will be passed as the Python dict:
281
282 {'token': 'magicToken'}
283
284 Most streaming technologies simply requires you to pass a HTTP URL,
285 this is a Adobe HDS stream:
286
287 $ streamlink hds://streaming.server.net/playpath/manifest.f4m
288
289 Supported streaming protocols
290 ┌───────────────────────────┬────────────────────────────┐
291 │Name │ Prefix │
292 ├───────────────────────────┼────────────────────────────┤
293 │Adobe HTTP Dynamic Stream‐ │ hds:// │
294 │ing │ │
295 ├───────────────────────────┼────────────────────────────┤
296 │Akamai HD Adaptive Stream‐ │ akamaihd:// │
297 │ing │ │
298 ├───────────────────────────┼────────────────────────────┤
299 │Apple HTTP Live Streaming │ hls:// [1] │
300 ├───────────────────────────┼────────────────────────────┤
301 │MPEG-DASH [2] │ dash:// │
302 ├───────────────────────────┼────────────────────────────┤
303 │Real Time Messaging Proto‐ │ rtmp:// rtmpe:// rtmps:// │
304 │col │ rtmpt:// rtmpte:// │
305 ├───────────────────────────┼────────────────────────────┤
306 │Progressive HTTP, HTTPS, │ httpstream:// [1] │
307 │etc │ │
308 └───────────────────────────┴────────────────────────────┘
309
310 [1] supports local files using the file:// protocol
311
312 [2] Dynamic Adaptive Streaming over HTTP
313
315 You can use the --http-proxy and --https-proxy options to change the
316 proxy server that Streamlink will use for HTTP and HTTPS requests
317 respectively. As HTTP and HTTPS requests can be handled by separate
318 proxies, you may need to specify both options if the plugin you use
319 makes HTTP and HTTPS requests.
320
321 Both HTTP and SOCKS proxies are supported, authentication is supported
322 for both types.
323
324 NOTE:
325 When using a SOCKS proxy the socks4 and socks5 schemes mean that DNS
326 lookups are done locally, rather than on the proxy server. To have
327 the proxy server perform the DNS lookups, the socks4a and socks5h
328 schemes should be used instead.
329
330 For example:
331
332 $ streamlink --http-proxy "http://user:pass@10.10.1.10:3128/" --https-proxy "socks5://10.10.1.10:1242"
333 $ streamlink --http-proxy "socks4a://10.10.1.10:1235" --https-proxy "socks5h://10.10.1.10:1234"
334
336 $ streamlink [OPTIONS] <URL> [STREAM]
337
338 Positional arguments
339 URL A URL to attempt to extract streams from.
340
341 Usually, the protocol of http(s) URLs can be omitted ("‐
342 https://"), depending on the implementation of the plugin being
343 used.
344
345 Alternatively, the URL can also be specified by using the --url
346 option.
347
348 STREAM Stream to play.
349
350 Use best or worst for selecting the highest or lowest available
351 quality.
352
353 Fallback streams can be specified by using a comma-separated
354 list:
355
356 "720p,480p,best"
357
358 If no stream is specified and --default-stream is not used, then
359 a list of available streams will be printed.
360
361 General options
362 -h, --help
363 Show this help message and exit.
364
365 -V, --version
366 Show version number and exit.
367
368 --plugins
369 Print a list of all currently installed plugins.
370
371 --plugin-dirs DIRECTORY
372 Attempts to load plugins from these directories.
373
374 Multiple directories can be used by separating them with a
375 comma.
376
377 --can-handle-url URL
378 Check if Streamlink has a plugin that can handle the specified
379 URL.
380
381 Returns status code 1 for false and 0 for true.
382
383 Useful for external scripting.
384
385 --can-handle-url-no-redirect URL
386 Same as --can-handle-url but without following redirects when
387 looking up the URL.
388
389 --config FILENAME
390 Load options from this config file.
391
392 Can be repeated to load multiple files, in which case the
393 options are merged on top of each other where the last config
394 has highest priority.
395
396 -l LEVEL, --loglevel LEVEL
397 Set the log message threshold.
398
399 Valid levels are: none, error, warning, info, debug, trace
400
401 -Q, --quiet
402 Hide all log output.
403
404 Alias for "--loglevel none".
405
406 -j, --json
407 Output JSON representations instead of the normal text output.
408
409 Useful for external scripting.
410
411 --auto-version-check {yes,true,1,on,no,false,0,off}
412 Enable or disable the automatic check for a new version of
413 Streamlink.
414
415 Default is: "no".
416
417 --version-check
418 Runs a version check and exits.
419
420 --locale LOCALE
421 The preferred locale setting, for selecting the preferred subti‐
422 tle and audio language.
423
424 The locale is formatted as [language_code]_[country_code], eg.
425 en_US or es_ES.
426
427 Default is: system locale.
428
429 --twitch-oauth-authenticate
430 Open a web browser where you can grant Streamlink access to your
431 Twitch account which creates a token for use with
432 --twitch-oauth-token.
433
434 Player options
435 -p COMMAND, --player COMMAND
436 Player to feed stream data to. By default, VLC will be used if
437 it can be found in its default location.
438
439 This is a shell-like syntax to support using a specific player:
440
441 streamlink --player=vlc <url> [stream]
442
443 Absolute or relative paths can also be passed via this option in
444 the event the player's executable can not be resolved:
445
446 streamlink --player=/path/to/vlc <url> [stream]
447 streamlink --player=./vlc-player/vlc <url> [stream]
448
449 To use a player that is located in a path with spaces you must
450 quote the parameter or its value:
451
452 streamlink "--player=/path/with spaces/vlc" <url> [stream]
453 streamlink --player "C:\path\with spaces\mpc-hc64.exe" <url> [stream]
454
455 Options may also be passed to the player. For example:
456
457 streamlink --player "vlc --file-caching=5000" <url> [stream]
458
459 As an alternative to this, see the --player-args parameter,
460 which does not log any custom player arguments.
461
462 -a ARGUMENTS, --player-args ARGUMENTS
463 This option allows you to customize the default arguments which
464 are put together with the value of --player to create a command
465 to execute. Unlike the --player parameter, custom player argu‐
466 ments will not be logged.
467
468 This value can contain formatting variables surrounded by curly
469 braces, { and }. If you need to include a brace character, it
470 can be escaped by doubling, e.g. {{ and }}.
471
472 Formatting variables available:
473
474 {filename}
475 This is the filename that the player will use. It's usu‐
476 ally "-" (stdin), but can also be a URL or a file depend‐
477 ing on the options used.
478
479 It's usually enough to use --player instead of this unless you
480 need to add arguments after the filename.
481
482 Default is: "{filename}".
483
484 Example:
485
486 streamlink -p vlc -a "--play-and-exit {filename}" <url> [stream]
487
488 -v, --verbose-player
489 Allow the player to display its console output.
490
491 -n, --player-fifo, --fifo
492 Make the player read the stream through a named pipe instead of
493 the stdin pipe.
494
495 --player-http
496 Make the player read the stream through HTTP instead of the
497 stdin pipe.
498
499 --player-continuous-http
500 Make the player read the stream through HTTP, but unlike
501 --player-http it will continuously try to open the stream if the
502 player requests it.
503
504 This makes it possible to handle stream disconnects if your
505 player is capable of reconnecting to a HTTP stream. This is usu‐
506 ally done by setting your player to a "repeat mode".
507
508 --player-external-http
509 Serve stream data through HTTP without running any player. This
510 is useful to allow external devices like smartphones or stream‐
511 ing boxes to watch streams they wouldn't be able to otherwise.
512
513 Behavior will be similar to the continuous HTTP option, but no
514 player program will be started, and the server will listen on
515 all available connections instead of just in the local (loop‐
516 back) interface.
517
518 The URLs that can be used to access the stream will be printed
519 to the console, and the server can be interrupted using CTRL-C.
520
521 --player-external-http-port PORT
522 A fixed port to use for the external HTTP server if that mode is
523 enabled. Omit or set to 0 to use a random high ( >1024) port.
524
525 --player-passthrough TYPES
526 A comma-delimited list of stream types to pass to the player as
527 a URL to let it handle the transport of the stream instead.
528
529 Stream types that can be converted into a playable URL are:
530
531 · hls
532
533 · http
534
535 · rtmp
536
537 Make sure your player can handle the stream type when using
538 this.
539
540 --player-no-close
541 By default Streamlink will close the player when the stream
542 ends. This is to avoid "dead" GUI players lingering after a
543 stream ends.
544
545 It does however have the side-effect of sometimes closing a
546 player before it has played back all of its cached data.
547
548 This option will instead let the player decide when to exit.
549
550 -t TITLE, --title TITLE
551 This option allows you to supply a title to be displayed in the
552 title bar of the window that the video player is launched in.
553
554 This value can contain formatting variables surrounded by curly
555 braces, { and }. If you need to include a brace character, it
556 can be escaped by doubling, e.g. {{ and }}.
557
558 This option is only supported for the following players: mpv,
559 potplayer, vlc.
560
561 VLC specific information:
562 VLC has certain codes you can use inside your title.
563 These are accessible inside --title by using a backslash
564 before the dollar sign VLC uses to denote a format char‐
565 acter.
566
567 e.g. to put the current date in your VLC window title,
568 the string "$A" could be inserted inside your --title
569 string.
570
571 A full list of the format codes VLC uses is available
572 here:
573 https://wiki.videolan.org/Documentation:Format_String/
574
575 mpv specific information:
576 mpv has certain codes you can use inside your title.
577 These are accessible inside --title by using a backslash
578 before the dollar sign mpv uses to denote a format char‐
579 acter.
580
581 e.g. to put the current version of mpv running inside
582 your mpv window title, the string "${{mpv-version}}"
583 could be inserted inside your --title string.
584
585 A full list of the format codes mpv uses is available
586 here: https://mpv.io/manual/stable/#property-expansion
587
588 Formatting variables available to use in --title:
589
590 {title}
591 If available, this is the title of the stream. Other‐
592 wise, it is the string "Unknown Title"
593
594 {author}
595 If available, this is the author of the stream. Other‐
596 wise, it is the string "Unknown Author"
597
598 {category}
599 If available, this is the category the stream has been
600 placed into.
601
602 · For Twitch, this is the game being played
603
604 · For YouTube, it's the category e.g. Gaming, Sports,
605 Music...
606
607 Otherwise, it is the string "No Category"
608
609 {game} This is just a synonym for {category} which may make more
610 sense for gaming oriented platforms. "Game being played"
611 is a way to categorize the stream, so it doesn't need its
612 own separate handling.
613
614 {url} URL of the stream.
615
616 Examples:
617
618 streamlink -p vlc --title "{title} -!- {author} -!- {category} \$A" <url> [stream]
619 streamlink -p mpv --title "{title} -- {author} -- {category} -- (\${{mpv-version}})" <url> [stream]
620
621 File output options
622 -o FILENAME, --output FILENAME
623 Write stream data to FILENAME instead of playing it.
624
625 You will be prompted if the file already exists.
626
627 -f, --force
628 When using -o or -r, always write to file even if it already
629 exists.
630
631 -O, --stdout
632 Write stream data to stdout instead of playing it.
633
634 -r FILENAME, --record FILENAME
635 Open the stream in the player, while at the same time writing it
636 to FILENAME.
637
638 You will be prompted if the file already exists.
639
640 -R FILENAME, --record-and-pipe FILENAME
641 Write stream data to stdout, while at the same time writing it
642 to FILENAME.
643
644 You will be prompted if the file already exists.
645
646 Stream options
647 --url URL
648 A URL to attempt to extract streams from.
649
650 Usually, the protocol of http(s) URLs can be omitted (https://),
651 depending on the implementation of the plugin being used.
652
653 This is an alternative to setting the URL using a positional
654 argument and can be useful if set in a config file.
655
656 --default-stream STREAM
657 Stream to play.
658
659 Use best or worst for selecting the highest or lowest available
660 quality.
661
662 Fallback streams can be specified by using a comma-separated
663 list:
664
665 "720p,480p,best"
666
667 This is an alternative to setting the stream using a positional
668 argument and can be useful if set in a config file.
669
670 --retry-streams DELAY
671 Retry fetching the list of available streams until streams are
672 found while waiting DELAY second(s) between each attempt. If
673 unset, only one attempt will be made to fetch the list of
674 streams available.
675
676 The number of fetch retry attempts can be capped with
677 --retry-max.
678
679 --retry-max COUNT
680 When using --retry-streams, stop retrying the fetch after COUNT
681 retry attempt(s). Fetch will retry infinitely if COUNT is zero
682 or unset.
683
684 If --retry-max is set without setting --retry-streams, the delay
685 between retries will default to 1 second.
686
687 --retry-open ATTEMPTS
688 After a successful fetch, try ATTEMPTS time(s) to open the
689 stream until giving up.
690
691 Default is: 1.
692
693 --stream-types TYPES, --stream-priority TYPES
694 A comma-delimited list of stream types to allow.
695
696 The order will be used to separate streams when there are multi‐
697 ple streams with the same name but different stream types. Any
698 stream type not listed will be omitted from the available
699 streams list. A * can be used as a wildcard to match any other
700 type of stream, eg. muxed-stream.
701
702 Default is: "rtmp,hls,hds,http,akamaihd,*".
703
704 --stream-sorting-excludes STREAMS
705 Fine tune the best and worst stream name synonyms by excluding
706 unwanted streams.
707
708 If all of the available streams get excluded, best and worst
709 will become inaccessible and new special stream synonyms
710 best-unfiltered and worst-unfiltered can be used as a fallback
711 selection method.
712
713 Uses a filter expression in the format:
714
715 [operator]<value>
716
717 Valid operators are >, >=, < and <=. If no operator is specified
718 then equality is tested.
719
720 For example this will exclude streams ranked higher than "480p":
721
722 ">480p"
723
724 Multiple filters can be used by separating each expression with
725 a comma.
726
727 For example this will exclude streams from two quality types:
728
729 ">480p,>medium"
730
731 Stream transport options
732 --hds-live-edge SECONDS
733 The time live HDS streams will start from the edge of stream.
734
735 Default is: 10.0.
736
737 --hds-segment-attempts ATTEMPTS
738 How many attempts should be done to download each HDS segment
739 before giving up.
740
741 Default is: 3.
742
743 --hds-segment-threads THREADS
744 The size of the thread pool used to download HDS segments. Mini‐
745 mum value is 1 and maximum is 10.
746
747 Default is: 1.
748
749 --hds-segment-timeout TIMEOUT
750 HDS segment connect and read timeout.
751
752 Default is: 10.0.
753
754 --hds-timeout TIMEOUT
755 Timeout for reading data from HDS streams.
756
757 Default is: 60.0.
758
759 --hls-live-edge SEGMENTS
760 How many segments from the end to start live HLS streams on.
761
762 The lower the value the lower latency from the source you will
763 be, but also increases the chance of buffering.
764
765 Default is: 3.
766
767 --hls-segment-attempts ATTEMPTS
768 How many attempts should be done to download each HLS segment
769 before giving up.
770
771 Default is: 3.
772
773 --hls-playlist-reload-attempts ATTEMPTS
774 How many attempts should be done to reload the HLS playlist
775 before giving up.
776
777 Default is: 3.
778
779 --hls-segment-threads THREADS
780 The size of the thread pool used to download HLS segments. Mini‐
781 mum value is 1 and maximum is 10.
782
783 Default is: 1.
784
785 --hls-segment-timeout TIMEOUT
786 HLS segment connect and read timeout.
787
788 Default is: 10.0.
789
790 --hls-segment-ignore-names NAMES
791 A comma-delimited list of segment names that will not be
792 fetched.
793
794 Example: --hls-segment-ignore-names 000,001,002
795
796 This will ignore every segment that ends with 000.ts, 001.ts and
797 002.ts
798
799 Default is: None.
800
801 NOTE:
802 The --hls-timeout must be increased, to a time that is longer
803 than the ignored break.
804
805 --hls-segment-key-uri URI
806 URI to segment encryption key. If no URI is specified, the URI
807 contained in the segments will be used.
808
809 Example: --hls-segment-key-uri "‐
810 https://example.com/hls/encryption_key"
811
812 Default is: None.
813
814 --hls-audio-select CODE
815 Selects a specific audio source or sources, by language code or
816 name, when multiple audio sources are available. Can be * to
817 download all audio sources.
818
819 Examples:
820
821 --hls-audio-select "English,German"
822 --hls-audio-select "en,de"
823 --hls-audio-select "*"
824
825 NOTE:
826 This is only useful in special circumstances where the regu‐
827 lar locale option fails, such as when multiple sources of the
828 same language exists.
829
830 --hls-timeout TIMEOUT
831 Timeout for reading data from HLS streams.
832
833 Default is: 60.0.
834
835 --hls-start-offset [HH:]MM:SS
836 Amount of time to skip from the beginning of the stream. For
837 live streams, this is a negative offset from the end of the
838 stream (rewind).
839
840 Default is: 00:00:00.
841
842 --hls-duration [HH:]MM:SS
843 Limit the playback duration, useful for watching segments of a
844 stream. The actual duration may be slightly longer, as it is
845 rounded to the nearest HLS segment.
846
847 Default is: unlimited.
848
849 --hls-live-restart
850 Skip to the beginning of a live stream, or as far back as possi‐
851 ble.
852
853 --http-stream-timeout TIMEOUT
854 Timeout for reading data from HTTP streams.
855
856 Default is: 60.0.
857
858 --ringbuffer-size SIZE
859 The maximum size of ringbuffer. Add a M or K suffix to specify
860 mega or kilo bytes instead of bytes.
861
862 The ringbuffer is used as a temporary storage between the stream
863 and the player. This is to allows us to download the stream
864 faster than the player wants to read it.
865
866 The smaller the size, the higher chance of the player buffering
867 if there are download speed dips and the higher size the more
868 data we can use as a storage to catch up from speed dips.
869
870 It also allows you to temporary pause as long as the ringbuffer
871 doesn't get full since we continue to download the stream in the
872 background.
873
874 Default is: "16M".
875
876 NOTE:
877 A smaller size is recommended on lower end systems (such as
878 Raspberry Pi) when playing stream types that require some
879 extra processing (such as HDS) to avoid unnecessary back‐
880 ground processing.
881
882 --rtmp-proxy PROXY, --rtmpdump-proxy PROXY
883 A SOCKS proxy that RTMP streams will use.
884
885 Example: 127.0.0.1:9050
886
887 --rtmp-rtmpdump FILENAME, --rtmpdump FILENAME
888 RTMPDump is used to access RTMP streams. You can specify the
889 location of the rtmpdump executable if it is not in your PATH.
890
891 Example: "/usr/local/bin/rtmpdump"
892
893 --rtmp-timeout TIMEOUT
894 Timeout for reading data from RTMP streams.
895
896 Default is: 60.0.
897
898 --stream-segment-attempts ATTEMPTS
899 How many attempts should be done to download each segment before
900 giving up.
901
902 This is generic option used by streams not covered by other
903 options, such as stream protocols specific to plugins, e.g.
904 UStream.
905
906 Default is: 3.
907
908 --stream-segment-threads THREADS
909 The size of the thread pool used to download segments. Minimum
910 value is 1 and maximum is 10.
911
912 This is generic option used by streams not covered by other
913 options, such as stream protocols specific to plugins, e.g.
914 UStream.
915
916 Default is: 1.
917
918 --stream-segment-timeout TIMEOUT
919 Segment connect and read timeout.
920
921 This is generic option used by streams not covered by other
922 options, such as stream protocols specific to plugins, e.g.
923 UStream.
924
925 Default is: 10.0.
926
927 --stream-timeout TIMEOUT
928 Timeout for reading data from streams.
929
930 This is generic option used by streams not covered by other
931 options, such as stream protocols specific to plugins, e.g.
932 UStream.
933
934 Default is: 60.0.
935
936 --stream-url
937 If possible, translate the stream to a URL and print it.
938
939 --subprocess-cmdline, --cmdline, -c
940 Print the command-line used internally to play the stream.
941
942 This is only available on RTMP streams.
943
944 --subprocess-errorlog, --errorlog, -e
945 Log possible errors from internal subprocesses to a temporary
946 file. The file will be saved in your systems temporary direc‐
947 tory.
948
949 Useful when debugging rtmpdump related issues.
950
951 --subprocess-errorlog-path PATH, --errorlog-path PATH
952 Log the subprocess errorlog to a specific file rather than a
953 temporary file. Takes precedence over subprocess-errorlog.
954
955 Useful when debugging rtmpdump related issues.
956
957 --ffmpeg-ffmpeg FILENAME
958 FFMPEG is used to access or mux separate video and audio
959 streams. You can specify the location of the ffmpeg executable
960 if it is not in your PATH.
961
962 Example: "/usr/local/bin/ffmpeg"
963
964 --ffmpeg-verbose
965 Write the console output from ffmpeg to the console.
966
967 --ffmpeg-verbose-path PATH
968 Path to write the output from the ffmpeg console.
969
970 --ffmpeg-video-transcode CODEC
971 When muxing streams transcode the video to this CODEC.
972
973 Default is: "copy".
974
975 Example: "h264"
976
977 --ffmpeg-audio-transcode CODEC
978 When muxing streams transcode the audio to this CODEC.
979
980 Default is: "copy".
981
982 Example: "aac"
983
984 HTTP options
985 --http-proxy HTTP_PROXY
986 A HTTP proxy to use for all HTTP requests, including WebSocket
987 connections. By default this proxy will be used for all HTTPS
988 requests too.
989
990 Example: "http://hostname:port/"
991
992 --https-proxy HTTPS_PROXY
993 A HTTPS capable proxy to use for all HTTPS requests.
994
995 Example: "https://hostname:port/"
996
997 --http-cookie KEY=VALUE
998 A cookie to add to each HTTP request.
999
1000 Can be repeated to add multiple cookies.
1001
1002 --http-header KEY=VALUE
1003 A header to add to each HTTP request.
1004
1005 Can be repeated to add multiple headers.
1006
1007 --http-query-param KEY=VALUE
1008 A query parameter to add to each HTTP request.
1009
1010 Can be repeated to add multiple query parameters.
1011
1012 --http-ignore-env
1013 Ignore HTTP settings set in the environment such as environment
1014 variables (HTTP_PROXY, etc) or ~/.netrc authentication.
1015
1016 --http-no-ssl-verify
1017 Don't attempt to verify SSL certificates.
1018
1019 Usually a bad idea, only use this if you know what you're doing.
1020
1021 --http-disable-dh
1022 Disable Diffie Hellman key exchange
1023
1024 Usually a bad idea, only use this if you know what you're doing.
1025
1026 --http-ssl-cert FILENAME
1027 SSL certificate to use.
1028
1029 Expects a .pem file.
1030
1031 --http-ssl-cert-crt-key CRT_FILENAME KEY_FILENAME
1032 SSL certificate to use.
1033
1034 Expects a .crt and a .key file.
1035
1036 --http-timeout TIMEOUT
1037 General timeout used by all HTTP requests except the ones cov‐
1038 ered by other options.
1039
1040 Default is: 20.0.
1041
1042 Plugin options
1043 --abweb-username USERNAME
1044 The username associated with your ABweb account, required to
1045 access any ABweb stream.
1046
1047 --abweb-password PASSWORD
1048 A ABweb account password to use with --abweb-username.
1049
1050 --abweb-purge-credentials
1051 Purge cached ABweb credentials to initiate a new session and
1052 reauthenticate.
1053
1054 --afreeca-username USERNAME
1055 The username used to register with afreecatv.com.
1056
1057 --afreeca-password PASSWORD
1058 A afreecatv.com account password to use with --afreeca-username.
1059
1060 --animelab-email EMAIL
1061 The email address used to register with animelab.com.
1062
1063 --animelab-password PASSWORD
1064 A animelab.com account password to use with --animelab-email.
1065
1066 --bbciplayer-username USERNAME
1067 The username used to register with bbc.co.uk.
1068
1069 --bbciplayer-password PASSWORD
1070 A bbc.co.uk account password to use with --bbciplayer-username.
1071
1072 --bbciplayer-hd
1073 Prefer HD streams over local SD streams, some live programmes
1074 may not be broadcast in HD.
1075
1076 --btsports-email EMAIL
1077 The email associated with your BT Sport account, required to
1078 access any BT Sport stream.
1079
1080 --btsports-password PASSWORD
1081 Your BT Sport account password.
1082
1083 --btv-username USERNAME
1084 A BTV username required to access any stream.
1085
1086 --btv-password PASSWORD
1087 A BTV account password to use with --btv-username.
1088
1089 --clubbingtv-username
1090 The username used to register with Clubbing TV.
1091
1092 --clubbingtv-password
1093 A Clubbing TV account password to use with
1094 --clubbingtv-username.
1095
1096 --crunchyroll-username USERNAME
1097 A Crunchyroll username to allow access to restricted streams.
1098
1099 --crunchyroll-password [PASSWORD]
1100 A Crunchyroll password for use with --crunchyroll-username.
1101
1102 If left blank you will be prompted.
1103
1104 --crunchyroll-purge-credentials
1105 Purge cached Crunchyroll credentials to initiate a new session
1106 and reauthenticate.
1107
1108 --crunchyroll-session-id SESSION_ID
1109 Set a specific session ID for crunchyroll, can be used to bypass
1110 region restrictions. If using an authenticated session ID, it is
1111 recommended that the authentication parameters be omitted as the
1112 session ID is account specific.
1113
1114 NOTE:
1115 The session ID will be overwritten if authentication is used
1116 and the session ID does not match the account.
1117
1118 --funimation-email
1119 Email address for your Funimation account.
1120
1121 --funimation-password
1122 Password for your Funimation account.
1123
1124 --funimation-language
1125 The audio language to use for the stream; japanese or english.
1126
1127 Default is: "english".
1128
1129 --funimation-mux-subtitles
1130 Enable automatically including available subtitles in to the
1131 output stream.
1132
1133 --liveedu-email EMAIL
1134 The email address used to register with liveedu.tv.
1135
1136 --liveedu-password PASSWORD
1137 A LiveEdu account password to use with --liveedu-email.
1138
1139 --openrectv-email EMAIL
1140 The email associated with your openrectv account, required to
1141 access any openrectv stream.
1142
1143 --openrectv-password PASSWORD
1144 An openrectv account password to use with --openrectv-email.
1145
1146 --pixiv-username USERNAME
1147 The email/username used to register with pixiv.net
1148
1149 --pixiv-password PASSWORD
1150 A pixiv.net account password to use with --pixiv-username
1151
1152 --pixiv-sessionid SESSIONID
1153 The pixiv.net sessionid that's used in pixivs PHPSESSID cookie.
1154 can be used instead of the username/password login process.
1155
1156 --pixiv-devicetoken DEVICETOKEN
1157 The pixiv.net device token that's used in pixivs device_token
1158 cookie. can be used instead of the username/password login
1159 process.
1160
1161 --pixiv-purge-credentials
1162 Purge cached Pixiv credentials to initiate a new session and
1163 reauthenticate.
1164
1165 --pixiv-performer USER
1166 Select a co-host stream instead of the owner stream.
1167
1168 --pluzz-mux-subtitles
1169 Automatically mux available subtitles in to the output stream.
1170
1171 --rtve-mux-subtitles
1172 Automatically mux available subtitles in to the output stream.
1173
1174 --sbscokr-id CHANNELID
1175 Channel ID to play.
1176
1177 Example:
1178
1179 streamlink http://play.sbs.co.kr/onair/pc/index.html best --sbscokr-id S01
1180
1181 --schoolism-email EMAIL
1182 The email associated with your Schoolism account, required to
1183 access any Schoolism stream.
1184
1185 --schoolism-password PASSWORD
1186 A Schoolism account password to use with --schoolism-email.
1187
1188 --schoolism-part PART
1189 Play part number PART of the lesson, or assignment feedback
1190 video.
1191
1192 Defaults is 1.
1193
1194 --steam-email EMAIL
1195 A Steam account email address to access friends/private streams
1196
1197 --steam-password PASSWORD
1198 A Steam account password to use with --steam-email.
1199
1200 --tvplayer-email EMAIL
1201 The email address used to register with tvplayer.com.
1202
1203 --tvplayer-password PASSWORD
1204 The password for your tvplayer.com account.
1205
1206 --twitch-oauth-token TOKEN
1207 An OAuth token to use for Twitch authentication. Use
1208 --twitch-oauth-authenticate to create a token.
1209
1210 --twitch-cookie COOKIES
1211 Twitch cookies to authenticate to allow access to subscription
1212 channels.
1213
1214 Example:
1215
1216 "_twitch_session_id=xxxxxx; persistent=xxxxx"
1217
1218 NOTE:
1219 This method is the old and clunky way of authenticating with
1220 Twitch, using --twitch-oauth-authenticate is the recommended
1221 and simpler way of doing it now.
1222
1223 --twitch-disable-hosting
1224 Do not open the stream if the target channel is hosting another
1225 channel.
1226
1227 --twitch-disable-ads
1228 Skip embedded advertisement segments at the beginning or during
1229 a stream. Will cause these segments to be missing from the
1230 stream.
1231
1232 --twitch-disable-reruns
1233 Do not open the stream if the target channel is currently broad‐
1234 casting a rerun.
1235
1236 --ustream-password PASSWORD
1237 A password to access password protected UStream.tv channels.
1238
1239 --ustvnow-username USERNAME
1240 Your USTV Now account username
1241
1242 --ustvnow-password PASSWORD
1243 Your USTV Now account password
1244
1245 --vimeo-mux-subtitles
1246 Automatically mux available subtitles in to the output stream.
1247
1248 --wwenetwork-email EMAIL
1249 The email associated with your WWE Network account, required to
1250 access any WWE Network stream.
1251
1252 --wwenetwork-password PASSWORD
1253 A WWE Network account password to use with --wwenetwork-email.
1254
1255 --yupptv-email EMAIL
1256 Your YuppTV account email
1257
1258 --yupptv-password PASSWORD
1259 Your YuppTV account password.
1260
1261 --zattoo-email EMAIL
1262 The email associated with your zattoo account, required to
1263 access any zattoo stream.
1264
1265 --zattoo-password PASSWORD
1266 A zattoo account password to use with --zattoo-email.
1267
1268 --zattoo-purge-credentials
1269 Purge cached zattoo credentials to initiate a new session and
1270 reauthenticate.
1271
1272 --zattoo-stream-types TYPES
1273 A comma-delimited list of stream types which should be used, the
1274 following types are allowed:
1275
1276 · dash
1277
1278 · hls
1279
1280 · hls5
1281
1282 Default is: "hls".
1283
1285 Streamlink Contributors
1286
1288 2020, Streamlink
1289
1290
1291
1292
12931.3.1 Jan 28, 2020 STREAMLINK(1)