标题是在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
 

GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer installation is missing a plug-in.的更多相关文章

  1. stagefright框架(一)Video Playback的流程

    在Android上,預設的多媒體框架(multimedia framework)是OpenCORE. OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定:但是其缺點 ...

  2. Audio / Video Playback

    For Developers‎ > ‎Design Documents‎ > ‎ Audio / Video Playback Interested in helping out?  Ch ...

  3. Chromium Graphics: Video Playback and Compositor

    Video Playback and Compositor Authors: jamesr@chromium.org, danakj@chromium.org The Chromium composi ...

  4. GStreamer: your gstreamer installation is missing a required plugin in funct

    # yum install gstreamer-plugins-* //问题依旧 别人回答: 编解码不对应? 我印象中GStreamer解码器分什么good,bad 取决你要读什么媒体,需要装些插件的 ...

  5. Using HTML5 audio and video

    From:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video Using HTML5 ...

  6. GStreamer基础教程12 - 常用命令工具

    摘要 GStreamer提供了不同的命令行工具用于快速的查看信息以及验证Pipeline的是否能够正确运行,在平时的开发过程中,我们也优先使用GStreamer的命令行工具验证,再将Pipeline集 ...

  7. 【GStreamer开发】GStreamer播放教程01——playbin2的使用

    目标 我们前面已经使用过了playbin2这个element,它可以让我们做的很少而实现很多.本教程会展示当这个element的默认设置在一些特殊情形下不符合我们的需求是可以做的一些深度定制,我们会看 ...

  8. 【Gstreamer开发】TI嵌入式处理器GStreamer pipeline

    Example GStreamer Pipelines From Texas Instruments Embedded Processors Wiki Jump to: navigation, sea ...

  9. 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍

    第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...

随机推荐

  1. C++中构造函数初始化成员列表总结

    1.只能在构造函数初始化列表初始化的成员变量的类型? a.const成员变量 b.引用类型的成员变量 c.static不能在初始化列表中进行初始化 d.类成员变量中有自定义类型的变量最好在初始化列表中 ...

  2. testng 提供参数

    获取页面元素属性,并把属性作为参数传递个测试方法,两桶不同的写法 1. @DataProvider public Iterator<Object[]> dp() { mySleep(500 ...

  3. pyqt之倒计时例子

    from PyQt4.Qt import *from PyQt4.QtCore import *from PyQt4.QtGui import *import sysdef main():    a= ...

  4. CentOS 6.3中安装OpenCV2.3.1

    下面为自己测试可用的OpenCV在Linux下的安装步骤 .检查并安装相关程序,确保gtk安装成功,否则无法显示图片 yum install gcc-c++ yuminstall gtk-devel. ...

  5. windows下批量杀死进程

    有时候因为病毒或其它原因,启动了一系列的进程,而且有时杀了这个,又多了那个.使用命令taskkill可将这些进程一下子所有杀光: C:\Users\NR>taskkill /F /im fron ...

  6. JMeter 参数化、检查点、集合点

      参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密 ...

  7. 解决如何让AsyncTask终止操作

    受到这个的启发终于结局了如何在AsyncTask运行中终止其操作. 单纯的onCancelled(true)是不行的 下面把代码贴出来~实现了登陆功能. AsyncTask简介,它使创建需要与用户界面 ...

  8. Enabling Active Directory Authentication for VMWare Server running on Linux《转载》

    Enabling Active Directory Authentication for VMWare Server running on Linux Version 0.2 - Adam Breid ...

  9. CodeSmith使用总结--调用自定义方法

    上一篇读取了一个表的内容,但是到了真正应用的时候还是不够用的,我们很容易可以对比出来,SQL里边的数据类型的定义和C#中有所不同,比如Saler--String,大写的String在C#中不是一个类型 ...

  10. DotNet程序汉化过程--SnippetCompiler准确定位

    开篇前言 上一篇简单介绍了一下怎么汉化.Net程序,但那也仅仅是最基础的工作,要想汉化好一款软件基础我们得做扎实了,但是对于一些需要技巧的也不能不会啊,这一篇就介绍一下怎么准确定位字符串. 主要使用工 ...