ffmpeg+nginx+python完成视频流的推送与接收(Windows向Ubuntu推送视频流)

3 篇文章 0 订阅
3 篇文章 0 订阅
本文介绍了如何在Windows上使用ffmpeg将视频流推送到运行Ubuntu的虚拟机中,通过nginx配置rtmp服务,以及使用python接收并显示视频流的过程。详细步骤包括nginx和rtmp模块的安装、配置,ffmpeg的使用,以及推流和接收的实现。
摘要由CSDN通过智能技术生成

使用场景:我现在只有一台电脑,安装了虚拟机,虚拟机里面是Ubuntu系统,我准备把插在Windows本机上的视频流推给虚拟机里的Ubuntu,然后接收视频流显示出来,用于模拟以后可能遇到的视频流接引问题

1.安装nginx

sudo apt-get install libssl-dev libpcre3 libpcre3-dev openssl zlib1g-dev

下载nginx,这里选择了稳定版本

nginx: downloadhttp://nginx.org/en/download.html

 解压nginx

tar -zxvf nginx-1.14.2.tar.gz

下载rtmp插件(这个nginx没有,所以要单独下载)

https://github.com/arut/nginx-rtmp-modulehttps://github.com/arut/nginx-rtmp-module

解压nginx rtmp模块

unzip nginx-rtmp-module-master.zip

 编译nginx

cd nginx-1.20.2/
./configure --add-module=../nginx-rtmp-module-master
#../nginx-rtmp-module-master这里是nginx-rtmp的全路径或者相对路径,能在编译的时候找到就行

 编译情况如下

 接着make,正常情况如下

再接着sudo make install

 这里注意不加sudo 可能报错:mkdir: cannot create directory ‘/usr/local/nginx’: Permission denied

正常情况如下 

 自此nginx已经安装完了,验证是否安装

 启动

sudo /usr/local/nginx/sbin/nginx

新打开一个窗口命令行输入top,应该能找到nginx 

 查看自己的ip并访问网页确认,注意IP是那个ens33

 2.配置rtmp

命令行编辑nginx配置文件

sudo vim /usr/local/nginx/conf/nginx.conf

新增内容1,1992为监听端口,live on为实时

注意这里我设置了1992是监听端口,那么等下Windows推流时一定要用到的,默认是1935,如果你没有改就不用管

rtmp
{
    server
    {
        listen 1992;
        chunk_size 4096;
        application live
        {
            live on;
        }
    }
}

 新增内容2

其中8080为接流端口,等下要用到

/home/saners/software/nginx-rtmp-module-master为上面下载的nginx-rtmp-module-master全路径

server
{
      listen       8080;
      location /stat
      {
              rtmp_stat all;
              rtmp_stat_stylesheet stat.xsl;
      }
      location /stat.xsl
      {
              root /home/saners/software/nginx-rtmp-module-master;
      }
}

注意这个要放到http里面 

 接着关闭先前打开的nginx

sudo killall nginx

 重启更改了配置后的nginx

sudo /usr/local/nginx/sbin/nginx

3.Windows安装ffmpeg

 官网下载ffmpeg

Download FFmpeghttp://ffmpeg.org/download.html

点击以后跳转到GitHub,我选择了下面那个版本

 下载好以后解压放到自己想放的地方,并配置环境变量就可以用了

环境变量的配置右击此电脑后按照我标注的数字找到地方把ffmpeg的bin路径放过去就行了

配置好后输入ffmpeg -version查看是否安装正确,或者我插上罗技摄像头测试,在cmd中输入

ffmpeg -list_devices true -f dshow -i dummy

这句命令是给出现在设备的列表

 输出设备信息说明没问题了。

4.推流

 在Windows本机打开一个命令行输入以下语句,其中test.mp4是随便找的一个视频,flv是流格式,这个ip 192.168.41.128就是虚拟机里Ubuntu的

ffmpeg -i test.mp4  -f flv rtmp://192.168.41.128:1992/live/test

成功推送显示如下

 现在去Ubuntu看看推好了没有,输入地址

http://192.168.41.128:8080/stat  这个端口号是上面自己定义哈,别忘了那个stat不要改,固定的

上面没看到对应的test,说明推送视频失败,那么我们再试试usb设备的实时视频,看看是不是配置文件有问题,根据之前查的USB设备名字,我用下面的语句向Ubuntu推送视频流

ffmpeg -f dshow -i video="HIK 1080P Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.41.128:1992/live/test

Windows命令行情况如下

Ubuntu访问上述网址出现

说明配置没问题,后面再探究原因吧,下面走完最后一步,把视频实时接出来看看

 直接用python接,代码如下

import cv2

cap = cv2.VideoCapture("rtmp://192.168.41.128:1992/live/test")
while cap.isOpened():
    ret,frame = cap.read()
    if ret:
        cv2.imshow('frame',frame)
    key=cv2.waitKey(delay=2)
    if key == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

跑起来以后情况如下,刷新网页,那些out相关的会变,说明没有问题,而且还是实时

雁过留声,人过留名,有用点赞,不要白嫖!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如雾如电

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值