Python 实战 · 从 0 到 1 搭建直播视频平台
Barry
某上市公司技术研发总监
3717 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
Python 实战 · 从 0 到 1 搭建直播视频平台
15
15
1.0x
00:00/00:00
登录|注册

37|直播完整实现:使用Nginx-rtmp-module配置RTMP直播服务

msg
active
is_streamer
user
current_time
channel
key
channel.image_location
filename
file
channel
new_uuid
chat_enabled
record
description
topic
channel_name
current_user
input_location
msg
authed_stream
request_channel
key
push
on_publish
new_stream
default_stream_name
stream
exist_streams
streamkey_check()
on_publish_done
on_publish
last_message_read_time
active
is_streamer
channels()
OBS配置音频输入
OBS配置推流
OBS介绍
user_auth_check()
stream-data配置
权限处理情况二:用户有直播权限
权限处理情况一:用户无直播权限
Nginx配置文件
用户表
创建直播间
OBS实现推流和采集
推流验证
直播权限验证
直播完整实现:使用Nginx-rtmp-module配置RTMP直播服务

该思维导图由 AI 生成,仅供参考

你好,我是 Barry。
在上节课我们实现了直播推拉流,并且完成了视频直播和直播存储功能。现在你应该对推拉流到直播视频播放的全过程非常熟悉了,但目前系统仍然不够完备,还有很多功能点需要完善。
所以,这节课我们将会整合直播所有的流程以及相关的功能接口,让系统更完备。这节课我们主要会解决后面这几个问题。
如何实现直播权限验证?
如何做推流验证?
如何用 OBS 实现音频采集和推流?
如何创建直播间?
好,话不多说,咱们正式开始。

直播权限验证

当一个用户想要发起直播时,系统需要验证用户的直播权限,当用户的直播权限验证通过之后,才能发起直播,这么做是为了增强平台的安全性和规范性。
想要完成权限验证,我们首先要在用户表中设定权限字段。具体就是在 UserInfo 数据库表模型中新增该字段,这样到了后面接口操作时,我们才能通过该字段状态做权限的判断。
具体的用户信息表字段如下所示,对应的路径是 model/user.py。
class UserInfo(BaseModels, db.Model):
"""用户信息表"""
__tablename__ = "user_info"
#######
is_streamer = db.Column(db.SmallInteger, default=0) #用于直播权限判断
active = db.Column(db.SmallInteger, default=0) #用户状态
last_message_read_time = db.Column(db.DateTime)
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何使用Nginx-rtmp-module配置RTMP直播服务,并实现了直播权限验证、推流验证、OBS音频采集和推流、以及创建直播间等功能。通过在用户表中设定权限字段,实现了直播权限验证,并通过配置Nginx的on_publish和on_publish_done参数,实现了推流前后的权限认证和推流结束请求。文章通过具体的代码示例和逻辑解析,帮助读者了解了如何完整实现RTMP直播服务,并对推流权限和直播权限进行了详细的讲解。此外,还介绍了如何使用OBS进行推流和采集,以及创建直播间的接口实现。整体而言,本文内容丰富,适合对RTMP直播服务感兴趣的读者阅读学习。文章内容涵盖了直播权限验证、推流认证、OBS音视频采集和直播推流功能的实现,以及创建直播间的接口逻辑。读者可以通过本文了解到如何搭建完整的RTMP直播服务,并掌握相关技术细节和实现思路。值得一读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 实战 · 从 0 到 1 搭建直播视频平台》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • liaozd
    老师,nginx的完整配文件有没?我看git上面没有

    作者回复: 可以,我给检查上传一下。

    2024-01-16归属地:北京
  • Geek_zef
    查询视频流是否存在 如果存在直接删除,为什么有删除这个操作,业务逻辑不太懂

    作者回复: 使用Nginx-rtmp-module配置RTMP直播服务时,查询视频流是否存在并直接删除的操作,通常是为了满足特定的业务需求。 原因如下: 节省存储空间:当视频流已经过时或不再需要时,删除它们可以节省服务器的存储空间。这对于有限的存储空间或需要管理大量视频流的情况尤其重要。 管理资源:删除不再使用的视频流可以释放服务器资源,如内存和网络带宽。这对于保持服务器的性能和响应速度非常重要。 保持数据更新:如果视频流是临时或有时效性的,例如直播回放,删除旧的视频流可以确保只保留最新的内容,以便用户能够观看最新的视频内容。 合规性要求:在某些情况下,删除视频流可能是出于合规性要求或隐私考虑。例如,某些法律要求限制个人数据的保留期限,删除过时的视频流可以帮助遵守这些规定,所以我们要执行操作。

    2023-09-20归属地:广东
  • peter
    请教老师几个问题: Q1: name表示key,这个感觉不是很合适啊。 Q2: 文中的OBS推流是服务端的行为吗? 假设主播用手机,数据首先是从手机推到服务器,即推流是手机端的行为啊。 Q3:能否有一课来详细说明一下部署? 我对音视频和python都不熟悉,不过课程很好。我都是在地铁上看专栏的, 平时没有操作过。课程很有价值,很想操作一遍。期待老师写一个详细的部署文档, 比如,需要两台电脑,电脑A上部署XXX,电脑B上部署XXXX,等等。 正课或加餐都可以。

    作者回复: 1、有时候会将键(key)称为name,因此在某些情况下使用name来表示键也是合适的。 2、OBS推流是服务端的行为。在直播中,主播使用的手机或其他设备会将视频和音频数据通过推流方式发送到服务器,这个过程就是推流。推流可以是手机端的行为,但在这个场景中,服务器端会接收到来自手机的数据,并将其存储和处理,然后再将数据通过拉流方式发送到观众的设备上,以实现直播效果。 3、这个后边可以的,感谢同学对课程的认可,我也会继续加油,我的建议你可以先看看34讲,最后的实践就是通过Nginx来完成一个Web服务的部署和发布,你可以尝试一下能否理解并进行应用,后边有问题我们及时沟通。

    2023-07-18归属地:北京
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部