Raspberry Pi 3 b+视频流到Python GUI

2ic8powd  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(105)

我有PC A & PC B. PC A是树莓派3 B+,流媒体视频,同时打开netcat监听端口8090使用此代码:

  • /opt/vc/bin/raspivid -t 0 -w 1024 -h 600 -hf -ih -fps 60 -o -|nc-k-l8090

PC B使用MPlayer连接到PC A端口8090并打开视频流,输出非常棒,延迟低,命令:

  • mplayer -fps 200 -demuxer h264es ffmpeg://tcp:192.168.1.3:8090

但问题是:

  • 我想将这些输出导入Python GUI(可能使用Tkinter lib,或者任何一种,如果你们能推荐我的话)。
  • 我试图在我的代码中执行MPlayer,ofc我很愚蠢,因为它会打开一个新的MPlayer窗口播放视频流,但不会附加到我的GUI:(

-> 1,是否有任何Python库或代码可以帮助我捕捉流视频并将其导入GUI?所以我可以在后台显示视频时在GUI上添加一些信息。
-> 2,有没有办法在我的GUI中使用Mplayer作为嵌入输出?然后我可以编辑我的GUI,因为我想和视频流在后台播放.

olhwl3o2

olhwl3o21#

一天后,我想出了解决办法。
对于任何人谁寻找解决方案,这将是你的文章:

  1. PC B(客户端,也就是我的DebianOS笔记本电脑):您创建这两个文件:
  • mkFIFO264.sh
#!/bin/bash
      if [ -p fifo264 ]
      then
        rm fifo264
      fi
      mkfifo fifo264
      nc -l -v -p <port> > fifo264

字符串

  • getStreamData.py
import numpy as np
      import cv2
      cap = cv2.VideoCapture('fifo264')
      while(cap.isOpened()):
          ret, frame = cap.read()
          gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
          cv2.imshow('< DroneName >',gray)
          if cv2.waitKey(1) & 0xFF == ord('q'):
              break
      cap.release()
      cv2.destroyAllWindows()

  1. PC A(Raspberry Pi 3 Stream Server):您使用以下代码创建一个.sh文件:
#!/bin/bash
     raspivid -t 0 -w <video_width> -h <video_height> -hf -ih -fps 60 -o - | nc <PC-B_IP> <port>

相关问题