nginx rtmp http_flv直播推流

这篇具有很好参考价值的文章主要介绍了nginx rtmp http_flv直播推流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装配置nginx

yum install epel-release -y
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install ffmpeg ffmpeg-devel -y
yum install gcc -y
yum install pcre pcre-devel -y
yum install openssl openssl-devel -y
yum install wget -y
mkdir -p /opt/sort/
cd /opt/soft/
wget -c http://nginx.org/download/nginx-1.25.0.tar.gz
tar -xf nginx-1.25.0.tar.gz 
git clone https://github.com/winshining/nginx-http-flv-module.git
mkdir -p /usr/local/nginx
mv nginx-http-flv-module /usr/local/nginx/

cd /opt/soft/nginx-1.25.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_secure_link_module --add-module=/usr/local/nginx/nginx-http-flv-module
make
make install
 
cd /usr/local/nginx/conf/
mkdir -p vhosts

配置
[root@localhost conf]# cat nginx.conf|grep -ivE ‘#|$| #’

worker_processes  1;
error_log  logs/error.log  warn;
 
events {
    worker_connections  1024;
    use epoll;
    multi_accept on;
}

    include flv.conf;
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
    log_format nginx_json '{    "time": "$time_local", '
                               '"remote_ip": "$remote_addr", '
                               '"remote_user": "$remote_user", '
                               '"domain":"$host", '
                               '"responsetime":$request_time, '
                               '"request": "$request", '
                               '"response": "$status", '
                               '"bytes": $body_bytes_sent, '
                               '"referrer": "$http_referer", '
                               '"upstreamtime":"$upstream_response_time", '
                               '"upstreamaddr":"$upstream_addr", '
                               '"x_forwarded_for":"$http_x_forwarded_for", '
                               '"agent": "$http_user_agent" }';
     access_log  logs/access.log  nginx_json;
    sendfile        on;
    tcp_nopush     on;
    server_tokens off;
    keepalive_timeout  65;
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types      text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    client_header_timeout 10;
    client_body_timeout 10;
    client_body_buffer_size 10K;
    proxy_buffering off;
 
    reset_timedout_connection on;
    send_timeout 10;
 
 
    charset utf-8;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /live {
            flv_live on;
            chunked_transfer_encoding on; #支持'Transfer-Encoding: chunked'方式回复
            add_header 'Access-Control-Allow-Origin' '*'; #添加额外的HTTP头
            add_header 'Access-Control-Allow-Credentials' 'true'; #添加额外的HTTP头
        }
 
        location /flv {
             flv_live on;
             chunked_transfer_encoding on;
             add_header 'Access-Control-Allow-Origin' '*';
             add_header 'Access-Control-Allow-Credentials' 'true'; #添加额外的HTTP头
        }
 
 
        location /stat {
                   #推流播放和录制统计数据的配置
                 rtmp_stat all;
                 rtmp_stat_stylesheet stat.xsl;
          }
                   
        location /stat.xsl {
                 root html; #指定 stat.xsl 的位置
         }
                                                            
    }
}

[root@localhost conf]# cat flv.conf |grep -vE ‘^$’

rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /tmp;
rtmp {
    out_queue           4096;
    out_cork            8;
    max_streams         128;
    timeout             15s;
    drop_idle_publisher 15s;
 
    log_interval 5s; #interval used by log module to log in access.log, it is very useful for debug
    log_size     1m; #buffer size used by log module to log in access.log
    server {
        listen 1935;
        application live {

            live on; #开启直播
            record off; 
            #可以把转完码的视频放在这个文件里,这样可以拉这个视频进行播放
            #play /opt/video;
 
            # 允许从任何源push流
            allow publish all;
            # 允许从任何地方来播放流
            allow play all;
            # 20秒内没有push,就断开链接。
            drop_idle_publisher 20s;
            ##打开 GOP 缓存,减少首屏等待时间
            gop_cache on; 
        }
        }
}

启动

[root@localhost conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# 
[root@localhost conf]# /usr/local/nginx/sbin/nginx
[root@localhost conf]# netstat -tnlp|grep nginx
tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN      36990/nginx: master 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      36990/nginx: master 


注册服务

[root@localhost conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# 
[root@localhost conf]# /usr/local/nginx/sbin/nginx
[root@localhost conf]# netstat -tnlp|grep nginx
tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN      36990/nginx: master 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      36990/nginx: master 




vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload

测试 - 推流

[root@localhost src]# ffmpeg -re -i 33335e4ffdce4f1f918bbde54b363a73.mp4 -c copy -f flv rtmp://192.168.1.60:1935/live/test            
ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '33335e4ffdce4f1f918bbde54b363a73.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: isommp41mp42
    creation_time   : 2022-12-06 09:44:01
    copyright       : 
    copyright-eng   : 
  Duration: 00:00:16.93, start: 0.047891, bitrate: 494 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 720x1280, 447 kb/s, 25.56 fps, 29.83 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      creation_time   : 2022-12-06 09:44:01
      handler_name    : Core Media Video
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 41 kb/s (default)
    Metadata:
      creation_time   : 2022-12-06 09:44:01
      handler_name    : Core Media Audio
[flv @ 0x2268de0] Codec for stream 0 does not use global headers but container format requires global headers
[flv @ 0x2268de0] Codec for stream 1 does not use global headers but container format requires global headers
Output #0, flv, to 'rtmp://192.168.1.60:1935/live/test':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: isommp41mp42
    copyright-eng   : 
    copyright       : 
    encoder         : Lavf56.40.101
    Stream #0:0(und): Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 720x1280, q=2-31, 447 kb/s, 25.56 fps, 29.83 tbr, 1k tbn, 600 tbc (default)
    Metadata:
      creation_time   : 2022-12-06 09:44:01
      handler_name    : Core Media Video
    Stream #0:1(und): Audio: aac ([10][0][0][0] / 0x000A), 44100 Hz, mono, 41 kb/s (default)
    Metadata:
      creation_time   : 2022-12-06 09:44:01
      handler_name    : Core Media Audio
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[flv @ 0x2268de0] Failed to update header with correct duration.ate= 496.6kbits/s    
[flv @ 0x2268de0] Failed to update header with correct filesize.
frame=  432 fps= 25 q=-1.0 Lsize=    1031kB time=00:00:16.99 bitrate= 496.7kbits/s    
video:923kB audio:86kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.089851%
[root@localhost src]# echo $?
0


-----------------end文章来源地址https://www.toymoban.com/news/detail-621449.html

到了这里,关于nginx rtmp http_flv直播推流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx 搭建http-flv(rtmp)流媒体的一次尝试

    项目需要通过调用海康摄像头实现远程监控,但是由于网络限制,只能通过代理来调用,因此只能放弃海康官网提供的视频插件,经过一番搜索,决定采用此种方式: nginx 搭建http-flv(rtmp)流媒体 基本的配置什么的,我就不在赘述,可参考网上的方法,经验证后的连接如下:

    2024年02月13日
    浏览(58)
  • 使用nginx和ffmpeg搭建HTTP FLV流媒体服务器(摄像头RTSP视频流->RTMP->http-flv)

    名词解释   RTSP (Real-Time Streaming Protocol) 是一种网络协议,用于控制实时流媒体的传输。它是一种应用层协议,通常用于在客户端和流媒体服务器之间建立和控制媒体流的传输。RTSP允许客户端向服务器发送请求,如播放、暂停、停止、前进、后退等,以控制媒体流的播放和

    2024年02月16日
    浏览(57)
  • Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流

    Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流: Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客 Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流: Vue中使用vue-video-player和videojs-flash插件实现播放

    2024年02月03日
    浏览(48)
  • Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器

    #!/bin/sh HTTP_FLV_MODULE_PATH=…/nginx-http-flv-module-1.2.7 OpenSSL_PATH=…/openssl-1.1.1d #–prefix=./bin 代表编译完成之后输出的路径地址 #–add-module 将拓展模块添加到当前一起编译 ./configure --prefix=./bin –add-module= H T T P F L V M O D U L E P A T H   − − w i t h − o p e n s s l = HTTP_FLV_MODULE_PATH --with

    2024年04月15日
    浏览(64)
  • 【音视频处理】RTMP、HLS、HTTP-FLV、WebRTC、RTSP的区别?直播协议详解

      大家好,欢迎来到停止重构的频道。 本期我们详细讨论 直播的相关协议 ,包括:HTTP-FLV、HLS、RTMP、Web-RTC、RTSP等等。 我们将会详细介绍这些协议的工作原理、应用场景、及延迟的原因。 我们按这样的顺序讨论​ 1、  RTMP、HTTP-FLV  2、  HLS  3、  Web-RTC  4、  RTSP  RTM

    2024年02月02日
    浏览(48)
  • 使用JavaCV和Spring Boot搭建HTTP-FLV直播服务:实时播放RTSP、RTMP和桌面投屏画面

    使用JavaCV和Spring Boot搭建HTTP-FLV直播服务:实时播放RTSP、RTMP和桌面投屏画面 摘要: 在本文中,我们将探讨如何使用JavaCV和Spring Boot构建一个简单的HTTP-FLV直播服务,该服务可以在浏览器中通过flv.js进行实时播放RTSP、RTMP和桌面投屏的画面。我们将介绍所需的开发环境和依赖库

    2024年01月20日
    浏览(54)
  • LiveNVR监控流媒体Onvif/RTSP功能-海康大华天地伟业SDK接入拉转直播流文件ISUP接入转换成视频直播流地址输出RTSP/WebRTC/RTMP/HLS/HTTP-FLV/WS-FLV

    某些场景下(小区监控、厂区监控等),我们需要接入摄像头,但手头上只能获取到摄像头直播流地址,如RTSP流地址。我们可能需要将视频流发布web页面,可以用浏览器快速无插件的浏览观看。我们可能需要云台操作摄像头。我们可能需要将视频监控的视频流做集中的存储录

    2024年02月03日
    浏览(88)
  • 海康威视摄像头RTSP使用nginx推流到服务器直播教程

    之前2020年在本科的时候,由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载!!!! 使用网络摄像头中的rtsp协议---------通过rtsp链接让推流软件获取到视频流------推流软件推流到直播服务器

    2024年01月16日
    浏览(77)
  • RTMP直播推流(一)视频推流

    关于cmakeList的配置,这里就直接给出代码:  在视频推流中,java层主要实现初始化、设置画布、转摄像头、开始直播和停止直播操作: MainActivity: LivePush代码: VideoChannel: 可以使用debug看一看操作的流程 下面进行jni层的开发: 首先要初始化设置: 初始化编码器: setVideo

    2024年02月02日
    浏览(43)
  • Linux安装Nginx并集成nginx-http-flv-module

    下载 Nginx: https://nginx.org/download nginx-http-flv-module: https://github.com/winshining/nginx-http-flv-module nginx可自行选择版本下载 ,nginx-http-flv-module可以通过git下载 解压安装 查找nginx安装目录 修改成如下配置 启动 cd ../sbin ./nginx

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包