iT邦幫忙

0

[影像串流] 是否應該使用 ffmpeg/opencv/gstreamer

  • 分享至 

  • xImage

目前因為專案需要,會將透過 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,目前還沒找到這種套件🥲

看更多先前的討論...收起先前的討論...
frogsoul iT邦研究生 4 級 ‧ 2024-12-01 14:38:07 檢舉
節省頻寬,應該是要在rtsp的階段,encode成H.264的時候就要降解析度或bps?
froce iT邦大師 1 級 ‧ 2024-12-01 14:58:25 檢舉
golang 應該是沒有原生的轉碼軟體,所以就是找ffmpeg binding去做轉碼。
(其實基本上都是用ffmpeg啦)
另外怎麼做可以參考下面這篇:
https://docs.cvedia.com/tutorials/rtsp_to_hls.html
ffmpeg就能做到你要的效果了,python的web server只是用來serve HTTP file和JS。
我以前有用NGINX rtsp server弄過一個玩具專案,實際上python的部分就只是處理網址而已。
https://github.com/twtrubiks/nginx-rtmp-tutorial

然後你用的這個專案,遇到問題,基本上什麼都要自己處理,他撥放的部分是用websocket去接流,然後自己弄buffer,這個如果要弄隨選視訊應該是不能跳轉。
https://github.com/deepch/RTSPtoWSMP4f/blob/master/web/static/js/app.js
function opened()

最後,這種的技術上不會是大問題,頻寬才是。用YT去直播不香嗎?
wrxue iT邦好手 1 級 ‧ 2024-12-01 16:06:33 檢舉
回覆 frogsoul:相機給後端的畫質會是 1080p,由後端直接轉傳 1080p 或根據情況 (例如畫面影像視窗較小時) 提供 720p 的影像給前端。因此原文說是為了節省頻寬只是大概的原因,1080p 本身還是有可能會被用到。
有另一種想法是就讓相機直接提供 1080p 和 720p 兩種影像,但還是希望能由軟體直接透過降畫質的技術做到這件事。
wrxue iT邦好手 1 級 ‧ 2024-12-01 16:25:51 檢舉
回覆 froce:確實看到的大部分都是用 ffmpeg 等工具處理影像後再由後端 serve 這些東西。
deepch/vdk 看起來應該是實作了各種串流協議,不包含如何處理影像,所以我的想法是透過這個專案取得影像資訊後再呼叫其他處理影像資訊的庫得到想要的結果。
目前不需要跳轉的功能,所以看起來這個專案還夠使用,不過要擔心的是使用這個專案的人好像沒很多,遇到問題可能會有難以處理的窘境。
froce iT邦大師 1 級 ‧ 2024-12-01 16:39:17 檢舉
ffmpeg 就能做到處理各種串流協議加上處理影像了...反而deepch/vdk沒辦法做到其他事情,這個看起來就只是接流而已。

你都得用到ffmpeg了,那還有必要用deepch/vdk嗎?
YC iT邦好手 1 級 ‧ 2024-12-02 12:15:07 檢舉
各位大大,又重新編解碼 h264 不用付錢嗎?
我猜 camera 的 h264 是 相機廠商付的錢,end user 是顯卡公司或微軟付的錢,
但是中間又使用 編解碼 一次,這樣需要付錢嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答