Plugins Gstreamer1.0缺少插件:Python代码中的decodebin2

Plugins Gstreamer1.0缺少插件:Python代码中的decodebin2,plugins,gstreamer,python-gstreamer,Plugins,Gstreamer,Python Gstreamer,以下将三个文件添加到GES时间线的Python代码引发了其他人也有过的以下错误: (GError('您的GStreamer安装缺少插件',),'gstdecodebin2.c(3928):gst_decode_bin_expose():/GESPipeline:gespipeline0/GESTimeline:gestimeline0/GESVideoTrack:gesvideotrack0/GnlComposition:gnlcomposition1/gnlsource0/GstBin:vid

以下将三个文件添加到GES时间线的Python代码引发了其他人也有过的以下错误:

(GError('您的GStreamer安装缺少插件',),'gstdecodebin2.c(3928):gst_decode_bin_expose():/GESPipeline:gespipeline0/GESTimeline:gestimeline0/GESVideoTrack:gesvideotrack0/GnlComposition:gnlcomposition1/gnlsource0/GstBin:videosrcbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin4:\n未找到合适的插件')

我已将GST_PLUGIN_PATH_1_0环境变量设置为“/usr/local/lib:/usr/local/lib/gstreamer-1.0:/usr/lib/x86_64-linux-gnu:/usr/lib/i386 linux gnu/gstreamer-1.0”

我编译并安装了gstreamer1.0-1.2.4,以及该版本的基本包、好包、坏包和难看包。GES与版本1.2.1一起安装,因为这是最接近我找到的gstreamer版本。我还安装了libav-1.2.4

根据plugin base的make安装日志,decodebin2应该在base中,并链接到libgstplayback,它是我的GST\u plugin\u路径\u 1\u 0的一部分:

   /usr/local/lib/gstreamer-1.0 libgstplayback_la-gstdecodebin2.lo
我有gstreamer0.10,当我执行“gst-inspect-1.0-b”时,decodebin2作为黑名单版本存在,因为它位于gstreamer0.10库路径中,而不是1.0库路径上

我试图清除~/.cache/gstreamer文件,并再次运行gst-inspect-1.0以重新生成插件注册表,但Python代码中仍不断出现错误。这个示例代码可能是错误的,因为这是我第一次尝试使用Gstreamer编辑服务编写时间线。我在Ubuntu Trusty或14.04上

该文件是一个mp4文件,这就是我为所需库安装gst libav的原因。 文件中MP4Box-info的输出为:

  • 电影信息* 时间刻度90000-持续时间00:00:08.405 碎片文件第2首曲目 适合渐进下载的文件(mdat之前的moov) 文件品牌mp42-版本0 创建时间:格林尼治时间周一2015年8月17日17:02:26

    文件没有MPEG4 IOD/OD

    曲目#1信息-曲目ID 1-时间刻度50000-持续时间00:00:08.360 媒体信息:语言“英语”-类型“视频:avc1”-209样本 可视轨道布局:x=0 y=0宽度=1920高度=1080 MPEG-4配置:可视流-对象类型指示0x21 AVC/H264视频-视觉尺寸1920 x 1080 AVC信息:1个SPS-1个PPS-主配置文件@4.2级 NAL单位长度位:32 像素纵横比1:1-指示轨迹大小1920 x 1080 自同步

    轨道#2信息-轨道ID 2-时间刻度48000-持续时间00:00:08.405 媒体信息:语言“英语”-类型“soun:mp4a”-394样本 MPEG-4配置:音频流-对象类型指示0x40 MPEG-4音频MPEG-4音频AAC LC-2通道-在流1上同步采样48000

log@for当我运行'GST_DEBUG=3,gnl*:5 python./timeline1.py>timeline1.log 2>&1'

在GStreamer 1.x中没有您在这里使用的“decodebin2”。它现在被称为“decodebin”,相当于0.10中的“decodebin2”


然而,这里的问题并不是没有找到decodebin。您的问题是缺少播放此特定媒体文件的插件。什么样的媒体文件?塞巴斯蒂安,很高兴听到你的声音,因为我知道你的名字是GrStuver项目的主要贡献者,我希望Gstreamer将成为我的视频工作的基础。我的问题中添加了来自MP4Box的MP4详细信息。为什么我的代码要求使用基于Gstreamer0.10的元素?尝试将容器从“video/quicktime”更改为“video/mpeg”(也将“version”设置为4)。但是,“timeline.pipeline.set_render_设置('file:///home/ian/output.mp4“,timeline.container_profile)”返回false,不播放任何内容。它不要求0.10个元素。不确定您在哪里看到它请求decodebin2:)问题不是输出格式,而是读取输入文件并对其进行解码。您使用什么类型的输入文件?您可能还错过了输出的某些内容,但它甚至还没有到那个时候。也许我读到的错误消息太过字面:“…gstdecodebin2.c(3928)?我以为GES会为我和gst-launch-1.0 playbin uri构建管道=file:///path/to/my.mp4“在命令行上运行良好,我原以为Python代码也可以。如果gst-launch-1.0与文件上的playbin一起工作,GES也应该可以。如果没有完整的调试日志,就无法了解更多信息。但你读到的错误太过直白。gstdecodebin2.c(3928)是产生此错误的源文件和行,此错误表示缺少此处所需的插件。从调试日志中,应该可以看到缺少的内容。
   /usr/local/lib/gstreamer-1.0 libgstplayback_la-gstdecodebin2.lo