Nginx Rtmp PHP实现鉴权推流

参考博客:https://blog.csdn.net/iam_shuaidaile/article/details/50599943

                  https://www.cnblogs.com/ylcms/p/7418239.html

                  https://www.cnblogs.com/houss/p/11296381.html

需求:拿手机当做摄像头,在公司系统中可以实时播放,不止是一部手机在推流。(这句话是重点)

推流方式的话网上有好多方式 比如常用的 red5、ffmpeg、nginx等等。这里使用的是nginx-rtmp

直接用鉴权解决!!!!废话不多说看代码

解决鉴权问题

编辑nginx.conf在服务器中配置鉴权如下:

rtmp{
    server{
        listen 1935;    
        notify_method get;
    application myapp{
        live on;#开启直播模式
        publish_notify on;#验证开启
        on_publish http://172.10.0.22/index.php;
        record off;
}

index.php跟index.html放同级目录就好

这里on_publish使用的php验证的,代码如下  (记着在服务器上安装PHP环境!一定记着不要在nginx配置文件中配置php相关信息!)

安装php环境:https://blog.csdn.net/weixin_40096730/article/details/85756541

<?php

// ?user=user&pass=pass

$user = isset($_GET['user']) ? $_GET['user'] : '';
$pass = isset($_GET['pass']) ? $_GET['pass'] : '';

if (empty($user) || empty($pass)) {
    echo "wrong query input";
    header('HTTP/1.0 404 Not Found');
    exit();
}

$saveuser = user;
$savepass = pass;

if (strcmp($user, $saveuser) == 0 && strcmp($pass, $savepass) == 0) {
    echo "Username and Password OK";
} else {
    echo "Username or Password wrong";
    header('HTTP/1.0 404 Not Found');
    exit();
}

?>

查看nginx启动

netstat -tunlp

把PID杀掉进入到sbin目录执行./nginx即可,如果报错了就检查看配置文件的语法(尤其是空格)

测试环节

  使用ffmpeg推流,好多推流工具用obs也可以。

ffmpeg -f dshow -i video="EasyCamera" -s 640x360 -vcodec libx264 -b:v 1000k -ab 128k -f flv rtmp://服务器地址:1935/myapp/test

看最后那个参数test:一个不同的参数就代表一个不同的流

看整体效果吧

猜你喜欢

转载自blog.csdn.net/qq_42107364/article/details/102742556