Linux上的GStreamer x264(ARM)

时间:2017-09-08 08:19:29

标签: 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,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
$ 

1 个答案:

答案 0 :(得分:1)

我提出了解决问题的不同观点:

  • 为了确定是否在流式传输或管道问题的编码部分发生,您是否可以尝试启动具有较低比特率和本地预览的管道:

    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