当前位置: 首页 > 知识库问答 >
问题:

网页上的实时视频编码与流媒体

尉迟鑫鹏
2023-03-14

我有一个网络摄像头连接到Raspberry PI和一个web服务器,这是一个简单的python-Flask服务器。利用OpenCV捕捉网络摄像头图像,并将其格式化为JPEG格式。随后,这些JPEG被发送到服务器的一个UDP端口。到目前为止,我所做的类似于自制的MJPEG(motion-jpeg)流媒体。

在服务器端,我有一个简单的python脚本,它可以连续读取UDP端口并将JPEG图像放入HTML5画布中。这足够快来创建一个实时流的感知。

问题:

备选方案:

  • 我以前用过FFMPEG来转换视频格式,并流式传输预先录制的视频。我想,使用ffmpeg或AVCONV编码(比如说H.264)和流式网络摄像头直播视频是可能的。(编码)

这适用于覆盆子派吗?

    null
    null
    null

在视频流中传输层协议的最佳实践是什么?

共有1个答案

杜成和
2023-03-14

我会尽可能多地回答你列出的“问题”:

FPS很低,流的质量也不是很好。

由于您使用的是Flask,因此可以使用非常强大的URL_FOR关键字将流帧直接显示到img标记中。以下是实现此目的的方法:
在网页上,添加希望将提要流化的位置。
在后端,执行以下操作:

def gen(camera):
    frame = camera.read()
    yield (b'--frame\r\n'
    b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')

@app.route('/video_feed')
def video_feed():
    return Response(gen(), mimetype='multipart/x-mixed-replace; boundary=frame')

它不是一个主要的点,目前,但UDP不是一个安全的方式流视频。

大多数视频流设备不加密他们流的视频,因为这样做在计算上很昂贵。因此,尽管你可能通过HTTPS连接到设备上的嵌入式web服务器,并且你可能必须登录到设备来控制它,但所有的安全都仅限于“控制平面”视频本身几乎可以肯定是未经加密的。如果它符合开放标准,它可能是通过RTP/RTSP或HTTP实时流(HLS)发送的。

来源:关于安全流媒体视频的思考

 类似资料:
  • 多媒体 HTML5 前的多媒体需要借助第三方插件,例如 Flash,但是 HTML5 将网页中的多媒体带入了新的一章。 基本用法 // 音频 // 指定资源类型可以帮助浏览器更快的定位解码 <audio autobuffer autoloop loop controls> <source src="/media/audio.mp3" type="audio/mpeg"> <source s

  • 我想用不同的比特率和分辨率对MPEG-DASH的实时流进行编码,以便实时播放。 到目前为止,我发现的一切要么只使用源分辨率(灵活,nginx rtmp模块),要么似乎只用于VOD流媒体(DASHEncoder)。 是否可以将DASHEncoder与实时输入(rtmp流)一起使用,我将如何做到这一点?如果没有,是否可以将nginx-rtmp ffmpeg用于我想做的事情?

  • 应用程序创建的h264帧被发送到标准输出,在标准输出中,使用ffmpeg将该流重新复用为mp4,并将其传递给服务器,服务器根据请求将其传递给客户端。 这是个好办法吗?这甚至可能创建一个低延迟30fps视频流使用这种方法?

  • 我正在使用Twilio视频API,只想要音频通话。我通过了下面的约束,但是,网络摄像头仍然出现在被邀请的人身上。似乎约束只对创建对话的人有效。 是否可以强制对话下的所有客户端默认禁用视频? 另外,当只有音频被激活时,浏览器是否可能只要求麦克风来获得权限?它问麦克风和摄像头是否只是一个音频通话,这很奇怪。 来源:https://media.twiliocdn.com/sdk/js/conversat

  • 我正在尝试从google drive流式传输视频,但不起作用 这是我的密码 我在这里启动函数图像时得到这个

  • 实际上,我的目标是实现一个webview,并在webview中捕获流视频的url。我尝试了这么多代码,但没有结果。这是我迄今为止尝试过的代码`