ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【网络通信】Windows搭建RTMP视频流服务器(含推流/拉流具体教程) [打印本页]

作者: 锦通    时间: 2024-6-26 14:52
标题: 【网络通信】Windows搭建RTMP视频流服务器(含推流/拉流具体教程)
        RTMP(Real-Time Messaging Protocol)是一种用于及时流媒体传输的网络协议,紧张用于传输音频、视频和数据。RTMP最初是由Adobe Systems公司开发的,用于其Flash平台和Adobe Media Server,但随着技能的发展和开源社区的推动,RTMP已经成为了一个广泛利用的流媒体传输协议。本日和大家分享一下Windows搭建RTMP视频流服务器(含推流/拉流具体教程)
    原创作者:RS失路小书童
  博客地址:https://blog.csdn.net/m0_56729804?type=blog
  1、Web服务器下载(Nginx)

1.1 Nginx介绍

        Nginx(engine x)是一个高性能的HTTP和反向署理web服务器,同时也提供了IMAP/POP3/SMTP/RTMP等服务。它是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的。Nginx以类BSD答应证的形式发布其源代码,并因其稳固性、丰富的功能集、简单的设置文件和低系统资源的消耗而闻名。
        在功能方面,Nginx可以支持高达50,000个并发毗连数的响应,并且可以作为负载均衡服务,既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP署理服务对外进行服务。别的,Nginx还提供了模块化的结构,包括gzipping、byte ranges、chunked responses以及SSI-filter等filter。
        在安装和设置方面,Nginx的安装相对简单,可以通过各种包管理器如apt、yum等进行安装。设置文件通常位于/etc/nginx/nginx.conf,可以利用任何文本编辑器进行设置。在设置文件中,可以修改监听端口、添加虚拟主机设置等。
1.2 Nginx下载安装

下载地址:Index of /download/ (ecsds.eu)
利用说明:nginx for Windows - documentation.pdf (ecsds.eu)
这个版本是带rtmp且编译过的nginx版本,下载也很快,所以就不分享网盘了,大家自行下载!
2、RTMP服务器下载

2.1 nginx-rtmp-module下载

        nginx-rtmp-module是一个用于Nginx的第三方模块,它使Nginx可以或许支持及时多媒体流的传输和处理。
下载地址:GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server
网盘地址:【RS失路小书童分享】

3、搭建步骤

3.1 文件预处理

3.2 设置文件修改

        将nginx_1.7.11.3文件夹下的conf目次中nginx-win.conf文件以记事本的形式打开,将下面的代码替换进去。
  
  1. worker_processes  2;
  2. events {
  3.     worker_connections  8192;
  4.     # max value 32768, nginx recycling connections+registry optimization =
  5.     #   this.value * 20 = max concurrent connections currently tested with one worker
  6.     #   C1000K should be possible depending there is enough ram/cpu power
  7.     # multi_accept on;
  8. }
  9. #RTMP服务
  10. rtmp {
  11.     server {
  12.         listen 1935;#监听端口,若被占用,可以更改
  13.         chunk_size 4000;#上传flv文件块儿的大小
  14.         application live { #创建名为"live"的应用
  15.              live on;#开启live的应用
  16.              allow publish 127.0.0.1;#
  17.              allow play all;
  18.         }
  19.     }
  20. }
  21. #HTTP服务,可以通过浏览器访问http://localhost/stat查看状态
  22. http {
  23.     #include      /nginx/conf/naxsi_core.rules;
  24.     include       mime.types;
  25.     default_type  application/octet-stream;
  26.     sendfile        off;
  27.     #tcp_nopush     on;
  28.     server_names_hash_bucket_size 128;
  29.     client_body_timeout   10;
  30.     client_header_timeout 10;
  31.     keepalive_timeout     30;
  32.     send_timeout          10;
  33.     keepalive_requests    10;
  34.     server {
  35.         listen       80;
  36.         server_name  localhost;
  37. # For Naxsi remove the single # line for learn mode, or the ## lines for full WAF mode
  38.         location / {
  39.             #include    /nginx/conf/mysite.rules; # see also http block naxsi include line
  40.             root   html;
  41.             index  index.html index.htm;
  42.         }
  43.         error_page   500 502 503 504  /50x.html;
  44.         location = /50x.html {
  45.             root   html;
  46.         }
  47.     }
  48. }
复制代码
3.3 启动RTMP服务

        按住win+R,输入cmd进入命令行,跳转至nginx_1.7.11.3目次,输入nginx.exe -c conf\nginx-win.conf即可。

3.4 RTMP服务常用命令

  
  1. nginx.exe -s stop    //快速停止服务器,可能不保存相关信息
  2. nginx.exe -s quit    //完全停止服务器,保存相关信息
  3. nginx.exe -s reload  //重新载入Nginx/配置信息修改时使用此命令
复制代码
4、OBS推流

4.1 OBS下载

        Open Broadcaster Software是一个免费的开源的视频录制和视频及时交换软件。其有多种功能并广泛利用在视频采集,直播等范畴。
官网下载:Open Broadcaster Software | OBS (obsproject.com)
网盘地址:【RS失路小书童分享】
4.2 简易推流

        我这里就不具体介绍OBS如何利用了,大家可以自己探索一下,统统默认也可以用。

        推流码相称于密码一样,拉流的时间要用到,随便设置。我这里192.168.31.8是本机地址,前面的rtmp和后面的live就当作默认模板就行了,只需要改本机地址。假如不知道本机地址的,就去cmd命令行中输入ipconfig就能看到了。
        以上的设置好后,点击开始直播即可,下面会显示当前的fps、码率等。
5、Python拉流

        我这里利用opencv库做一个简单的拉流演示,当然也可以利用VLC等专门检察RTMP流的软件,看个人如何选择。
  1. # -*- coding: utf-8 -*-
  2. """
  3. @Time : 2023/11/19 13:59
  4. @Auth : RS迷途小书童
  5. @File :1.py
  6. @IDE :PyCharm
  7. @Purpose:Python拉取RTMP视频流
  8. @Web:博客地址:https://blog.csdn.net/m0_56729804
  9. """
  10. import cv2
  11. # 假设你的RTMP流地址是'rtmp://example.com/live/1122'
  12. # 请将其替换为你自己的RTMP流地址,这里的1122就是我刚才设置的推流码
  13. rtmp_stream_url = 'rtmp://192.168.31.8/live/1122'
  14. # 使用OpenCV的VideoCapture类来打开视频源
  15. cap = cv2.VideoCapture(rtmp_stream_url)
  16. # 检查是否成功打开视频流
  17. if not cap.isOpened():
  18.     print("Error opening video stream")
  19.     exit()
  20. # 循环读取视频的每一帧
  21. while True:
  22.     # 读取一帧图像
  23.     ret, frame = cap.read()
  24.     # 如果读取成功,ret为True
  25.     if not ret:
  26.         print("Can't receive frame (stream end?). Exiting ...")
  27.         break
  28.         # 显示读取到的帧
  29.     cv2.imshow('RTMP Stream', frame)
  30.     # 等待1毫秒,然后检查是否按下'q'键退出
  31.     if cv2.waitKey(1) & 0xFF == ord('q'):
  32.         break
  33.     # 释放VideoCapture对象
  34. cap.release()
  35. # 关闭所有OpenCV窗口
  36. cv2.destroyAllWindows()
复制代码
下图为OBS推送的文件管理窗口界面。

6、总结

           RTMP服务器的紧张功能包括接收来自客户端的音视频流,并将其转发给其他客户端进行播放或处理。这使得RTMP在直播、点播等流媒体服务中得到了广泛应用。RTMP协议提供了稳固的毗连和较低的耽误,使其成为及时互动场景的抱负选择,如直播、在线游戏等。
          RTMP服务器在处理高负载的流媒体服务时表现出色,可以或许处理大量的并发毗连和传输数据。别的,RTMP协议还支持多种音频和视频编解码器,以适应不同的流媒体应用需求。
          然而,随着HTML5的推广和Flash的逐渐淘汰,RTMP协议在某些方面受到了挑战。尽管如此,RTMP仍然在许多场景中,尤其是及时互动场景,保持着广泛的应用。例如,直播平台通常会采用RTMP协议作为推流和拉流的技能基础,以确保用户可以及时观看到直播内容。
          总之,RTMP服务器在及时音视频流传输范畴具有紧张地位,为流媒体服务提供了稳固、高效的解决方案。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4