ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实时摄像头流传输(直播)

2021-11-23 14:59:30  阅读:260  来源: 互联网

标签:nginx cv2 传输 直播 rtmp 拉流 推流 摄像头


主要是给自己这两周折腾的东西收尾一下,踩了很多坑,比如用ffmpeg推流、自己配置nginx-rtmp环境等,没必要而且很容易出错。

前提知识

需要学习docker的简单使用,b站狂神,质量非常高。(别看写的java,我是python主语言的,也可以看)【狂神说Java】Docker进阶篇超详细版教程通俗易懂_哔哩哔哩_bilibili

需要学习网络相关的知识。比如ip地址的类型。

我们要做的事情分成两部分,推流和拉流。

推流

推流又分成两部分,一个是构建一个代理端口并配置一下,我主要是参考了

Docker简易搭建个人直播流rtmp服务器总结_二少爷的博客的博客-CSDN博客_docker搭建直播服务器

docker 搭建nginx-rtmp_司马懿的西山居-CSDN博客_docker nginx rtmp

两篇推文。注意需要配置好文件才能,可以参考第二篇推文里给的那个配置文件(因为我没花时间学nginx,不太看懂的)

sudo docker run -d --name rtmp -p 1935:1935 -p 8080:8080 -v ~/Documents/nginx-1.19.2/conf/nginx.conf:/etc/nginx/nginx.conf alqutami/rtmp-hls

以上需要安装在你的服务器上!!!!

完成以上步骤后,rtmp://你的服务器ip地址:1935/live/,就是我们要推流的地址了

另一个是把流推送到推流地址

在你设备端(比如电脑的前置摄像头、usb摄像头)所在的电脑,安装obs。(ffmpeg推流学习成本太高了)。如果是ip摄像头,好像是可以直接推流,只需要处理拉流的问题。

obs设置画面和声音非常方便,点点点就行了

唯一的问题是,要注意设置里,填写上面我们得到的推流地址(这步可能会卡在防火墙之类的问题上,要检查一下配置问题)。串流密钥,随便填写就行了,也可以不填。192是局域网,只有局域网内的设备可以拉流,如果想在公网拉就要127之前的ip地址。

然后点击开始推流,推流的步骤就好了。

 

拉流

拉流因为我的需求要放到服务器上跑一个实时深度学习项目,我还没有完全搞定

目前试了一下python的cv2。大家参考一下就好。

import cv2
import  time

def test():
    '''
   调用摄像头,捕捉图像
   '''

    url = 'rtmp://192.168.3.120:1935/live'
    cap = cv2.VideoCapture(url)
    
    #读取摄像头,0表示系统默认摄像头
#     cap = cv2.VideoCapture(0)
    while True:
        #读取图像
        ret,photo=cap.read()
        #将图像传送至窗口
        cv2.imshow('Please Take Your Photo!!',photo)
        
        #设置等待时间,若数字为0则图像定格
        key=cv2.waitKey(0.1)
        #按空格获取图像
        if key==ord(" "):
            #以当前时间存储
            filename = time.strftime('%Y%m%d-%H%M%S') + ".jpg"
            #保存位置
            cv2.imwrite(filename,photo)
        #按“q”退出程序
        if key==ord("q"):
            cap.release()
            break
            pass
        
        
test()

标签:nginx,cv2,传输,直播,rtmp,拉流,推流,摄像头
来源: https://blog.csdn.net/qq_43641818/article/details/121492550

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有