如何将 RTMP url 的查询部分发送到 RTMP 服务器

时间:2021-06-23 03:05:39

标签: rtmp

我尝试手写一个 RTMP 发布/播放客户端。我现在使用的流媒体服务器是带有rtmp模块的nginx。

我的代码遵循 RTMP 客户端的工作流程,例如 Handshake -> Connect -> CreateStream -> Publish or Play。

处理rtmp://127.0.0.1:1935/mylv/afv等简单的RTMP url时效果很好

但是当需要验证时,RTMP url 将是 rtmp://127.0.0.1:1935/mylv/afv?username=abc&password=123

rtmp {
     server {
        listen 1935;
        chunk_size 4000;
        application mylv { 
            live on;
            hls on;
            hls_path /mnt/datadisk0/uploadfile/live;
            allow play all;
            on_publish http://127.0.0.1:10078/user/auth; 
        }
    }
}

/// auth.py
from flask import Flask, request, Response
app = Flask(__name__)

@app.route('/user/auth',methods=['POST'])
def auth():
    user = request.form['username']
    password = request.form['password']
    print(user,'\t',password)

    auth_user ='abc'
    auth_passWord ='123'
    if auth_user == user and auth_passWord == password:
        return Response(response='success', status=200)
    else:
        return Response(status=500)
        #Flask.abort(404)
    return password


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=10078, debug=True)

如何将查询部分 username=abc&password=123 发送到服务器?

1 个答案:

答案 0 :(得分:0)

我想通了。

如果我使用 'afv?username=abc&password=123' 作为 streamName 发送命令,代码运行良好。如果不需要 on_play 验证,播放器客户端可以使用“rtmp://127.0.0.1:1935/mylv/afv”访问流。