音视频桌面应用直播【免费下载链接】StreamCapMulti-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 · 基于FFmpeg · 支持监控/定时/转码项目地址https://gitcode.com/gh_mirrors/st/StreamCap点击查看免费下载StreamCap 是一款基于 FFmpeg 与 StreamGet 构建的多平台直播流自动录制客户端覆盖 40 国内外主流直播平台支持批量录制、循环监控、定时监控与自动转码。本文以仓库 README 为主线结合入口文件 main.py、录制管理器 record_manager.py、平台处理器与 FFmpeg 命令构建器等源码实现系统讲解其功能架构、从源码运行、.env环境配置、Docker 容器化部署以及核心录制原理读者读完即可独立完成部署并理解其底层工作流程。一、项目定位基于 FFmpeg 与 StreamGet 的多平台直播录制客户端StreamCap 的核心定位是用一套统一客户端解决多平台直播自动录制问题底层流媒体解析由 StreamGet 库完成录制与转码由 FFmpeg 完成UI 与多端分发则由 Fletflet[desktop,cli]0.85.3见 pyproject.toml承载。从 config/version.json 的项目简介看它面向抖音、TikTok、快手、虎牙、斗鱼、B站、小红书、Twitch、YouTube 等平台提供免费、高效、稳定的录制能力。README 明确列举了六大核心特性每一项都能在源码中找到对应实现多端支持Windows / macOS 桌面端与 Web 端PLATFORMdesktop|web见 .env.example。循环监控实时监控直播间状态开播即录。对应 record_manager.py 中的setup_periodic_live_check周期任务。定时任务在设定的时间范围内检查直播间状态对应scheduled_recording与get_scheduled_time_range逻辑。多种输出格式支持 ts、flv、mkv、mov、mp4、mp3、m4a 等对应 ffmpeg_builders/video 与 ffmpeg_builders/audio 目录下的各格式命令构造器。自动转码录制完成后自动转码为 mp4convert_to_mp4、delete_original等配置项见 config/default_settings.json。消息推送开播/下播状态推送支持桌面通知、钉钉、企业微信、飞书、Bark、ntfy、Server酱、Telegram、邮件等通道见 messages 目录与default_settings.json中的推送配置项。二、快速开始预构建程序与从源码运行1. 运行预构建程序免安装按官方 Releases 页面提供的最新版本压缩包根据自身系统选择下载Windows 用户下载StreamCap.zip解压后直接运行StreamCap.exe。macOS 用户下载StreamCap.dmg按提示完成安装后即可在启动台找到应用并运行。2. 从源码运行运行源码需要Python 3.10 或更高版本requires-python 3.10,4.0见 pyproject.toml。第一步克隆项目代码git clone https://gitcode.com/gh_mirrors/st/StreamCap.git cd StreamCap第二步安装依赖# 安装核心解析依赖 streamget pip install -i https://pypi.org/simple streamget # 桌面端依赖 pip install -r requirements.txt # Web 端依赖 pip install -r requirements-web.txt两个依赖清单的核心差异在于 Flet 的 extras桌面端使用flet[desktop,cli]Web 端使用flet[web,cli]其余如httpx0.28.1、streamget4.0.10、python-dotenv、pystray、plyer等基本一致对比 requirements.txt 与 requirements-web.txt。第三步配置运行环境将.env.example示例配置文件复制一份并重命名为.envcp .env.example .env第四步运行程序在 Windows 和 macOS 上默认以桌面程序方式运行python main.pyLinux 下建议以 Web 方式运行修改.env文件将PLATFORM的值改为web或者无需修改配置文件直接使用命令行参数启动python main.py --web启动成功后通过http://127.0.0.1:6006访问。如果程序提示缺少 FFmpeg请从 FFmpeg 官方下载页面获取预编译可执行文件并配置系统环境变量。入口源码解析main.py通过argparse定义了三个运行参数main.py--web以 Web 模式运行--hostWeb 服务监听地址默认取环境变量HOST默认127.0.0.1--portWeb 服务端口默认取环境变量PORT默认6006。程序启动时先执行load_dotenv()加载.env再判断args.web or platform web决定进入 Web 还是桌面模式。Web 模式下使用ft.run(...)启动 Flet Web 应用并指定viewft.AppView.WEB_BROWSER、web_rendererft.WebRenderer.CANVAS_KIT、no_cdnTrue桌面模式则先调用setup_bundled_flet_view()与patch_macos_flet_launcher()完成打包环境适配main.py。三、运行环境与.env配置详解.env.example 是 README 建议复制为.env的模板其中每个变量都可在源码中找到对应消费点环境变量默认值作用说明PLATFORMdesktop运行平台支持desktop或web由main.py读取并决定启动方式TZAsia/Shanghai容器内时区Docker 场景docker-compose.yml与Dockerfile中均使用HOST127.0.0.1Web 服务监听地址本地开发默认仅本机可访问PORT6006Web 主服务端口VIDEO_API_PORT6007Web 视频 API 服务端口对应docker-compose.yml中的video_api服务CUSTOM_VIDEO_ROOT_DIR空自定义 Web 视频存储目录VIDEO_API_EXTERNAL_URL空视频 API 的外部访问 URL如http://www.example.comAUTO_CHECK_UPDATEfalse是否启用自动更新检查UPDATE_SOURCEboth更新源优先级github、custom或bothGITHUB_REPOihmily/StreamCap更新检查使用的 GitHub 仓库CUSTOM_UPDATE_API空自定义更新 API 地址留空禁用UPDATE_CHECK_INTERVAL86400更新检查间隔秒默认 1 天此外除了环境变量应用还有一套保存在config/default_settings.json中的用户配置默认值由 settings_config.py 的get_config_value/get_video_save_path等方法统一读取。关键项包括live_save_path保存路径留空使用默认下载目录、video_format默认TS、record_quality默认OD、loop_time_seconds循环检测间隔默认180、segmented_recording_enabled分段录制开关、video_segment_time分段时长秒数默认1800、convert_to_mp4录制后转码 mp4以及recording_space_threshold磁盘剩余空间阈值默认2.0GB。四、容器化部署Docker Compose 一键运行本机无需 Python 环境即可运行前置要求是机器上已安装 Docker 与 Docker Compose。1. 快速启动最简单的方式是使用docker compose进入项目根目录确保已存在.env文件后执行docker compose up可选-d参数在后台运行。注意容器内时区默认使用Asia/Shanghai如需修改可在.env文件中配置TZ。2. 停止容器实例docker compose stop3. 构建镜像可选Docker 仓库中的镜像代码版本不一定是最新如需运行本仓库主分支最新代码可本地自定义构建docker build -t streamcap .Compose 编排细节查看 docker-compose.yml 可以看到镜像实际编排了两个服务streamcap主应用服务将${PORT:-6006}:${PORT:-6006}端口映射到宿主机挂载./logs、./config、./downloads与./.env四个卷并配置了基于curl -f http://localhost:${PORT:-6006}/about的健康检查间隔 30s超时 10s重试 3 次video_api视频 API 服务以python -m app.api.video_stream_service作为启动命令默认监听6007端口并通过CUSTOM_VIDEO_ROOT_DIR指定视频根目录depends_on主服务。镜像构建细节查看 Dockerfile镜像分两阶段构建builder 阶段在python:3.12-slim中安装requirements-web.txt依赖最终阶段内置ffmpeg、tzdata、curl以及 Node.js 20Flet Web 渲染所需默认启动命令为python main.py --web --host 0.0.0.0即容器内始终以 Web 模式对外提供服务。五、核心功能源码级解析1. 循环监控与开播即录机制监控的调度中枢是 record_manager.py 中的RecordingManager其生命周期由单例 BackendServices 统一管理后台事件循环Web 模式下BackendServices.start_background_loop()会在守护线程中启动独立 asyncio 事件循环创建磁盘空间检查任务与setup_periodic_live_check(interval)周期任务间隔默认取loop_time_seconds默认 180s保证浏览器刷新/断连后录制监控依然持续运行。周期检测check_all_live_status()遍历所有monitor_statusTrue且未在录制的任务依据detection_time与loop_time_seconds判断是否已到下次检测时间触发check_if_live()。状态机流转check_if_live()首先判断录制是否忙碌、是否被手动停止、是否处于定时任务范围之外NOT_IN_SCHEDULED_CHECK随后通过get_platform_info(url)识别平台构建recording_info交给LiveStreamRecorder.fetch_stream()拉取流信息若stream_info.is_live为真则更新状态为PREPARING_RECORDING并启动录制同时触发开播桌面通知与消息推送。并发控制每个平台分配独立的asyncio.Semaphore并发上限由platform_max_concurrent_requests默认3控制避免同一平台请求风暴。磁盘保护check_free_space()会比较保存目录剩余容量与recording_space_threshold默认 2.0 GB不足时自动将recording_enabled置为 False 并弹窗提示从而禁用录制防止磁盘写满。2. 定时任务机制README 中的定时任务特性对应Recording上的scheduled_recording、scheduled_start_time与monitor_hours字段。check_if_live()在定时模式scheduled_recordingTrue下会调用get_scheduled_time_range()生成时间范围列表并通过utils.is_current_time_within_range()判断当前时刻是否落在范围内不在范围内则跳过检测并显示NOT_IN_SCHEDULED_CHECK状态record_manager.py。3. 平台解析架构URL 正则注册 Handler 实例池仓库通过抽象基类PlatformHandler统一管理各平台适配器base.py每个具体平台类如DouyinHandler、TikTokHandler、KuaishouHandler、HuyaHandler等见 handlers.py通过PlatformHandler.register(pattern...)注册一个或多个 URL 正则模式get_handler_instance()按 URL 正则匹配找到对应类并以(proxy, cookies, record_quality, platform, username, password, account_type)为键做实例缓存实现同参数复用、不同参数隔离的实例池抽象方法get_stream_info(live_url)负责拉取流数据底层解析工作交给streamget库的DouyinLiveStream、TikTokLiveStream等类完成此外还内置了CustomHandler当传入地址以.flv或.m3u8结尾时直接作为录制地址使用方便接入未内置的平台。4. FFmpeg 录制命令与自动转码录制命令由 ffmpeg_builders/base.py 中的FFmpegCommandBuilder统一构造基础命令包含输入稳健性参数rw_timeout、analyzeduration、probesize、bufsize、max_muxing_queue_size且区分国内DEFAULT_CONFIG与海外平台OVERSEAS_CONFIG各参数值更大以对抗更差的网络环境流重连-reconnect_delay_max 60、-reconnect_streamed、-reconnect_at_eof直播中断后自动重连兼容处理-fflags discardcorruptigndts、-avoid_negative_ts 1、-correct_ts_overflow 1、移动端 UA 伪装以及针对 CHZZK 等平台的-extension_picky 0FFmpeg 8 严格模式下容器/扩展名不匹配会报错代理注入enable_proxy开启且平台命中default_platform_with_proxy列表时自动注入-http_proxy参数判断逻辑见 stream_manager.py。以 MP4 为例mp4.py非分段录制使用-c:v copy -c:a copy直接封装并加faststartfrag_keyframeempty_moovdelay_moov优化播放兼容性分段录制segmented_recording_enabledTrue则使用-f segment -segment_time 秒数默认 1800s即 30 分钟一段输出_%03d.mp4序号分片。录制完成后若convert_to_mp4开启还会执行转码并可按delete_original决定是否删除原始文件。5. 文件名与目录组织规则LiveStreamRecorder._get_filename()与_get_output_dir()stream_manager.py实现了灵活的落盘规则文件名默认按主播名_直播标题_时间拼接filename_includes_title控制是否包含标题支持custom_filename_template自定义模板占位符包括{anchor_name}、{title}、{time}、{platform}并自动清理连续下划线。目录层级依次受folder_name_platform、folder_name_author、folder_name_time、folder_name_title控制可形成保存根目录/平台/主播/日期/标题_主播的嵌套结构remove_emojis开关可清洗主播名中的 emoji 字符。六、已支持平台与示例地址国内平台30抖音、快手、虎牙、斗鱼、B站、小红书、YY、映客、Acfun、Blued、京东、淘宝……海外平台10TikTok、Twitch、PandTV、Soop、Twitcasting、CHZZK、Shopee、Youtube、LiveMe、Flextv(TTingLive)、Popkontv、Bigo……示例地址如未特殊备注默认使用直播间地址录制抖音: https://live.douyin.com/745964462470 (网页端主播直播间地址) https://v.douyin.com/iQFeBnt/ (app端主播直播间地址) https://live.douyin.com/yall1102 (拼接https://live.douyin.com/抖音号, 可支持录制VR直播) https://v.douyin.com/CeiU5cbX (app端主播主页地址) https://www.douyin.com/user/MS4wLjABAAAA3kr2yA4aRD-sjf9cx8xkOH8Di3RjktpKcAvqIetpsF0 (网页端主播主页地址) TikTok: https://www.tiktok.com/pearlgaga88/live 快手: https://live.kuaishou.com/u/yall1102 虎牙: https://www.huya.com/52333 斗鱼: https://www.douyu.com/3637778?dyshid https://www.douyu.com/topic/wzDBLS6?rid4921614dyshid YY: https://www.yy.com/22490906/22490906 B站: https://live.bilibili.com/320 小红书: http://xhslink.com/xpJpfM (一次性地址暂不支持循环监控) bigo直播: https://www.bigo.tv/cn/716418802 buled直播: https://app.blued.cn/live?idMp6G2R SOOP: https://play.sooplive.com/yoomingseo/293945591 网易cc: https://cc.163.com/583946984 千度热播: https://qiandurebo.com/web/video.php?roomnumber33333 PandaTV: https://www.pandalive.co.kr/live/play/bara0109 猫耳FM: https://fm.missevan.com/live/868895007 Look直播: https://look.163.com/live?id65108820position3 WinkTV: https://www.winktv.co.kr/live/play/anjer1004 FlexTV/TTinglive: https://www.flextv.co.kr/channels/593127/live https://www.ttinglive.com/channels/593127/live PopkonTV: https://www.popkontv.com/live/view?castIdwjfal007partnerCodeP-00117 https://www.popkontv.com/channel/notices?mcidwjfal007mcPartnerCodeP-00117 TwitCasting: https://twitcasting.tv/c:uonq 百度直播: https://live.baidu.com/m/media/pclive/pchome/live.html?room_id9175031377tab_category 微博直播: https://weibo.com/l/wblive/p/show/1022:2321325026370190442592 酷狗直播: https://fanxing2.kugou.com/50428671?refer2177sourceFrom TwitchTV: https://www.twitch.tv/gamerbee LiveMe: https://www.liveme.com/zh/v/17141543493018047815/index.html 花椒直播: https://www.huajiao.com/l/345096174 (一次性地址暂不支持循环监控) ShowRoom: https://www.showroom-live.com/room/profile?room_id480206 (主播主页地址) Acfun: https://live.acfun.cn/live/179922 映客直播: https://www.inke.cn/liveroom/index.html?uid22954469id1720860391070904 音播直播: https://live.ybw1666.com/800002949 知乎直播: https://www.zhihu.com/theater/10687?drama_id2037464603865642996 (直播间地址) CHZZK: https://chzzk.naver.com/live/458f6ec20b034f49e0fc6d03921646d2 嗨秀直播: https://www.haixiutv.com/6095106 VV星球直播: https://h5webcdn-pro.vvxqiu.com//activity/videoShare/videoShare.html?h5Serverhttps://h5p.vvxqiu.comroomIdLP115924473platformIdvvstar 17Live: https://17.live/en/live/6302408 浪Live: https://www.lang.live/en-US/room/3349463 畅聊直播: https://live.tlclw.com/106188 飘飘直播: https://m.pp.weimipopo.com/live/preview.html?uid91648673anchorUid91625862appplpl 六间房直播: https://v.6.cn/634435 乐嗨直播: https://www.lehaitv.com/8059096 花猫直播: https://h.catshow168.com/live/preview.html?uid19066357anchorUid18895331 Shopee: https://sg.shp.ee/GmpXeuf?uid1006401066session802458 Youtube(需配置cookie): https://www.youtube.com/watch?vcS6zS5hi1w0 淘宝: https://tbzb.taobao.com/live?liveSourcepc_live.discoveryliveId563820798126 (一次性地址暂不支持循环监控) 京东: https://3.cn/28MLBy-E Faceit: https://www.faceit.com/zh/players/Compl1/stream 连接直播: https://show.lailianjie.com/10000258 咪咕直播: https://www.miguvideo.com/p/live/120000541321 来秀直播: https://www.imkktv.com/h5/share/video.html?uid1845195roomId1710496 Picarto: https://www.picarto.tv/cuteavalanche 心动热播 https://xcqrkj.com/web/video.php?roomnumber10394232从上述列表可以总结出三条实用规律一是大部分平台直接粘贴直播间地址即可识别二是带 app 短链或主播主页地址的平台如抖音、ShowRoom需要相应的解析分支源码中以v.douyin.com in live_url or www.douyin.com/user in live_url等方式区分见 handlers.py 中DouyinHandler.get_stream_info三是少数一次性地址小红书、花椒、淘宝注明暂不支持循环监控监控类任务应避免使用这类短链。七、版本、文档与开源许可当前版本根据 pyproject.toml 与 config/version.json当前版本为v1.0.3其内核解析依赖 StreamGet 版本为4.0.10v1.0.3 主要修复了部分直播无法录制的问题并适配了更新的 UI 版本。使用技巧官方在版本公告中提示Windows 上按Alt H、macOS 上按Option H可快速访问快捷键帮助文档。多语言文档中文说明见本文英文版见 README_EN.md应用打包含 macOS DMG 制作脚本 create_macos_dmg.sh相关细节可参考 docs/packaging.md 与 docs/packaging_en.md。开源许可StreamCap 在Apache License 2.0下发布详见 LICENSE 文件。项目特别感谢 Flet、FFmpeg 与 StreamGet 三个开源项目的支持。需要提醒的是录制与转码高度依赖 FFmpeg 可执行文件源码运行前请确保其已安装并配置好环境变量Docker 部署则无需担心该问题因为 Dockerfile 已在镜像内预装 ffmpeg。赞分享音视频桌面应用直播【免费下载链接】StreamCapMulti-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 · 基于FFmpeg · 支持监控/定时/转码项目地址https://gitcode.com/gh_mirrors/st/StreamCap点击查看免费下载相关推荐StreamCap直播录制神器3分钟学会多平台自动录制StreamCap直播录制神器3分钟学会多平台自动录制 StreamCap是一款功能强大的多平台直播流自动录制客户端基于FFmpeg构建支持直播监控、定时音视频桌面应用直播StreamCap多平台直播流智能录制解决方案StreamCap是一款基于FFmpeg和StreamGet的跨平台直播录制工具支持40国内外主流直播平台提供从实时监控到自动转码的全流程录制能力。无论是音视频桌面应用直播StreamCap终极指南如何轻松实现多平台直播自动录制StreamCap终极指南如何轻松实现多平台直播自动录制 StreamCap是一款基于FFmpeg的多平台直播流自动录制客户端支持监控、定时录制和自动转码功音视频桌面应用直播上一篇Turbulenz Engine SoundManager 声音加载与管理指南下一篇OmenSuperHub 暗影精灵风扇控制与功耗解锁指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考