尝试使用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
$
答案 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