【发布时间】:2015-03-14 04:57:47
【问题描述】:
我正在尝试将视频从 Raspberry Pi(在 Raspbian 上)流式传输到 Windows 7 PC,如下视频所示:https://www.youtube.com/watch?v=lNvYanDLHZA
我有一个连接到 Raspberry Pi 的 Logitech C270,并设法通过 TCP 使用以下方式传输网络摄像头视频:
gst-launch v4l2src device=/dev/video0 ! \
'video/x-raw-yuv,width=640,height=480' ! \
x264enc pass=qual quantizer=20 tune=zerolatency ! \
rtph264pay ! tcpsink host=$pi_ip port=5000
来自我的 Pi。使用 VLC 作品接收此信息,但延迟 3 秒。 我想通过 UDP 执行此操作以获得更短的延迟(如果我错了,请纠正我)。但不能为我的生活弄明白。我试过以下:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
'video/x-raw-yuv,width=640,height=480' ! \
x264enc pass=qual quantizer=20 tune=zerolatency ! \
rtph264pay ! udpsink host=$pc_ip port=1234
和
gst-launch-1.0 udpsrc port=1234 ! \
"application/x-rtp, payload=127" ! \
rtph264depay ! ffdec_h264 ! fpsdisplaysink sync=false text-overlay=false
分别用于 Pi 和 PC 端(取自 Webcam streaming using gstreamer over UDP) 但没有运气。 (试图将 video/x-raw-yuv 更改为适合 1.0 版本但仍然没有运气)
任何提示将不胜感激!
编辑
使用 raspi 相机(不是网络摄像头),以下工作:
Windows 批处理脚本:
@echo off
cd C:\gstreamer\1.0\x86_64\bin
gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 !
rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false
text-overlay=false
树莓派 Bash 脚本:
#!/bin/bash
clear
raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-
launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 !
udpsink host=***YOUR_PC_IP*** port=5000
但我不知道如何以相同的方式使用网络摄像头而不是树莓派相机(即 v4l2src 而不是 raspivid)
编辑 2
以下工作,但非常慢并且有很大的延迟:
RPi
gst-launch-1.0 -vv -e v4l2src device=/dev/video0 \
! videoscale \
! "video/x-raw,width=400,height=200,framerate=10/1" \
! x264enc pass=qual quantizer=20 tune=zerolatency \
! h264parse \
! rtph264pay config-interval=5 pt=96 \
! udpsink host=$myip port=$myport
电脑:
gst-launch-1.0 -e -v udpsrc port=5001 ! ^
application/x-rtp, payload=96 ! ^
rtpjitterbuffer ! ^
rtph264depay ! ^
avdec_h264 ! ^
autovideosink sync=false text-overlay=false
我现在怀疑(感谢@Mustafa Chelik 的暗示)巨大的延迟是由于树莓派必须对网络摄像头视频进行编码,而树莓派视频已经编码,不确定这是否会导致有道理吗?
【问题讨论】:
-
我认为从 TCP 更改为 UDP 不会减少延迟(尽管我对此不是百分百肯定)。你为什么这么认为?顺便问一下,RaspberryPi 可以对高清视频进行编码并流式传输吗?! RaspberryPi 的速度这么快吗?视频的帧率是多少? 25 岁?
-
我认为 UDP 对于实时流传输更快,因为它是一个无连接协议,而 TCP 是面向连接的,因此有一些重传延迟(三次握手等等)。不确定它是否能够流式传输高清视频,但它应该能够流式传输高质量的视频。不确定帧率,仍在努力解决。
标签: udp raspberry-pi gstreamer