MovieNight

MovieNight

单实例流媒体服务器集成实时聊天系统

MovieNight是一个集成实时聊天系统的单实例流媒体服务器。该项目支持OBS推流,通过Web界面提供视频观看和聊天互动功能。MovieNight使用Go语言开发,支持跨平台编译,易于部署,并支持Docker容器化。它提供多种配置选项,包括访问控制、聊天管理和流媒体统计等。这个开源项目适合小型群组在线观影,可作为Rabbit等类似平台的替代方案。

MovieNight流媒体服务器DockerGo编程实时聊天Github开源项目

目录

MovieNight 流媒体服务器

构建状态

这是一个带聊天功能的单实例流媒体服务器。最初是为了替代 Rabbit 作为与一群人在线观看电影的平台而编写的。

构建要求

  • Go 1.16 或更新版本
  • GNU Make

较旧的 Go 版本

你可以按照以下指南在操作系统发行版的 Go 版本旁边安装更新的 Go 版本:https://golang.org/doc/manage-install

安装完成后,添加一个名为 GO_VERSION 的环境变量,并将其设置为你安装的版本(例如,1.16.1)。Makefile 现在将使用较新的版本。

编译和安装

你需要:

  • 下载 git clone https://github.com/zorchenhimer/MovieNight,进入源代码目录 cd MovieNight
  • 运行 go build

如果你想交叉编译,而不是运行 go build

  • 选择你的 TARGET,可选项为 "android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows";
  • 选择你的 ARCH,可选项为 "386 amd64 amd64p32 arm arm64 ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32leppc s390 s390x sparc sparc64";
  • 构建 make TARGET=windows ARCH=386(在 BSD 系统上使用 gmake);
  • 然后运行 ./MovieNight

示例:

$ git clone https://github.com/zorchenhimer/MovieNight $ cd MovieNight $ (make|gmake) TARGET=windows ARCH=386 $ ./MovieNight

Docker 包

可以使用以下命令拉取镜像。在 ghcr 查看标记版本

docker pull ghcr.io/zorchenhimer/movienight:master

Docker 构建

MovieNight 提供了 Dockerfile 和 docker-compose 文件,用于使用 Docker 运行 MovieNight。

构建容器

安装 Docker,克隆仓库并构建:

docker build -t movienight .

运行容器

构建完成后运行镜像:

# 使用默认设置文件(使用 settings_example.json 配置文件) docker run -d -p 8089:8089 -p 1935:1935 movienight # 使用自定义设置文件 docker run -d -p 8089:8089 -p 1935:1935 -v ./settings.json:/data/config/settings.json movienight

解释:

  • -d 在后台运行容器。
  • -p 8089:8089 将 MovieNight 网页界面映射到服务器的 8089 端口。
  • -p 1935:1935 将 OBS 的 RTMP 端口映射到服务器的 1935 端口(默认 RTMP 端口)。
  • -v ./settings.json:/config/settings.jsonsettings.json 文件映射到容器中。[可选]

docker-compose

docker-compose 将自动构建镜像,无需手动构建。

安装 Docker 和 docker-compose,克隆仓库并进入 ./docker 目录。然后运行:

docker-compose up -d

这个 docker-compose 文件将创建一个名为 movienight-config 的卷,并自动将标准的 settings.json 文件添加到其中。它还将端口 8089 和 1935 映射到主机的相同端口。

使用docker-compose运行的注意事项

settings.json进行任何更改后,需要重启容器才能应用这些更改。

FreeNAS-FreeBSD构建和运行

已发布FreeNAS & TrueNAS插件。你应该能在管理界面的插件部分找到MovieNight。但你仍然可以进行手动插件部署,文档在这里。 如果你更喜欢不使用插件管理创建Jail,这里有一个脚本可以设置Jail并在其中构建和运行MovieNight,你可以在freenas-iocage-movienight找到它。

Clever-Cloud部署和运行

如果你不想处理MovieNight实例的构建和运行,这里有一个"如何在Clever-Cloud上运行"的简短手册。 在你的Clever-Cloud控制面板中:

  • 创建一个"全新应用"并选择Go运行时实例
  • 命名它,选择你的数据中心
  • 你不需要任何"附加组件",除非你想为MovieNight实例提供一些表情符号
  • 添加以下环境变量(专家模式允许你从本页复制粘贴):
    • CC_GO_BUILD_TOOL="gobuild" 设置构建方法
    • CC_GO_PKG="github.com/zorchenhimer/MovieNight" 设置Go依赖项来源
    • CC_PRE_RUN_HOOK="echo \"{\\\"ApprovedEmotes\\\": true, \\\"Bans\\\": [], \\\"LetThemLurk\\\": false, \\\"ListenAddress\\\": \\\":8080\\\", \\\"LogFile\\\": \\\"thelog.log\\\", \\\"LogLevel\\\": \\\"debug\\\", \\\"MaxMessageCount\\\": 300, \\\"NoCache\\\": false, \\\"NewPin\\\": true, \\\"PageTitle\\\": \\\"Movie Night\\\", \\\"RateLimitAuth\\\": 5, \\\"RateLimitChat\\\": 1, \\\"RateLimitColor\\\": 60, \\\"RateLimitDuplicate\\\": 30, \\\"RateLimitNick\\\": 300, \\\"RegenAdminPass\\\": true, \\\"RtmpListenAddress\\\": \\\":4040\\\", \\\"RoomAccess\\\": \\\"pin\\\", \\\"RoomAccessPin\\\": \\\"9999\\\", \\\"StreamKey\\\": \\\"ALongStreamKey\\\", \\\"StreamStats\\\": true, \\\"TitleLength\\\": 50, \\\"WrappedEmotesOnly\\\": true}\" >> /home/bas/go_home/bin/settings.json" 构建默认配置文件settings.json的命令
    • CC_RUN_COMMAND="${MN_BIN_DIR}/${MN_BIN_NAME} -l ${MN_PORT} -r ${MN_RTMP} -s ${MN_STATIC} -k ${MN_STREAM_KEY}" 运行命令
    • MN_BIN_DIR="/home/bas/go_home/bin" 构建的二进制文件目录
    • MN_BIN_NAME="MovieNight" 可运行二进制文件的名称
    • MN_PORT=":8080" HTTP端口
    • MN_RTMP=":4040" RTMP端口
    • MN_STATIC="${APP_HOME}/static" 静态内容目录
    • MN_STREAM_KEY="YourStreamKey" 你的秘密流密钥,你需要更改它
  • 开启TCP重定向
  • 尝试运行你的MovieNight实例

这是你可以在进行一些自定义后使用的Clever-Cloud应用环境变量示例:

CC_GO_BUILD_TOOL="gobuild" CC_GO_PKG="github.com/zorchenhimer/MovieNight" CC_PRE_RUN_HOOK="echo \"{\\\"ApprovedEmotes\\\": true, \\\"Bans\\\": [], \\\"LetThemLurk\\\": false, \\\"ListenAddress\\\": \\\":8080\\\", \\\"LogFile\\\": \\\"thelog.log\\\", \\\"LogLevel\\\": \\\"debug\\\", \\\"MaxMessageCount\\\": 300, \\\"NoCache\\\": false, \\\"NewPin\\\": true, \\\"PageTitle\\\": \\\"Movie Night\\\", \\\"RateLimitAuth\\\": 5, \\\"RateLimitChat\\\": 1, \\\"RateLimitColor\\\": 60, \\\"RateLimitDuplicate\\\": 30, \\\"RateLimitNick\\\": 300, \\\"RegenAdminPass\\\": true, \\\"RtmpListenAddress\\\": \\\":4040\\\", \\\"RoomAccess\\\": \\\"pin\\\", \\\"RoomAccessPin\\\": \\\"9999\\\", \\\"StreamKey\\\": \\\"ALongStreamKey\\\", \\\"StreamStats\\\": true, \\\"TitleLength\\\": 50, \\\"WrappedEmotesOnly\\\": true}\" >> /home/bas/go_home/bin/settings.json" CC_RUN_COMMAND="${MN_BIN_DIR}/${MN_BIN_NAME} -l ${MN_PORT} -r ${MN_RTMP} -s ${MN_STATIC} -k ${MN_STREAM_KEY}" MN_BIN_DIR="/home/bas/go_home/bin" MN_BIN_NAME="MovieNight" MN_PORT=":8080" MN_RTMP=":4040" MN_STATIC="${APP_HOME}/static" MN_STREAM_KEY="YourStreamKey"

使用方法

现在你可以使用OBS向服务器推流。将流URL设置为

rtmp://your.domain.host/live

并输入流密钥。

然后你可以在以下地址观看直播:

http://your.domain.host:8089/

仅视频版本的地址为:

http://your.domain.host:8089/video

仅聊天版本的地址为:

http://your.domain.host:8089/chat

默认监听端口为:8089。可以在启动时提供新的端口来更改:

MovieNight.exe 的用法: -e bool 是否在启动时下载已批准的表情(默认为"false") -k string 流密钥,用于保护你的直播(默认为"") -l string MovieNight的主机:端口(默认为":8089") -r string RTMP服务器的主机:端口(默认为":1935") -f string 你想使用的设置文件(默认为"./settings.json")

配置

MovieNight的配置由settings.json控制:

  • AdminPassword:用户可以在聊天中输入 /auth <值> 来授予自己管理员权限。除非 RegenAdminPass 设为 false,否则此值会自动重新生成。
  • Bans:被禁用户列表。
  • LetThemLurk:如果为 false,会宣布用户进入和离开聊天室。
  • ListenAddress:MovieNight 监听的端口,格式为 :8089
  • LogFile:MovieNight 日志文件的路径,相对于可执行文件。
  • LogLevel:日志级别,默认为 debug
  • MaxMessageCount:聊天窗口显示的消息数量。
  • NewPin:如果为 true,服务器启动时重新生成 RoomAccessPin
  • NewStreamKey:如果为 true,服务器启动时使用随机的 StreamKey。命令行选项优先,如果设置了则使用命令行选项。
  • PageTitle:页面 <title> 元素中使用的基本字符串。当使用 /playing 设置流媒体标题时,它会被附加;例如,Movie Night | 杀死希特勒与大脚怪的男人
  • RegenAdminPass:如果为 true,服务器启动时重新生成 AdminPassword
  • RoomAccess:聊天室的访问策略;这由应用程序管理,不应手动编辑。
  • RoomAccessPin:如果设置,作为进入聊天室所需的密码。
  • SessionKey:用于存储会话数据(如 cookies 等)的密钥。
  • StreamKey:OBS 用于连接 MovieNight 的密钥。
  • StreamStats:如果为 true,在服务器关闭时打印流媒体统计信息。
  • TitleLength:流媒体标题(通过 /playing 设置)允许的最大长度。
  • WrappedEmotesOnly:如果为 true,要求表情代码必须用冒号或括号包裹;例如,:PogChamp:
  • RateLimitChat:非特权用户在聊天中发送每条消息之间的秒数。
  • RateLimitNick:用户再次更改昵称前的等待秒数。
  • RakeLimitColor:用户再次更改颜色前的等待秒数。
  • RateLimitAuth:每次允许的身份验证尝试之间的秒数。
  • RateLimitDuplicate:用户发送重复消息前的等待秒数。
  • NoCache:如果为 true,在 HTTP 头中设置 Cache-Control: no-cache, must-revalidate,以防止缓存响应。

许可证

flv.js 使用 Apache 2.0 许可证。本项目使用 MIT 许可证。

编辑推荐精选

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多