使用 gstreamer 的简单编码和解码管道?

Simple encode and decode pipeline with gstreamer?

我正在尝试创建一个简单的 gstreamer1-0 管道,希望使用尽可能最基本的元素来编码和解码 h264 网络摄像头源。我已经(理论上)安装了所有标准的、好的、坏的和丑陋的 gstreamer 库。我使用 "Theoretically" 这个词是因为我没有 root 权限,我必须请求 IT download/install 我可能需要的每个库,这很痛苦。

我试过以下管道,但没有用:

gst-launch-1.0 v4l2src ! autovideoconvert ! x264enc bitrate=256 ! decodebin ! autovideosink 

我得到以下输出:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Missing element: H.264 decoder
ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0: Your GStreamer installation is missing a plug-in.
Additional debug info:
gstdecodebin2.c(3977): gst_decode_bin_expose (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0:
no suitable plugins found
Execution ended after 0:00:01.795803500
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

所以根据那个,我的插件缺少一个块来解码 h264 对吗?

现在我已经阅读了这篇文章forum,但我不知道如何安装解码器块。如果有人可以向我解释如何做到这一点以获得简单的管道 运行?解释得越详尽越好,因为我后来必须把那个解释转达给IT和法语,所以我坚持:这将是一个巨大的痛苦。

TY.

您可能缺少 h264 解码器插件。您可以使用

查看
gst-inspect-1.0 | grep 264

常用的解码器是avdec_h264

这将列出与 h264 相关的插件。如果您没有任何解码器,则需要安装 gst-libav 软件包。

在centos 7中,可以通过yum安装:

sudo yum install -y http://download1.rpmfusion.org/free/el/updates/7/x86_64/g/gstreamer1-libav-1.10.4-2.el7.x86_64.rpm

然后再检查一遍:

gst-inspect-1.0 | grep 264

现在你可以看到解码器了

gst-launch-1.0 videotestsrc num-buffers=10 ! x264enc ! avdec_h264 ! videoconvert ! autovideosink

请注意 videoconvert 才能显示视频。