bastimeyer · GitHub

Fixes #6929

@yoohot please have a look at the pull request changes and report back if this fixes the issue by testing a couple of streams. The live streams I've tested so far all seemed to be working, but I want to be sure.
https://github.com/streamlink/streamlink/blob/master/CONTRIBUTING.md#pull-request-feedback

The retured data from their website unfortunately doesn't include bitrate information anymore, so the currently available qualities ("full_hd1" (best), "hd1", "sd2" and "sd1" (worst)) need to be hardcoded with custom weights. I don't know if there are streams with different quality names that are missing in the current version of this PR.

HLS streams were not working, so I kept the HTTP streams.

$ streamlink --json https://live.douyin.com/548845936731 | jq .metadata
{
  "id": "7641226847266638633",
  "author": "木森(大舞台)直播",
  "category": null,
  "title": "2026木森《月赛》总决赛"
}
$ streamlink -l debug https://live.douyin.com/548845936731 best
[cli][debug] OS:         Linux-7.0.7-1-git-x86_64-with-glibc2.43
[cli][debug] Python:     3.14.5
[cli][debug] OpenSSL:    OpenSSL 3.6.2 7 Apr 2026
[cli][debug] Streamlink: 8.4.0+15.gb4466531
[cli][debug] Dependencies:
[cli][debug]  certifi: 2026.4.22
[cli][debug]  isodate: 0.7.2
[cli][debug]  lxml: 6.1.0
[cli][debug]  pycountry: 26.2.16
[cli][debug]  pycryptodome: 3.23.0
[cli][debug]  PySocks: 1.7.1
[cli][debug]  requests: 2.34.2
[cli][debug]  trio: 0.33.0
[cli][debug]  trio-websocket: 0.12.2
[cli][debug]  typing-extensions: 4.15.0
[cli][debug]  urllib3: 2.7.0
[cli][debug]  websocket-client: 1.9.0
[cli][debug] Arguments:
[cli][debug]  url=https://live.douyin.com/548845936731
[cli][debug]  stream=['best']
[cli][debug]  --loglevel=debug
[cli][debug]  --player=mpv
[cli][debug]  --webbrowser-headless=True
[cli][info] Found matching plugin douyin for URL https://live.douyin.com/548845936731
[cli][info] Available streams: sd1 (worst), sd2, hd1, full_hd1 (best)
[cli][info] Opening stream: full_hd1 (http)
[cli][info] Starting player: mpv
[cli][debug] Pre-buffering 8192 bytes
[cli.output][debug] Opening subprocess: ['/home/basti/.local/bin/mpv', '--force-media-title=https://live.douyin.com/548845936731', '-']
[cli][debug] Writing stream to output
[cli][info] Player closed
[cli][info] Stream ended
[cli][info] Closing currently open stream...

This is the quality data, but none of this maps to the given quality names:

[
  {
    "name": "\\u6807\\u6e05",
    "sdk_key": "ld",
    "v_codec": "264",
    "resolution": "720x540",
    "level": 1,
    "v_bit_rate": 1000000,
    "additional_content": "",
    "fps": 25,
    "disable": 0
  },
  {
    "name": "\\u9ad8\\u6e05",
    "sdk_key": "sd",
    "v_codec": "264",
    "resolution": "960x720",
    "level": 2,
    "v_bit_rate": 2000000,
    "additional_content": "",
    "fps": 30,
    "disable": 0
  },
  {
    "name": "\\u8d85\\u6e05",
    "sdk_key": "hd",
    "v_codec": "264",
    "resolution": "960x720",
    "level": 3,
    "v_bit_rate": 6000000,
    "additional_content": "",
    "fps": 59,
    "disable": 0
  },
  {
    "name": "\\u84dd\\u5149",
    "sdk_key": "uhd",
    "v_codec": "264",
    "resolution": "1440x1080",
    "level": 4,
    "v_bit_rate": 14998528,
    "additional_content": "",
    "fps": 59,
    "disable": 0
  },
  {
    "name": "\\u539f\\u753b",
    "sdk_key": "origin",
    "v_codec": "264",
    "resolution": "",
    "level": 5,
    "v_bit_rate": 14998528,
    "additional_content": "",
    "fps": 59,
    "disable": 0
  }
]

Read the original on github.com ↗