1,gstreamer開發手冊,gstreamer官網(這些都不用說了吧)
2,gst-launch的用法,這也不用說了吧。(白菜,雞蛋,蕃茄,磚頭,滑鼠……..)
3,
http://blog.chinaunix.net/u/6646/showart_164960.htmllqplayer--基于gstreamer和qt的linux下的簡單點傳播放器。
實作了基于QT+GST的一個播放器。我下載下傳源碼後編譯出現了幾個BUG,如下:
(1),源碼編譯不通過,media.cpp下有個地方大概是第54行,g_free(tag_list);,把這個地方注釋掉,資源沒有申請到還free,當然出錯了。(此BUG花了我幾十分鐘的時間)
(2),界面上的按鈕都不能使用,pthread_create(&tid, NULL, cb_run_loop, this);這句要注釋掉,我們的主循環使用的是QT的主循環,這個就不必了吧,要不就進GST的死循環了。(這個小BUG花了我某個星期六的一個清晨)
在這裡還要說一下快放和慢放的問題:
gint64 value = m_frontend->sliderTiming->value();
m_speed = m_speed+1;
gst_element_seek (m_pipeline, m_speed, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
GST_SEEK_TYPE_SET, value * GST_MSECOND*1000 ,
GST_SEEK_TYPE_SET, GST_CLOCK_TIME_NONE);
當m_speed為負值時可實作倒放,但是不穩定,僅幾秒鐘就會出現GST_MESSAGE_EOS。
當m_speed為負值時,我這樣實作
GST_SEEK_TYPE_SET, GST_CLOCK_TIME_NONE ,
GST_SEEK_TYPE_SET, value * GST_MSECOND*1000);
無非就是調了個位置,效果好了許多,不妨試一下。(為啥呢,我也不知道,此BUG花了我三四天的時間)
4,
http://www.pierrox.net/dvr/releases/dvr-3.99.4.tar.bz2基于QT3的,實作了GST的采集編碼,并儲存為avi檔案。總感覺這東西寫的有些地方讓人不爽,又說不出是哪裡來。
5,
http://blog.chinaunix.net/u3/94516/showart_2269637.htmlGStreamer發送視訊/音頻流至伺服器端并播放、儲存。
Client實作了gstreamer視訊檔案的RTP發送,寫個vlc的配置檔案,使用vlc打開可以在網絡上進行觀看(vlc的使用和配置檔案使用可以從網上搜一下,還是比較多的),效果還不錯.源碼實作時稍顯繁瑣。Decodebin的連接配接要注意一下。還有就是gstrtpbin的連接配接要仔細看一下,剛開始感覺有些麻煩,錯誤了好幾次。後來才明了了。(此功能的源碼實作花了我一整天的時間,早9-晚11)
Server端,試了,沒成功,後來就沒仔細看。
6,
http://www.since1985i.com/tag/gstreamerGstreamer實作攝像頭采集并顯示。不過是指令行下的,相對上面RTP網絡的例子來說,這個用源碼實作可就是小case了吧。同樣結合上面RTP傳輸的例子,也同樣使用vlc來播放,就可以實作網絡攝像頭。(哇塞,網絡攝像頭耶!遠端監控耶!攝像頭采集花了我兩個月的時間吧,當時還年輕,後來發現是攝像頭的問題,當然,這個也算是BUG,總結經驗就是十幾塊的攝像頭是靠不住的)
總結:上面有了攝像頭采集儲存的例子,有利用QT+GST實作播放器的例子,有RTP傳輸的例子,這樣就可以實作用QT做界面,Gstreamer做背景的集采集編碼儲存,還有本地視訊回放,網絡視訊監控于一體的DVR軟體了。嗯,功能還挺全的。有意思吧~~
結束語:向以上幾位哥們兒緻敬。剛開始做民工,有你們的分享我很慶幸。
本文來自CSDN部落格,轉載請标明出處:
http://blog.csdn.net/wzwxiaozheng/archive/2010/12/26/6099397.aspx