GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer instal

標題是在Linux下使用系統yum install 的opencv庫來獲取視頻幀的時候拋出來的錯誤消息。opencv調用了Gstream的API來處理了視頻。錯誤拋出的代碼以下圖:php

 

 

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

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

 

把上面兩個連接的回答都看了,仍是沒有解決,說是缺乏GStream的一個插件,能夠我又從新yun install 了gstream-plug-in這些插件,包管理器提示已經安裝了最新版了。可是運行項目仍是會報出這個錯誤,可是有的人安裝了插件就解決了。ubuntu

 

閱讀以上連接的時候,有個問題沒有搞清楚就是:FFMPEG 和GSTREAM是否是功能上平行的關係?(相似於GTK和Qt的關係)。windows

搜索了一下發現:http://1.guotie.sinaapp.com/?p=31app

上面的文章說了,二者的關係區別不是很大,差很少平行。文章的內容以下:框架

gstreamer,vlc,ffmpeg都是開源處理流媒體的軟件,這裏的比較不涉及功能,僅僅比較源代碼。ide

 

大約看了一個星期,對這三個 軟件都略有了解,簡單的談談。工具

0、開發語言測試

都是使用c語言開發,ffmpeg最爲簡潔;gstreamer使用了gobject,晦澀;

一、註釋

vlc的代碼徹底沒有註釋,官網也沒有任何文檔;

gstreamer的官網上有開發者指引,看完後大概瞭解gstreamer的設計框架,如element,pad,filter等概念,感受設計的至關不錯;

ffmpeg官網上文檔很少,不過註釋真是太詳細了,超級贊;

二、代碼量

vlc代碼量算比較少的;

gstreamer分爲core,plugin,等等,代碼量巨大;並且,gstreamer使用glib2,感受很很差,可讀性差;

ffmpeg文件不少,但組織的很棒,一會兒都能找到要領;

代碼量沒有精確統計,僅僅是我的感受;

三、代碼質量

我我的很是欣賞ffmpeg,代碼太棒了;

整個框架結構分爲兩個主要部分,一個是codec,一個是format,在兩個大的目錄中,顧名思義,一個是處理編解碼,一個是獲取原始數據;

format中,只須要看幾個文件就能夠了解整個系統的運做過程了:

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

四、圖形界面

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
相關文章
相關標籤/搜索