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
}
]