ErsatzTV 是一款能将我们的媒体库变成直播电视频道,回到以前传统的电视体验的开源工具。通过读取本地媒体文件或连接 Plex、Jellyfin 等媒体服务器,然后创建自定义的电视频道,支持 IPTV 和 HDHomeRun 模拟。除此之外,还能灵活进行节目编排,按集合、时间排序等方式排播,甚至可以设置片头片尾、中场广告内容。项目提供了详细的使用文档,按照教程安装配置即可使用,有兴趣的同学可以看一下。
J.Cling 推荐拓展:
- OuonnkiTV – 视频聚合搜索工具|一键搭建个人影视站
- LibreTV – 轻量级开源免费的在线视频搜索与观看平台
- OrionTV – 专为Android TV 开发的电视播放器
- MoonTV – 开源免费跨平台影视聚合播放器
主要功能特点
- 自定义频道:创建和安排你自己的直播电视频道。
- IPTV & EPG:支持 IPTV 和电子节目指南的流媒体。
- 硬件转码:通过硬件加速实现高性能流媒体。
- 媒体服务器集成:连接 Plex、Jellyfin、Emby 等。
- 音乐与字幕:混合音乐视频并享受字幕支持。
- 开源:免费、开放且由社区驱动项目。


官方使用说明
更新日志
v25.6.0
Added
- 经典计划:允许在计划项目中选择多个图形元素
- 区块计划:允许在装饰中选择多个图形元素
- 添加频道
Playout Source
设置Generated
: 默认/现有行为,频道必须有自己的播放Mirror
: 频道将播放指定Mirror Source Channel
的播放内容- 这允许在不同频道上使用相同的内容,但具有不同的频道设置
播放偏移
可用于将计划播放项目的播放时间与镜像源频道进行偏移- 例如 -2 小时之前 将导致镜像频道播放镜像源频道 2 小时之前 的内容
- 添加对
.aif
、.aifc
、.aiff
歌曲文件的支持 - 经典计划:添加播放顺序
马拉松
- 这可以与集合和智能集合一起使用
- 来自收藏的物品将根据
Marathon Group By
设置进行分组:艺术家
,专辑
,季度
或节目
- 组的顺序可以可选地打乱
- 每个组中的项目顺序可以可选地打乱(否则
季, 集
或按时间顺序
根据情况使用) - 一次可以设置批次大小来限制每次从每个组中安排的项目数量
- 空或零批次大小意味着在前进之前播放每个组中的所有项目
- 任何其他值意味着在前进到下一组之前播放指定数量的项目
- 当
Request Logging Minimum Log Level
设置为Debug
时记录日志 API 请求 - 为每个播放列表项目添加
数量
设置- 之前,当
Play All
未被选中时,这默认为 1 - 现在,播放列表可以播放集合中的特定数量项,然后再移至下一个播放列表项
- 之前,当
- 经典计划:添加
Shuffle Playlist Items
设置来随机排序播放列表项- 打乱顺序发生在初始时(在播放重置时),和所有来自 整个播放列表 的项目都已播放后
- 通过添加播放详情行着色@peterdey
- 填充项具有独特的行颜色
- 未安排的间隙现在显示,并具有独特的行颜色
- 使用 scriban 处理整个图形元素 YAML 文件
- 这允许根据
MediaItem_ContentRating
(电影)或MediaItem_ShowContentRating
(剧集)等条件使用不同的图片
- 这允许根据
- 播放列表:为集合和智能集合添加播放顺序
Shuffle In Order
Fixed
- 修复带有 bt709/pc 色彩元数据的转码内容
- 修复创建或编辑播放列表时的脚本计划验证(文件存在)
- 修复向空播放列表中添加单个剧集、电影、季度、节目
- 修复以非超级用户身份使用 MySql 启动
- 使用 MySQL 时需要
local_infile=ON
(用于构建播放列表时的批量插入) - ETV 在获得权限时会自动设置
- 当 ETV 没有权限时,启动会失败,并记录配置 MySql 的说明
- 使用 MySQL 时需要
- 修复在不用点作为小数分隔符的地区(例如
,
)缩放变形内容的问题 - 节目单:修复当空集合使用随机播放顺序时播放构建崩溃的问题
- 修复由中段填充分隔的主要内容上的水印和图形元素
- 当
Scaling Behavior
为Crop
时修复水印和图形元素 - 修复移动设备上的硬件加速健康检查消息
- 修复装饰选择逻辑
- 修复低效的数据库迁移,这会导致数据库初始化卡住
- 经典计划:修复当洪水项在灵活固定开始项之前时的调度行为
- 有时洪水项不会安排任何内容
- 通过生成假 EPG 数据来修复某些文本图形元素的故障排除
Changed
- 重大变更 :改变了
Scripted Schedule
系统的工作方式- 不再使用嵌入式 python(IronPython);改为使用 HTTP API
- 在
/openapi/scripted-schedule.json
中添加了 OpenAPI 描述- 这允许从多种语言进行脚本化调度
- 脚本计划文件现在必须是可直接执行的(尽管可以使用包装器来加载 venv)
- 脚本计划文件将按顺序传递以下参数:
- API 主机(例如
http://localhost:8409
) - 构建 ID(一个 UUID 字符串,所有 API 调用都需要)
- 播放构建模式(例如
重置
或继续
,通常仅在重置播放时用于特定逻辑)
- API 主机(例如
- 自定义参数可以包含在播放列表编辑器中的
Scripted Schedule
字段中- 自定义参数将在必需参数之后传递
- 例如,一个
Scripted Schedule
为/home/jason/schedule.sh "party central" 23
的执行方式为/home/jason/schedule.sh http://localhost:8409 00000000-0000...0000 reset "party central" 23
- 这允许在多个脚本计划中重用包装脚本
- API 参考位于
/docs
- Docker 镜像包含预生成的 python api 客户端和入口脚本
- 入口脚本位于
/app/scripted-schedules/entrypoint.py
- 脚本文件夹应该挂载到
/app/scripted-schedules/scripts
- 播放列表应该使用脚本计划
/app/scripted-schedules/entrypoint.py script-name
创建(不要有尾随的.py
)
- 入口脚本位于
- 在使用
季,集
播放顺序时自动忽略 Specials/Season 0
获取方式
官方网站
https://github.com/ErsatzTV/ErsatzTV
网盘下载
https://pan.quark.cn/s/428608b1c570
更多媒体影音请访问:
https://www.gewuzhizhi.vip/favorites/multimedia
★★★ 强烈推荐 ★★★ 点击下图,500+常用办公精品软件一键直达!
© 版权声明
文章版权归作者所有,未经允许请勿转载。