并非所有元素都可以创建(x264enc或TIVidEnc1?)

时间:2014-01-30 10:55:42

标签: video-streaming gstreamer rtp

我正在尝试创建x264enc

int main (int argc, char *argv[]) {
GstElement *pipeline, *src, *enc, *rtp, *sink;
...
...

src = gst_element_factory_make ("videotestsrc", "src");
enc = gst_element_factory_make ("x264enc", "enc");
rtp = gst_element_factory_make ("rtph264pay", "rtp");
sink = gst_element_factory_make ("udpsink", "sink");

pipeline = gst_pipeline_new ("test-pipeline");

if (!pipeline || !src || !enc || !rtp || !sink  ) {
    g_printerr ("Not all elements could be created.\n");
    return -1;
  }
} 

如果我删除该行:

enc = gst_element_factory_make ("x264enc", "enc");

程序将运行,如果我运行命令:

gst-inspect x264enc

我获得有关编码器的信息,因此它存在......

我也尝试从x264enc更改为TIVidEnc1但没有成功。

任何想法......?

谢谢!

1 个答案:

答案 0 :(得分:2)

您很可能没有在您的系统上安装x264enc编码器。此编码器不包含在gstreamer的基本软件包中,您需要手动下载并将其构建到您的系统上。 下载后将其构建到gstreamer的丑陋lib上。 我不确定,但是在Gstreamer更新的丑陋库中,它可能也包含在内。所以更新你的gstreamer也可以。