Skip to main content

Common issues

The pre-built DouyinLiveRecorder.exe may trigger a false positive on some Windows antivirus products. This is a known issue with PyInstaller-packaged Python executables. The binary is safe to use.To verify: download only from the official GitHub Releases page, and check the SHA hash if one is provided. If your browser blocks the download, try a different browser.Alternatively, run from source with Python instead of using the pre-built binary.
This was a known bug in older versions caused by how Huya’s stream tokens expire. It has been fixed in recent releases (changelog entry: 20240701).Update to the latest release. If the issue persists, check that your Huya cookie in config/config.ini is valid and not expired.
These platforms are geo-restricted and require a proxy to access from mainland China or other regions.
  1. Set up a proxy that can reach the platform.
  2. In config/config.ini, enable proxy use and enter your proxy address:
是否使用代理ip(是/否) = 是
代理地址 = 127.0.0.1:7890
  1. Confirm the platform is in the proxy list (default value from config.ini):
使用代理录制的平台(逗号分隔) = tiktok, sooplive, pandalive, winktv, flextv, popkontv, twitch, liveme, showroom, chzzk, shopee, shp, youtu
If Faceit is not in the list, add it to the extra proxy field:
额外使用代理录制的平台(逗号分隔) = faceit
At startup, the recorder checks whether Google is reachable to detect proxy availability. If no proxy is detected, a warning is printed — overseas platforms will fail silently in this state.
This usually happens when a recording is interrupted abruptly — for example by killing the process, a system crash, or a Docker container being force-stopped.TS format is the most resilient. MPEG-TS does not require a complete footer to be readable. FLV and MP4 containers do, so an interrupted recording in those formats may produce an unplayable file.Switching to TS format with auto-convert to MP4 gives you both resilience and a clean final file:
视频保存格式ts|mkv|flv|mp4|mp3音频|m4a音频 = ts
录制完成后自动转为mp4格式 = 是
If you already have a corrupted file, try repairing it with:
ffmpeg -i corrupted.mp4 -c copy repaired.mp4
The status display shows 目前瞬时错误数为: N. A sustained high error count can indicate that the platform is rate-limiting or blocking your IP.Steps to reduce errors:
  • Increase the loop interval in config/config.ini (default is 300 seconds):
    循环时间(秒) = 300
    
  • Reduce the number of concurrent threads:
    同一时间访问网络的线程数 = 2
    
  • Consider using a proxy or rotating IPs.
The recorder has an adaptive thread limiter. When the instantaneous error rate exceeds a threshold, it automatically reduces 同一时间访问网络的线程数 by one until conditions improve. When the error rate falls, it increments back toward the configured maximum. Watch the status display to see this in action.
DouyinLiveRecorder requires FFmpeg to be available on the system PATH.
The pre-built release includes ffmpeg.exe in the same directory — no additional setup is needed.If running from source, either place ffmpeg.exe in the project root or add it to your system PATH. Download FFmpeg builds from ffmpeg.org.
After installation, verify with:
ffmpeg -version
Taobao requires a valid cookie with an active logged-in session. An empty or expired cookie will result in failed requests.
  1. Log in to Taobao in a browser.
  2. Copy the full Cookie header value from a request to taobao.com in DevTools.
  3. Paste it into config/config.ini:
taobao_cookie = <your cookie here>
Taobao sessions are relatively short-lived. You may need to refresh the cookie every few days.
Douyin’s anti-scraping system (风控) blocks requests that use stale or fingerprint-mismatched cookies.Remedies:
  • Refresh the 抖音cookie value in config/config.ini by copying a fresh cookie from a logged-in browser session.
  • For short links (v.douyin.com) or profile URLs, the recorder automatically uses the app stream path which is more stable.
  • If the problem persists, wait a few hours before retrying — Douyin rate-limits may reset.
Force-stopping a Docker container (for example with docker kill or Ctrl+C on docker-compose up) sends SIGKILL, which terminates FFmpeg immediately without flushing the file buffer. This corrupts files in formats that require a trailer (MP4, FLV).Use the graceful stop command instead:
docker-compose stop
This sends SIGTERM, which gives FFmpeg time to flush and close output files cleanly.Using TS format also mitigates this — TS files remain readable even when the process is killed abruptly.

Log files

DouyinLiveRecorder writes logs to the logs/ directory in the project root. Each session appends to the log file. Logs include:
  • Stream fetch errors and HTTP status codes
  • FFmpeg exit codes and error messages
  • Proxy detection results
  • Script execution output
If you are reporting a bug, include the relevant log output from logs/ to help diagnose the issue.

Build docs developers (and LLMs) love