Streaming Linux(ARM)上的GStreamer x264

Streaming Linux(ARM)上的GStreamer x264,streaming,gstreamer,x264,gstreamer-1.0,Streaming,Gstreamer,X264,Gstreamer 1.0,正在尝试使用x264编码进行流式处理 我正在做一些黑魔术,缝合两个已知有效的图像: gst-launch-1.0 -e \ v4l2src device=/dev/video0 ! \ video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_0 \ v4l2src device=/dev/video1 ! \ video/x-raw,framerate=90/1,width=640,heig

正在尝试使用x264编码进行流式处理

我正在做一些黑魔术,缝合两个已知有效的图像:

gst-launch-1.0 -e \
    v4l2src device=/dev/video0 ! \
        video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_0 \
    v4l2src device=/dev/video1 ! \
        video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_1 \
    videomixer name=m sink_1::xpos=640 ! \
    video/x-raw,framerate=90/1,width=1280,height=480 ! \
    xvimagesink
现在,我正试图借助互联网通过x264流获得同样的信息:

gst-launch-1.0 -e \
    v4l2src device=/dev/video0 ! \
        video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_0 \
    v4l2src device=/dev/video1 ! \
        video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_1 \
    videomixer name=m sink_1::xpos=640 ! \
    video/x-raw,framerate=90/1,width=1280,height=480 ! \
    x264enc tune=zerolatency byte-stream=true bitrate=3000 threads=2 ! \
    h264parse config-interval=1 ! \
    rtph264pay ! \
    udpsink host=127.0.0.1 port=5000 
而且似乎有效,因为没有出现错误。但我看不到接收图像的方法

我试过了

gst-launch-1.0 udpsrc port=5000 ! application/x-rtp ! rtph264depay ! h264parse ! avdec_h264 ! xvimagesink
这并没有提供任何有用的东西。还尝试将VLC与SDP文件一起使用:

c=IN IP4 127.0.0.1
m=video 5000 RTP/AVP 96
a=rtpmap:96 H264/3000
我一定是做错了什么,但不确定是什么

编辑:关于GStreamer版本的问题。可能这是需要的信息:

ubuntu@tegra-ubuntu:~$  gst-launch-1.0 --version
gst-launch-1.0 version 1.2.4
GStreamer 1.2.4
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
ubuntu@tegra-ubuntu:~$



$ dpkg -l | grep gstreamer
ii  gir1.2-gstreamer-1.0                                  1.2.4-0ubuntu1.1                                    armhf        Description: GObject introspection data for the GStreamer library
ii  gstreamer-tools                                       0.10.36-1.2ubuntu3                                  armhf        Tools for use with GStreamer
ii  gstreamer0.10-alsa:armhf                              0.10.36-1.1ubuntu2                                  armhf        GStreamer plugin for ALSA
ii  gstreamer0.10-fluendo-mp3:armhf                       0.10.23.debian-3                                    armhf        Fluendo mp3 decoder GStreamer 0.10 plugin
ii  gstreamer0.10-nice:armhf                              0.1.4-1                                             armhf        ICE library (GStreamer 0.10 plugin)
ii  gstreamer0.10-plugins-bad:armhf                       0.10.23-7.2ubuntu1.3                                armhf        GStreamer plugins from the "bad" set
ii  gstreamer0.10-plugins-bad-multiverse                  0.10.21-1ubuntu3                                    armhf        GStreamer plugins from the "bad" set (Multiverse Variant)
ii  gstreamer0.10-plugins-base:armhf                      0.10.36-1.1ubuntu2                                  armhf        GStreamer plugins from the "base" set
ii  gstreamer0.10-plugins-base-apps                       0.10.36-1.1ubuntu2                                  armhf        GStreamer helper programs from the "base" set
ii  gstreamer0.10-plugins-good:armhf                      0.10.31-3+nmu1ubuntu5.2                             armhf        GStreamer plugins from the "good" set
ii  gstreamer0.10-plugins-ugly:armhf                      0.10.19-2ubuntu5                                    armhf        GStreamer plugins from the "ugly" set
ii  gstreamer0.10-pulseaudio:armhf                        0.10.31-3+nmu1ubuntu5.2                             armhf        GStreamer plugin for PulseAudio
ii  gstreamer0.10-tools                                   0.10.36-1.2ubuntu3                                  armhf        Tools for use with GStreamer
ii  gstreamer0.10-x:armhf                                 0.10.36-1.1ubuntu2                                  armhf        GStreamer plugins for X11 and Pango
ii  gstreamer1.0-alsa:armhf                               1.2.4-1~ubuntu2                                     armhf        GStreamer plugin for ALSA
ii  gstreamer1.0-clutter                                  2.0.8-1build1                                       armhf        Clutter PLugin for GStreamer 1.0
ii  gstreamer1.0-fluendo-mp3:armhf                        0.10.23.debian-3                                    armhf        Fluendo mp3 decoder GStreamer 1.0 plugin
ii  gstreamer1.0-libav:armhf                              1.2.4-1~ubuntu1                                     armhf        libav plugin for GStreamer
ii  gstreamer1.0-nice:armhf                               0.1.4-1                                             armhf        ICE library (GStreamer plugin)
ii  gstreamer1.0-plugins-bad:armhf                        1.2.4-1~ubuntu1.1                                   armhf        GStreamer plugins from the "bad" set
ii  gstreamer1.0-plugins-bad-faad:armhf                   1.2.4-1~ubuntu1.1                                   armhf        GStreamer faad plugin from the "bad" set
ii  gstreamer1.0-plugins-bad-videoparsers:armhf           1.2.4-1~ubuntu1.1                                   armhf        GStreamer videoparsers plugin from the "bad" set
ii  gstreamer1.0-plugins-base:armhf                       1.2.4-1~ubuntu2                                     armhf        GStreamer plugins from the "base" set
ii  gstreamer1.0-plugins-base-apps                        1.2.4-1~ubuntu2                                     armhf        GStreamer helper programs from the "base" set
ii  gstreamer1.0-plugins-good:armhf                       1.2.4-1~ubuntu1.3                                   armhf        GStreamer plugins from the "good" set
ii  gstreamer1.0-plugins-ugly:armhf                       1.2.3-2build1                                       armhf        GStreamer plugins from the "ugly" set
ii  gstreamer1.0-pulseaudio:armhf                         1.2.4-1~ubuntu1.3                                   armhf        GStreamer plugin for PulseAudio
ii  gstreamer1.0-tools                                    1.2.4-0ubuntu1.1                                    armhf        Tools for use with GStreamer
ii  gstreamer1.0-x:armhf                                  1.2.4-1~ubuntu2                                     armhf        GStreamer plugins for X11 and Pango
ii  libgstreamer-plugins-bad0.10-0:armhf                  0.10.23-7.2ubuntu1.3                                armhf        GStreamer shared libraries from the "bad" set
ii  libgstreamer-plugins-bad1.0-0:armhf                   1.2.4-1~ubuntu1.1                                   armhf        GStreamer development files for libraries from the "bad" set
ii  libgstreamer-plugins-base0.10-0:armhf                 0.10.36-1.1ubuntu2                                  armhf        GStreamer libraries from the "base" set
ii  libgstreamer-plugins-base1.0-0:armhf                  1.2.4-1~ubuntu2                                     armhf        GStreamer libraries from the "base" set
ii  libgstreamer-plugins-good1.0-0:armhf                  1.2.4-1~ubuntu1.3                                   armhf        GStreamer development files for libraries from the "good" set
ii  libgstreamer0.10-0:armhf                              0.10.36-1.2ubuntu3                                  armhf        Core GStreamer libraries and elements
ii  libgstreamer1.0-0:armhf                               1.2.4-0ubuntu1.1                                    armhf        Core GStreamer libraries and elements
$ 

我建议你提出不同的观点来解决这个问题:

  • 为了确定它是在流媒体上还是管道的编码部分出现问题,您是否可以尝试启动具有较低比特率和本地预览的管道:

    gst-launch-1.0 -e \
        v4l2src device=/dev/video0 ! videorate ! \
            video/x-raw,framerate=25/1,width=640,height=480 ! m.sink_0 \
        v4l2src device=/dev/video1 ! videorate ! \
            video/x-raw,framerate=25/1,width=640,height=480 ! m.sink_1 \
        videomixer name=m sink_1::xpos=640 ! \
        video/x-raw,framerate=25/1,width=1280,height=480 ! \
        x264enc tune=zerolatency byte-stream=true bitrate=3000 threads=0 ! \
        avdec_h264 ! xvimagesink sync=false
    
  • 此外,您是否可以尝试在系统的环回接口上启动Wireshark或tcpdump,以监控端口5000上的流量

  • 带硬件编码器的交换机:

    gst-launch-1.0 -e \
        v4l2src device=/dev/video0 ! \
            video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_0 \
        v4l2src device=/dev/video1 ! videorate ! \
            video/x-raw,framerate=90/1,width=640,height=480 ! m.sink_1 \
        videomixer name=m sink_1::xpos=640 ! \
        video/x-raw,framerate=90/1,width=1280,height=480 ! \
        omxh264enc ! \
        avdec_h264 ! xvimagesink sync=false
    

您确定您的目标以90 fps的速度处理x264软件编码吗?您的GStreamer版本是什么?要获得GStreamer版本:
gst-launch-1.0--version
我需要相当高的速度,但现在我可以降低速度以减少限制。我尽可能地添加了版本信息。好的,尝试降低管道所需的负载。使用framerate=25/1,让x264enc决定线程数(线程数=0),您可以向我们展示:
gst-inspect-1.0 | grep omx
的输出吗?我觉得你的目标功能是一些可以通过omx访问的硬件编码器。我使用了tcpdump和see流量。我没有更多的流媒体经验来判断这是否是良好的流量。错误:来自元素/GstPipeline:pipeline0/GstV4l2Src:v4l2src1:内部数据流错误。其他调试信息:gstbasesrc.c(2865):gst_base_src_loop():/GstPipeline:pipeline0/GstV4l2Src:v4l2src1:流任务暂停,原因未协商(-4)关闭时启用EOS--错误后等待EOS