亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 OpenCV GStreamer 讀取 HLS 流時 CPU 使用率高

使用 OpenCV GStreamer 讀取 HLS 流時 CPU 使用率高

aluckdog 2021-12-16 16:06:24
我有以下代碼創建 gstreamer 管道來處理 HLS 流。cap = cv2.VideoCapture(    f"souphttpsrc is_live=true location={hls_stream_link} ! hlsdemux !     queue ! decodebin ! videorate ! video/x-raw,framerate=1/1 !     videoconvert ! appsink max-buffers=1 drop=true sync=false",cv2.CAP_GSTREAMER)我現在像這樣閱讀流:while True:    success, frame = cap.read()    time.sleep(1.0)請注意,我以 1 FPS 讀取流并具有max-buffers=1 drop=true sync=false. 通過這樣做,我總是從緩沖區必須提供的流中獲取最新的幀。問題是 CPU 使用率非常高,在我的 i7 機器上有時會飆升至 120%。取消睡眠會使情況變得更糟。關于為什么處理 HLS 流如此 CPU 密集型的任何解決方案或想法都會很棒。此外,關于如何減少使用的想法也會很棒。
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

您正在解碼完整的流。在軟件中完成時,這可能會非常昂貴。我在這里看到的一個潛在優化步驟是GstPadProbe在解碼器之前添加一個,并將一些解析到位流中并刪除所有不是 IDR 的樣本。然后您將只向解碼器發送 IDR 幀。什么會減少解碼器的負載,但是您只會在每個 IDR 幀間隔后得到一個新幀,通常每 2 秒一次(但每個幀之間可能會有所不同)。


查看完整回答
反對 回復 2021-12-16
  • 1 回答
  • 0 關注
  • 470 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號