go2视频流 GStreamer视频流接收问题
https://support.unitree.com/home/zh/developer/Multimedia_Services

步骤进行系统性的排查:
1. 首先检查网络配置
# 检查网卡状态和IP地址
ip addr show enx00e0986113a6
# 检查多播路由
route -n | grep 230.1.1.1
# 或者使用ip命令
ip mroute show
2. 测试网络连通性
# 使用tcpdump检查是否收到多播数据包
sudo tcpdump -i enx00e0986113a6 -n host 230.1.1.1
# 或者使用更具体的过滤
sudo tcpdump -i enx00e0986113a6 -n 'dst 230.1.1.1 and port 1720'
3. 使用GStreamer命令行工具测试
# 简化测试管道
gst-launch-1.0 udpsrc address=230.1.1.1 port=1720 multicast-iface=enx00e0986113a6 ! application/x-rtp, media=video, encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! xvimagesink
# 或者使用更基础的测试
gst-launch-1.0 udpsrc address=230.1.1.1 port=1720 multicast-iface=enx00e0986113a6 ! application/x-rtp ! fakesink silent=false -v


4. 检查GStreamer安装和插件
# 检查GStreamer安装
gst-inspect-1.0 --version
# 检查必要的插件是否安装
gst-inspect-1.0 udpsrc
gst-inspect-1.0 rtph264depay
gst-inspect-1.0 avdec_h264
gst-inspect-1.0 videoconvert

5. 修改Python代码添加调试信息
import cv2
import sys
# 添加更详细的错误信息
def test_gstreamer():
gstreamer_str = "udpsrc address=230.1.1.1 port=1720 multicast-iface=enx00e0986113a6 ! application/x-rtp, media=video, encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! video/x-raw,width=1280,height=720,format=BGR ! appsink drop=1"
print("尝试打开GStreamer管道...")
cap = cv2.VideoCapture(gstreamer_str, cv2.CAP_GSTREAMER)
if not cap.isOpened():
print("无法打开视频流")
print("OpenCV版本:", cv2.__version__)
return False
print("成功打开视频流")
try:
while True:
ret, frame = cap.read()
if not ret:
print("读取帧失败")
break
print(f"收到帧: {frame.shape}")
cv2.imshow("Input via Gstreamer", frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
except Exception as e:
print(f"错误: {e}")
finally:
cap.release()
cv2.destroyAllWindows()
return True
if __name__ == "__main__":
test_gstreamer()
6. 尝试不同的管道配置
# 简化管道配置
gstreamer_str_simple = "udpsrc address=230.1.1.1 port=1720 ! application/x-rtp, payload=96 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! appsink"
# 或者尝试不使用multicast-iface
gstreamer_str_no_iface = "udpsrc address=230.1.1.1 port=1720 ! application/x-rtp, media=video ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! appsink"
7. 系统级检查
# 检查防火墙设置
sudo iptables -L
# 检查是否有其他进程占用端口
sudo netstat -tulpn | grep 1720
# 检查系统日志
dmesg | tail
journalctl -f
排查步骤建议:
- 首先运行步骤2的tcpdump,确认是否收到数据包
- 然后运行步骤3的gst-launch命令,测试GStreamer本身
- 如果GStreamer命令行工作但Python不工作,检查OpenCV的GStreamer支持
- 如果都不工作,检查网络配置和多播路由

浙公网安备 33010602011771号