参考博客: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:一个不同的参数就代表一个不同的流
看整体效果吧