ffmpeg:
下载链接:链接:https://pan.baidu.com/s/1btHQR4Ik3RKApjKPzvTUiw 提取码:2yl8
配置环境:
电脑-属性-高级系统设置-环境变量-系统变量-path:
出现如下代表成功:
Nginx(带rtmp模块):
链接:https://pan.baidu.com/s/1jmc-ySktHvrbAi4Z9e8Upw
提取码:l1sx
右击以管理员身份运行;
win+R——cmd:
ffmpeg -i "rtsp://admin:****2345@192.168.1.64:554/h264/ch01/sub/av_stream" -f flv -r 25 -s 640x360 -an rtmp://localhost:1935/live/sub
出现如下即可表明推流成功:
通过网页调试:
可以看到已经成功拉到推的流了(网页与rtsp相差无几,但是用VLC播放时有几秒延迟)
感觉应该是VLC播放的问题。
后续再处理rtmp鉴权相关问题。
提供相关参考地址:
https://blog.csdn.net/u014373554/article/details/87889772
https://blog.csdn.net/luoc83/article/details/79240774
https://www.cnblogs.com/wunaozai/p/9427730.html
-----------------------------------------------------------------------------------------------------------------------
测试了播放鉴权,是可行的,流程如下:
nginx的配置:
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application rtmp {
live on;
on_play http://127.0.0.1:8081/rtmp/on_play;
}
#application hls {
# live on;
# hls on;
# hls_path temp/hls;
# hls_fragment 8s;
#}
}
}
http {
server {
listen 8080;
location / {
root html;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root html;
}
location /hls {
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias temp/hls;
expires -1;
}
}
}
#http {
# server {
# listen 8080;
#
# location / {
# root html;
# }
#
# location /stat {
# rtmp_stat all;
# rtmp_stat_stylesheet stat.xsl;
# }
#
# location /stat.xsl {
# root html;
# }
#
# location /hls {
# #server hls fragments
# types{
# application/vnd.apple.mpegurl m3u8;
# video/mp2t ts;
# }
# alias temp/hls;
# expires -1;
# }
# }
#}
spring boot的接口:
@Controller
@RequestMapping(value = "rtmp")
public class RtmpController {
@Autowired
private UserService userService;
/***
* 这是一种返回形式 以ModelAndView 视图返回数据的形式返回 和返回map一样 调用方式不一样
* */
@RequestMapping(value="/on_play",method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public String userLogin(HttpServletRequest request, HttpServletResponse response,HttpSession session){
String id=request.getParameter("id");
String password=request.getParameter("password");
if(StringUtils.isBlank(id)||StringUtils.isBlank(password)){
response.setStatus(500);
return "fail";
}
User user=new User();
User loginUser=new User();
user.setPassword(password);
user.setUserId(Integer.parseInt(id));
loginUser=userService.getUserById(user);
if(null!=loginUser){
return "ok";
}
response.setStatus(500);
return "fail";
}
}
测试如下:
黄色区域是没有携带id和pssword或者输入错误的信息,下面就是正常的播放rtmp流