如何在几秒钟内显示/流式传输网络摄像头?

时间:2017-07-04 18:38:04

标签: video streaming video-streaming delay

我想要一个网络摄像头进行录制,并在屏幕上显示“实时”流,并延迟几秒钟。

使用案例需要录制一个表演并几乎现场直播,只需几秒延迟即可快速查看。性能最多需要几秒钟,需要立即显示(查看)而无需任何手动点击。有很多尝试,手动点击会使这个过程更长。

可能的来源:

  • Android 6.0.1手机上的主摄像头(前面一个云端,如GB的景观)
  • Android 6.0平板电脑上的主摄像头或前置摄像头
  • 笔记本电脑上的网络摄像头(Linux Ubuntu 17.04或Windows 8.1) - 没有单独的GPU

可能的显示:

  • Android平板电脑,如上所述
  • 笔记本电脑,如上所述

其他信息:

  • 无需音频
  • 普通WiFi网络
  • IP网络摄像头已安装在手机和平​​板电脑上
  • 编程技巧(我更喜欢Python)
  • 可以设置nginx服务器
  • ......在网上也是
  • 互联网连接

要点:

  • 实际上显示了一个带有> = 2s延迟的可读流

尼斯到富人:

  • 不使用互联网
  • 可调节延迟,如果不是:在3-6s范围内
  • 质量好
  • 按需记录
  • super duper功能:记录回来的能力(点击最后x秒保存)

一般情况下,使用笔记本电脑的网络摄像头并在屏幕上显示自定义延迟的流程会非常棒。

4 个答案:

答案 0 :(得分:6)

查看Open Broadcast Software (OBS)如果您拥有此软件的付费版本,则可以使用Studio Mode预览流式广告。它可以安装在Windows,Mac和Linux上,并且是开源的。

你可以在github上分叉并根据需要更改代码(需要技能:))

希望这可以帮助你。

答案 1 :(得分:2)

Miguel Grinberg用Python编写了一个优秀的视频流教程,连续发送JPEG帧。在这里查看他的博客文章:

http://blog.miguelgrinberg.com/post/video-streaming-with-flask 1

可以快速查看这些JPEG中的每一个,然后进行广播。 [考虑所需的延迟]

就获取输入视频输入而言,您可以使用OPENCV连接网络摄像头。 OpenCV使用VideoCapture将原始图像作为字节返回。这些字节需要编码为JPEG并与Miguel的代码接口。

import cv2

class VideoCamera(object):
    def __init__(self):
    # Using OpenCV to capture from device
    self.video = cv2.VideoCapture(0)

    def __del__(self):
    self.video.release()

    def get_frame(self):
    success, image = self.video.read()
    # We are using Motion JPEG, but OpenCV defaults to capture raw images,
    # so we must encode it into JPEG in order to correctly display the
    # video stream.
    ret, jpeg = cv2.imencode('.jpg', image)
    return jpeg.tobytes()

这种方法可以帮助您满足所有必需的功能:

  • 无需上网
  • 可调延迟 - 轻松控制您希望在每个帧上执行的延迟和处理
  • 质量好
  • 按需录制 - 根据需要存储捕获的帧
  • 拥有记录功能,只需保存以前的24 * x帧(24fps流)

答案 2 :(得分:1)

我在我的一个项目中尝试过tokbox,这非常简单。

tokbox付费且支持python。 链接是tokbox

还有许多免费的api 像Apache Open Meeting .Python示例在github中可用。

有关其他api的更多信息和评估目的,您可以浏览此链接 Open source conferencing products comparison

其他详情可在维基

获取

http://opensourceecology.org/wiki/Videoconferencing

使用NGINX正好here是链接。

答案 3 :(得分:0)

也许这个工具可以提供帮助:Kinovea,如果您在“Live Capture”下查看features ,可以选择延迟直播。