个人直播/流媒体服务解决方案实践

news/2024/12/23 4:51:06/

1. 说明

- 在本地局域网建立流媒体服务,并发布到公网服务器供终端(机顶盒/移动设备)订阅浏览

- 整个方案费用:本地硬件,本地上网费,公网服务器费, 域名费

1.1 拓扑结构图

其中: 流媒体服务器(Streaming Server), 媒体编排/发布客户机(Media Client)

2. 准备工作

2.1 软硬件清单
条目说明
流媒体小主机

这里我用了虚拟机,分配6核14G,安装软件:

媒体编排电脑

4核8G, 安装软件:

- vMix  绿色版

TVBOX / 机顶盒 (安卓系统)

4核2G,安装软件:

- TVBOX, CatBox等

路由器- iStoreOS
公网服务器 + 域名

2核1G,安装软件:

- frps service - frps 服务端

设置子域名指向, 如 live.xxx.top

3. 步骤

3.1 按上面的软硬件清单准备好材料
3.2 内网检查测试

流媒体服务器:

媒体编排机:

其中的流配置里面填上上面的推流地址与密钥

点击SRS中的简易播放器浏览 

3.3 透传到公网服务器 

通过透传软件, 暴露2022端口给外部访问, 注意公网服务器的防火墙开放相关端口。

3.4 公网测试

类似内网测试, 获取HLS流url, 如: http://***.top:2022/live/livestream.m3u8

3.5 机顶盒配置

找个网上的直播节目json做修改,如 live.txt:

🇨🇳|蓝光频道,#genre#
Ben MTV,http://live.xxx.top:2022/live/livestream.m3u8
4K超高清,http://liveop.cctv.cn/hls/4KHD/playlist.m3u8?zzhongd

 继续tvbox配置, 导入直播数据源, 打开直播节目, 如图:

搞掂!

4. 总结 

- 比较过几个透传方案,都是狠钱党,而且限制多多, 包括:DDNSTO, Ngrok 等。

5. 参考

  • SRS (Simple Realtime Server) | SRS
  • frp/README.md at dev · fatedier/frp · GitHub
  • 内网穿透!如何配置frp新版0.56.0的配置文件.toml:提供web、samba、ssh远程连接示例_frp 配置-CSDN博客

6. 后语

最近环境不太好, 趁着有点时间做些实践方案,分享之 ... 共勉。


http://www.ppmy.cn/news/1453320.html

相关文章

H.265码流解析

这一篇内容旨在对H.265码流中的一些概念做简单了解,部分概念与H.264相同,本篇中将不再重复。 1、NALU H.265(HEVC)码流的NALU结构和AVC有一些不同,属于增强版,HEVC NALU结构如下: NALU Header: Forbidden_zero_bit:1位,必须为0,如果不是则表示NALU非法;Nal_unit_t…

Nodejs-异步并发控制

异步并发控制 在 node 中可以利用异步发起并行调用。但是如果并发量过大,就会导致下层服务器吃不消。 bagpipe 解决方案 解决方案 通过一个队列来控制并发量如果当前活跃的异步调用小于限定值,从队列中取出执行如果活跃调用达到限定值,调…

Stable Diffusion webUI 最全且简单配置指南

Stable Diffusion webUI 配置指南 本博客主要介绍部署Stable Diffusion到本地,生成想要的风格图片。 文章目录 Stable Diffusion webUI 配置指南1、配置环境(1)pip环境[可选](2)conda环境[可选] 2、配置Stable Diffu…

QT中的容器

Qt中的容器 关于Qt中的容器类,下面我们来进行一个总结: Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。这些容器类是隐式共享和可重入的,而且他们进行了速度和存储的优化,因此可以减少可…

【QT教程】QT6与C++17

QT6与C17 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费QT视频…

排序算法之希尔排序(缩小增量排序)

希尔排序是插入排序的优化,如果不了解插入排序可以看排序算法之插入排序-CSDN博客这篇博客,希尔排序算法通过对原始数据集使用 gap 分组的方法,先将数据分组进行插入排序,随着排序的进行,逐渐减小 gap 的值&#xff0c…

ThreeJS:纹理的颜色空间

色彩空间Color Space 在ThreeJS中,纹理的colorSpace属性用于定义文里的颜色空间。 颜色空间是一个用于描述颜色的数学模型,在现实生活中,人眼可以观察到无数种颜色,而颜色空间就是用来描述这些颜色的一个方法,不同的颜…

Node.js -- MongoDB

文章目录 1. 相关介绍2. 核心概念3. 命令行交互3.1数据库命令3.2 集合命令3.3 文档命令 4. 数据库应用场景4.1 新增4.2 删除4.3 更新4.4 查询 5. 图形化工具Robo 3T 1. 相关介绍 一、简介 Mongodb是什么 MongoDB是一个基于分布式文件存储的数据库,官方地址https://…