我正在尝试使用gstreamer 1.0将网络摄像头视频从树莓流到VLC播放器。现在,我对覆盆子有以下命令:
gst-launch-1.0 -vv -e v4l2src device=/dev/video0 \
! videoscale \
! "video/x-raw,width=352,height=288,framerate=10/1" \
! queue \
! x264enc \
! h264parse \
! rtph264pay config-interval=10 pt=96 \
! udpsink host=239.255.12.42 port=5004
以及以下sdp文件,以使用vlc播放流:
c=IN IP4 239.255.12.42
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
当我运行gst-Launst-1.0命令时,我可以通过wireshark看到它正在发送udp数据包,但当我尝试使用vlc和sdp文件播放流时,我什么也没有得到。vlc日志说:
es error: cannot peek
es error: cannot peek
live555 error: no data received in 10s, aborting
我不知道怎么了。我可能没有正确地构建管道,这就是为什么vlc不能将该流识别为正确的视频流。有什么想法吗?
提前感谢您的帮助。
VLC结合RTP协议理解ts流。该方法是在MPEGTSUM之后使用rtp payloader,它将对生成的ts缓冲区(数据包)进行有效负载。
所以代替这个:
src ! queue ! x264enc ! h264parse ! rtph264pay ! udpsink
您可以这样做:
src ! queue ! x264enc ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink
然后在vlc中只使用rtp://@:port,这样MPEGTSUM将封装关于它包含哪些流的信息
我应该注意到,您的方法没有错误,可能更有效(mpegtsmux将视频分割成188字节的数据包,但您的方法将分割成约1400字节的udp数据包),但您需要为vlc提供正确的SDP文件,以便对其进行流式处理。例如,像这样,但我对此没有太多经验。。
这是您当前使用的管道:
gst-launch-1.0 -vv -e v4l2src device=/dev/video0 ! "video/x-raw,width=352,height=288,framerate=25/1"\ ! queue ! x264enc speed-preset=1 ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=192.255.10.41 port=5004
您可以在使用zerolatency时获得更好的结果:
这样,它将丢弃所有其他质量参数,如速度预设等。。
这是关于tune属性的文档:
tune : Preset name for non-psychovisual tuning options
flags: readable, writable
Flags "GstX264EncTune" Default: 0x00000000, "(none)"
(0x00000001): stillimage - Still image
(0x00000002): fastdecode - Fast decode
(0x00000004): zerolatency - Zero latency
我正在尝试使用GStreamer将RTMP/RTSP流连接到v4l2loopback虚拟设备。 工程1-RTMP至AutoVideoSink,sudo gst-launch-1.0 rtspsrc位置=rtsp://192.168.xxx.xxx/live/av0 ! decodebin!自动视频接收器sudo gst-launch-1.0 rtmpsrc位置=rtmp://192.168.xxx
我正在尝试做网络摄像头(罗技c270)流在监视器上通过HDMI。我使用了raspbian并安装了motion(),并且完成了所需的所有操作。现在当我启动运动服务,raspberry说它启动成功,网络摄像头打开(活动灯打开)。我在哪里可以从网络摄像头看到流?
我正在开发一个web应用程序,它可以浏览和拍摄本地照片,我还想通过相机拍摄图像。我使用下面的代码,我可以捕捉设备摄像头。 现在,我想获得图像和onchangeevent,转换为base64,并希望在该页面中显示。 好心帮我伙计们!
我在弄清楚如何使用gstreamer创建一个简单的rtp流并在vlc上显示它时遇到了一些困难。 我已经安装了GStreamer 0.10.30和VLC 1.1.3。我唯一的要求是使用MPEG4或H.264编解码器。 现在,我可以通过以下简单的管道传输GStreamer videotestsrc: 它输出客户端接收流所需的“上限”: 我还可以使用以下管道显示流: 但当我尝试用vlc接收流时: 我一无
我知道这可能是一个相对通用的问题,但我正试图看看如何才能被指向正确的方向... 我试图用AWS Rekognition建立一个实时人脸识别应用程序。我对API很满意,并使用上传到S3的静态图像来执行面部识别。然而,我正试图找到一种将实时数据流到Rekognition的方法。在阅读了Amazon提供的各种文章和文档后,我发现了这个过程,但似乎无法克服一个障碍。 根据文档,我可以用Kinesis来完成
问题内容: 如何连续从摄像头捕获图像? 我想尝试对象识别(也许使用Java Media Framework)。 我当时正在考虑创建两个线程 一个线程: 节点1:捕获实时图像 节点2:将图片另存为“ 1.jpg” 节点3:等待5秒 节点4:重复… 其他线程: 节点1:等到捕获图像 节点2:使用“ 1.jpg”获取每个像素的颜色 节点3:将数据保存在数组中 节点4:重复… 问题答案: 此JavaCV实