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