【问题标题】:What is the right way of decoding of MPEG-4 video stream sent by multicast?对多播发送的 MPEG-4 视频流进行解码的正确方法是什么?
【发布时间】:2011-06-23 08:41:51
【问题描述】:
我正在尝试查看来自 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。
结果是一样的。
我必须做些什么来解决这个问题?
【问题讨论】:
标签:
multicast
gstreamer
mpeg-4
【解决方案1】:
似乎我找到了一种方法,现在我正在测试它的稳定性。我是从 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”。