MaixCAM MaixPy 视频流 RTMP 推流

更新历史
日期 版本 作者 更新内容
2024-05-20 1.0.0 lxowalle 初版文档

简介

本文档提供通过RTMP推送H264视频流的方法

使用方法

from maix import camera, time, rtmp, image

cam = camera.Camera(640, 480, image.Format.FMT_YVU420SP)

# rtmp://192.168.0.30:1935/live/stream
host = '192.168.0.30'
port = 1935
app = 'live'
stream = 'stream'
bitrate = 1000_000
r = rtmp.Rtmp(host, port, app, stream, bitrate)
r.bind_camera(cam)
r.start()

while True:
    time.sleep(1)

步骤:

  1. 导入camera, time, rtmp和image模块

    from maix import camera, time, rtmp, image
    
  2. 初始化摄像头

    cam = camera.Camera(640, 480, image.Format.FMT_YVU420SP) # 初始化摄像头,输出分辨率640x480 NV21格式
    
    • 注意RTMP模块目前只支持NV21格式, 因此摄像头需要配置为NV21格式输出
  3. 初始化并启动Rtmp对象

    r = rtmp.Rtmp(host, port, app, stream, bitrate)
    r.bind_camera(cam)
    r.start()
    
    • r = rtmp.Rtmp(host, port, app, stream, bitrate)用来创建一个Rtmp对象,其中host指rtmp服务器的ip地址或者域名,app指rtmp服务器开放的应用名,stream指rtmp流的名称,也可以作为本次推流的密钥
    • r.bind_camera(cam)用来绑定一个Camera对象, 绑定后原Camera对象将不能再使用
    • r.start()用来启动rtmp推流
  4. 完成

向Bilibili推流测试

启动bilibili直播

  1. 点击直播

  2. 点击开播设置

  1. 通过我的直播间链接找到直播地址

  1. 往下翻,选择一个分类,再点击开始直播

  1. 执行步骤4后,可以看到

  • 直播服务器的地址为:rtmp://live-push.bilivideo.com/live-bvc
  • 串流密钥为:?streamname=live_xxxx&key=1fbfxxxxxxxxxxxxxffe0&schedule=rtmp&pflag=1

组合起来的rtmp推流地址就是:rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_xxxx&key=1fbfxxxxxxxxxxxxxffe0&schedule=rtmp&pflag=1

运行RTMP客户端

from maix import camera, time, rtmp, image

cam = camera.Camera(640, 480, image.Format.FMT_YVU420SP)

# rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_xxxx&key=1fbfxxxxxxxxxxxxxffe0&schedule=rtmp&pflag=1
host = 'live-push.bilivideo.com'
port = 1935
app = 'live-bvc'
stream = '?streamname=live_xxxx&key=1fbfxxxxxxxxxxxxxffe0&schedule=rtmp&pflag=1'
bitrate = 1000_000
r = rtmp.Rtmp(host, port, app, stream, bitrate)
r.bind_camera(cam)
r.start()

while True:
    time.sleep(1)

上面拿到bilibili的推流地址为rtmp://live-push.bilivideo.com/live-bvc/?streamname=live_xxxx&key=1fbfxxxxxxxxxxxxxffe0&schedule=rtmp&pflag=1

可以拆出

  1. 服务器地址为live-push.bilivideo.com
  2. 端口号为1935,即没有端口号则默认为1935
  3. 应用名为live-bvc
  4. 流名称为?streamname=live_xxxx&key=1fbfxxxxxxxxxxxxxffe0&schedule=rtmp&pflag=1

运行代码,就能在直播间看到maixcam的画面了,如果发现直播没有显示,可以尝试先关闭直播间,再重新打开直播间,再运行代码。

动手试试吧~