目前因为专案需要,会将透过 rtsp 接收相机的影像到前端显示,流程大致如下
camera -> rtsp -> rtp(h264) -> fmp4 (h264) -> ws -> media source
参考的 repo 是这份 https://github.com/deepch/RTSPtoWSMP4f ,因此直接将影像转成 fmp4 格式传给前端显示目前可以正常运作。
但我还想要降低相机画质节省频宽 (e.g. 1080p -> 720p),会是在后端 (golang) 执行这个工作,预想中应该是在上述流程加上几个步骤,变成下面的样子
camera -> rtsp -> rtp(h264) -> decoding -> resize -> encoding -> fmp4 (h264) -> ws -> media source
目前理解 ffmpeg/gstreamer 可以用来编解码,opencv 可以用来提取画面中的资讯且 opencv 有些编解码的功能其底层使用的其实也是 ffmpeg。
这三种工具很强大,不过共通点是需要额外安装,多数 golang 的套件也只是对这些工具做封装而已,还是需要安装对应的工具才能使用。
想问问大家在影像串流的专案经验中,是否多为直接使用这三种工具协助处理影像编解码、降低画质等工作?若是的话会是直接用 cli 呼叫的形式取 stdout 还是呼叫包好的套件呢?
或者是使用完全由 golang 实作编解码、降画质等动作的套件而不是使用依赖这些需要额外安装工具的套件?若是的话恳请分享 repo,目前还没找到这种套件🥲
1 个回答
0
zivzhong
iT邦研究生 4 级 ‧ 2024-12-17 15:31:56
推使用 ffmpeg