我尝试手写一个 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 发送到服务器?
答案 0 :(得分:0)
我想通了。
如果我使用 'afv?username=abc&password=123' 作为 streamName 发送命令,代码运行良好。如果不需要 on_play 验证,播放器客户端可以使用“rtmp://127.0.0.1:1935/mylv/afv”访问流。