Project Icon

MovieNight

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

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

目录

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 许可证。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号