zoukankan      html  css  js  c++  java
  • GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer installation is missing a plug-in.

    标题是在Linux下使用系统yum install 的opencv库来获取视频帧的时候抛出来的错误消息。opencv调用了Gstream的API来处理了视频。错误抛出的代码如下图:

    http://ubuntuforums.org/archive/index.php/t-1730395.html

    http://stackoverflow.com/questions/4929721/opencv-python-grab-frames-from-a-video-file

    把上面两个链接的回答都看了,还是没有解决,说是缺少GStream的一个插件,可以我又重新yun install 了gstream-plug-in这些插件,包管理器提示已经安装了最新版了。但是运行项目还是会报出这个错误,但是有的人安装了插件就解决了。

    阅读以上链接的时候,有个问题没有搞清楚就是:FFMPEG 和GSTREAM是不是功能上平行的关系?(类似于GTK和Qt的关系)。

    搜索了一下发现:http://1.guotie.sinaapp.com/?p=31

    上面的文章说了,两者的关系区别不是很大,差不多平行。文章的内容如下:

    gstreamer,vlc,ffmpeg都是开源处理流媒体的软件,这里的比较不涉及功能,仅仅比较源代码。

    大约看了一个星期,对这三个 软件都略有了解,简单的谈谈。

    0、开发语言

    都是使用c语言开发,ffmpeg最为简洁;gstreamer使用了gobject,晦涩;

    1、注释

    vlc的代码完全没有注释,官网也没有任何文档;

    gstreamer的官网上有开发者指引,看完后大概了解gstreamer的设计框架,如element,pad,filter等概念,感觉设计的相当不错;

    ffmpeg官网上文档不多,不过注释真是太详细了,超级赞;

    2、代码量

    vlc代码量算比较少的;

    gstreamer分为core,plugin,等等,代码量巨大;而且,gstreamer使用glib2,感觉很不好,可读性差;

    ffmpeg文件很多,但组织的很棒,一下子都能找到要领;

    代码量没有精确统计,仅仅是个人感觉;

    3、代码质量

    我个人非常欣赏ffmpeg,代码太棒了;

    整个框架结构分为两个主要部分,一个是codec,一个是format,在两个大的目录中,顾名思义,一个是处理编解码,一个是获取原始数据;

    format中,只需要看几个文件就可以了解整个系统的运作过程了:

    avformat.h,avio.h,avio.c等

    4、图形界面

    vlc有图形界面,在windows下很好用;

    gstreamer不是很清楚;

    ffmpeg没有图形界面,仅仅提供了三个命令行工具,这三个工具的选项狂多。三个命令分别是ffmpeg,ffplay,ffprobe

    ffmpeg是我非常推崇的代码。

    在使用测试的过程中,发现ffmpeg不能播放helix server的rtsp源,应该是ffmpeg解析rtp与helix不兼容造成的,有空的时候查找一下原因,fix一下。

    两者的区别还有一些细节的差别:

    http://my.oschina.net/tangcong/blog/92876

    对同样的audio format,Gstreamer和Ffmpeg demux出来的audio frame组织形式不一样,最近就碰到了这个问题。

    1 对Real Audio,Gstreamer输出单位为Packet(包含多个frame),而Ffmpeg输出单位frame。

    2 对OGG,Gstreamer输出vorbis的packet,包括前三个header packets;而Ffmpeg只输出audio packets,通过extradata的方式来传输header packets。

    3 对FLAC,Gstreamer先输出metadata block,再输出data block;而Ffmpeg只输出data block。

    #################################update###########################

    其实要解决标题以上的问题,只需要安装gstreamer,gstreamer-ffmpeg,ffmpeg还有gstreamer-plug-in这些包就行了。官方源没有,那么就用rpmfusion和EPEL源来安装上述红色标记的包。

    安装 EPEL源请运行以下命令(EPEL源安装的更多信息请参考这里https://fedoraproject.org/wiki/EPEL/FAQ):

    rpm -Uvh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm

    rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm




    安装rpmfusion源请参考以下给出的配置:
    http://rpmfusion.org/Configuration


     
  • 相关阅读:
    Java实现 LeetCode 56 合并区间
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
  • 原文地址:https://www.cnblogs.com/foohack/p/4153173.html
Copyright © 2011-2022 走看看