利用流媒体将RSTP流转成WEB端可播放(使用ffmpeg+nginx)

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流

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值