zoukankan      html  css  js  c++  java
  • windows下nginx配合ffmpeg推送视频流

    软件准备:

    设置nginx配置文件:nginx.conf,其初始设置为:

    worker_processes  1;
    
    error_log  logs/error.log info;
    
    events {
        worker_connections  1024;
    }
    
    rtmp {
        server {
            listen 1935;
    
            application live {
                live on;    
            }
    		
            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;  
            }  
        }
    }
    

    其默认监听1935端口,在cmd中运行nginx.exe即可启动服务

    ffmpeg推送视频流

    推送视频文件流

    ffmpeg.exe -re -i your_video.mp4 -f flv rtmp://127.0.0.1:1935/live
    

    -re参数会降低ffmpeg对视频文件的推送速率,避免ffmpeg读取文件过快,-i表示输入源,后跟你的视频文件地址,-f强制限制格式为flv,最后添加推送流的服务地址,即nginx中配置的rtmp服务地址

    上面的配置进行视频文件播放时,ffmpeg推送完整个文件后,程序会自动退出,也可设置循环推流:

    ffmpeg.exe -re -stream_loop -1 -i your_video.mp4 -f flv rtmp://127.0.0.1:1935/live
    

    这样,播放器会一直播放视频,不会停止,类似直播

    推送实时视频流

    以电脑摄像头为例,通过ffmpeg捕获设备实时视频,推送到ngixn的rtmp服务即可

    ffmpeg.exe -f dshow -i video="Integrated Webcam" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live
    

    -f dshow表示从windows DirectShow input device设备采集多媒体流,-i表示输入,video表示视频采集源,设为电脑的摄像头名称(可在设备管理器中查看),-vcodec 调用编解码器,设置编码格式,此处设置为libx264,输出的视频流解码格式为H264,其他参数暂时也不懂,最后推送到rtmp服务地址即可

    使用VLC(网络流播放器),输入网络串流地址(即rtmp服务地址,即可播放)

  • 相关阅读:
    让linux用户隶属于多个组
    ldd 的介绍
    全栈博客开发(三)完善项目并容器化
    C++ 迭代器
    C++ vector类
    C++输入输出流和变量
    C++ vscode搭建windows C++开发环境
    全栈博客开发(二)添加渲染
    C++ string类
    全栈博客开发(一)服务结构
  • 原文地址:https://www.cnblogs.com/Mr-Kahn/p/11011180.html
Copyright © 2011-2022 走看看