0

对于我的项目,我正在尝试使用 gumstix overo、gstreamer 和 TI 插件来利用 DSP,以便通过 RTP 流式传输视频。我找到了这两个教程,甚至能够成功地遵循它们:

http://jumpnowtek.com/index.php?option=com_content&view=article&id=81:gumstix-dsp-gstreamer&catid=35:gumstix&Itemid=67

^^在这个版本中,我可以使用 gstreamer 和 GstTIPlugIn 元素编译嵌入式 linux 操作系统。这样做之后,我能够成功地将 videotestsource 流式传输到远程 PC。

但是,该教程适用于 caspa 视频摄像头,我使用的是本教程中使用的 Logitech Pro C920:

http://www.oz9aec.net/index.php/gstreamer/473-using-the-logitech-c920-webcam-with-gstreamer

^^在这个我们使用H264模式的C920相机。由于 V4l2 驱动程序不支持这一点,我们使用 ac 脚本逐帧从相机捕获并将其流式传输到标准输出。从这里我们告诉 Gstreamer 从文件源中捕获,在这种情况下是 (/dev/fd/0) 中的标准。再次,我能够成功完成此操作并从 C920 相机进行流式传输,但无需使用 TIplugin 来使用 DSP。

现在解决问题:

./capture -c 10000 -o | gst-launch -v -e filesrc location=/dev/fd/0 !h264解析!rtph264pay!udpsink 主机=192.168.1.100 端口=4000

^^此命令将运行捕获程序,gstreamer 将使用 h264parse 管道抓取并流式传输视频进行编码(我相信?)

当我用第一个教程中的 TIplugin 替换 h264parse 时,如下所示:

./capture -c 10000 -o | gst-launch -v -e filesrc location=/proc/self/fd/0 !TIVidenc1 codecName=h264enc engineName=codecServer!rtph264pay!udpsink 主机=192.168.1.100 端口=4000

我收到此错误:

将管道设置为 PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstTIVidenc1:tividenc10: failed to create video encoder: h264enc

附加调试信息:gsttividenc1.c(1584):gst_tividenc1_codec_start ():/GstPipeline:pipeline0/GstTIVidenc1:tividenc10 错误:管道不想预卷。将管道设置为 NULL ...

我还尝试保留两个元素,然后错误说它无法将 h264parse0 链接到 tividenc10

有没有人对 GstTIPlugin 有任何经验并且知道我做错了什么?谢谢

4

1 回答 1

1

你到底想解决什么问题?您是否尝试使用 TI 的编码元素对 H.264 进行编码?因为如果我没看错的话,'./capture' 实用程序已经接收到 H.264 格式的帧——无需编码。

假设我们有这个黄金例子(这对你有用,对吧?):

./capture -c 10000 -o | gst-launch -v -e filesrc location=/dev/fd/0 ! 
h264parse ! rtph264pay ! udpsink host=192.168.1.100 port=4000

'h264parse' 将 H.264 流解析为 H.264 NAL 单元,以利于 RTP 接收器。如果这有效,那么 h264parse 元素很高兴,因为它正在从捕获程序中获取 H.264 数据。

如果您尝试用 TI H.264 编码器元素替换 h264parse,那会令人困惑。同样,我不确切知道您要解决什么问题,所以我可能没有全貌。

如果您还不熟悉它,请了解“gst-inspect”命令。例如,'gst-inspect h264parse'。这将使您了解元素可以使用或产生的数据类型。

于 2013-03-24T03:24:15.983 回答