讀取視頻我試圖達到的效果上的視頻(方法3使用netcat的),如圖 https://www.youtube.com/watch?v=sYGdge3T30oOpenCV的Python中,從命名管道
的要點是用它來流從覆盆子PI視頻到Ubuntu PC和過程openCV和python。
我用命令
raspivid -vf -n -w 640 -h 480 -o - -t 0 -b 2000000 | nc 192.168.0.20 5777
的影音串流到我的電腦,然後在電腦上我創建命名管道「先進先出」和重定向輸出
nc -l -p 5777 -v > fifo
然後我試圖讀取管道並在python腳本中顯示結果
import cv2
import sys
video_capture = cv2.VideoCapture(r'fifo')
video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640);
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480);
while True:
# Capture frame-by-frame
ret, frame = video_capture.read()
if ret == False:
pass
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()
但是我剛結束了的誤差
[MP3 @ 0x18b2940]部首缺少該錯誤是由命令video_capture = cv2.VideoCapture(r'fifo')
當我重定向PC的netcat的輸出到一個文件,然後讀取它產生在蟒蛇視頻工作,但它加快了10倍左右。
我知道問題是與python腳本,因爲nc傳輸工作(對一個文件),但我無法找到任何線索。
如何獲得所提供視頻(方法3)中顯示的結果?
我想這是在Linux桌面上運行的部分執行createStream.py,但你似乎並沒有表現出什麼需要在Raspberry Pi上運行,或者如何運行兩臺機器設置的任一端? –
好吧,我們試圖通過@Richard提到的視頻(方法3)https://www.youtube.com/watch?v=sYGdge3T30o來獲得結果。每一樣東西都與視頻中解釋的一樣。我只是想幫助python腳本從視頻中未顯示的命名管道讀取數據。 –
我希望這會讓我使用ffmpeg的命令行參數來通過qsv和h264_qsv強制硬件解碼,而不是OpenCV的隱藏默認值。雖然在技術上這個答案確實如此,但我實際上看到了使用cv2.VideoCapture('filename.mp4')的速度下降。我得到約111fps而不是259fps。 (在同一個系統上ffmpeg解碼爲null會超過1100fps)。我認爲這可能是因爲所有的數據都在傳播。至少有良好的概念驗證。 – TheAtomicOption