0

我正在尝试查看来自 IP 摄像机的 MPEG-4 视频流,该视频流是使用 gstreamer-java 由 UDP 多播发送的。摄像机发送的每一帧都被分成几个 UDP 数据包。从 UDP 数据包组装完整帧后,我得到 I 帧和 P 帧序列,表示为字节数组。我将这些帧中的每一个推入“AppSrc”,该“AppSrc”连接到“capsfilter”,该“capsfilter”连接到“decodebin”。问题是:gstffmpegdec.c:2259:gst_ffmpegdec_frame:ffdec_mpeg4: 解码错误(len: -1, have_data: 0)。我还尝试了以下链:apprc => capsfilter => mpeg4videoparse => decodebin => videosink。结果是一样的。我必须做些什么来解决这个问题?

4

1 回答 1

0

似乎我找到了一种方法,现在我正在测试它的稳定性。我从 git (git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-good) 编译了 gstreamer 核心、“基础”、“好”和“坏”包。然后我应用了“xviddec”插件,它现在能够处理带有大写“video/mpeg,mpegversion=4”的缓冲区。

所以管道描述是:“mpeg4videoparse name=parser!xviddec!ffmpegcolorspace!capsfilter name=outfilter”,它连接到“gstreamer-java”包装器的AppSrc对象和VideoComponent对象。

为了指定我编译的 gstreamer 二进制文件的路径,我传递了以下 JVM 参数:“-Djna.library.path="path_to_my_home/bin/gstreamer/lib”。

请注意,“xviddec”的编译需要安装包“libxvidcore-dev”。

于 2011-07-07T14:16:20.003 回答