1,gstreamer开发指南,gstreamer官网(那些都不用说了吧)
2,gst-launch的用法,这也不用说了吧。(青菜,猪肉,番茄,板砖,键盘……..)
3,
lqplayer--基于gstreamer和qt的linux下的简单播放器。
实现了基于QT+GST的一个播放器。我下载源码后编译出现了几个BUG,如下:
(1),源码编译不通过,media.cpp下有个地方大约是第54行linux下qt如何打开摄像头,g_free(tag_list);,把这个地方注释掉,资源没有申请到还free,其实出错了。(此BUG花了我几十分钟的时间)
(2),界面上的按键都不能使用,pthread_create(&tid,NULL,cb_run_loop,this);这句要注释掉,我们的主循环使用的是QT的主循环,这个就毋须了吧,要不就进GST的死循环了。(这个小BUG花了我某个礼拜六的一个夜晚)
在这儿还要说一下快放和慢放的问题:
gint64value=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为负值时可实现倒放linux课程,而且不稳定,仅几秒钟才会出现GST_MESSAGE_EOS。
当m_speed为负值时,我这样实现
gst_element_seek(m_pipeline,m_speed,GST_FORMAT_TIME,GST_SEEK_FLAG_FLUSH,
GST_SEEK_TYPE_SET,GST_CLOCK_TIME_NONE,
GST_SEEK_TYPE_SET,value*GST_MSECOND*1000);
无非就是调了个位置,疗效好了许多,不妨试一下。(为何呢,我也不晓得,此BUG花了我三四天的时间)
4linux下qt如何打开摄像头,
基于QT3的,实现了GST的采集编码,并保存为avi文件。总觉得这东西写的有些地方让人不爽,又说不出是那里来。
5,
GStreamer发送视频/音频流至服务器端并播放、保存。
Client实现了gstreamer视频文件的RTP发送,写个vlc的配置文件,使用vlc打开可以在网路上进行观看(vlc的使用和配置文件使用可以从网上搜一下,还是比较多的),疗效还不错.源码实现时稍显繁杂。Decodebin的联接要注意一下。还有就是gstrtpbin的联接要仔细看一下,刚开始觉得有些麻烦,错误了好几次。后来才明了了。(此功能的源码实现花了我一整天的时间,早9-晚11)
Server端,试了,没成功,后来就没仔细看。
6linux伊甸园,
Gstreamer实现摄像头采集并显示。不过是行下的,相对里面RTP网路的事例来说,这个用源码实现可就是小case了吧。同样结合前面RTP传输的事例,也同样使用vlc来播放,就可以实现网路摄像头。(卧槽,网路摄像头耶!远程监控耶!摄像头采集花了我两个月的时间吧,当时还年青,后来发觉是摄像头的问题,其实,这个也算是BUG,总结经验就是十几块的摄像头是靠不住的)
总结:前面有了摄像头采集保存的事例,有借助QT+GST实现播放器的事例,有RTP传输的事例,这样就可以实现用QT做界面,Gstreamer做后台的集采集编码保存,还有本地视频回放,网路视频监控于一体的DVR软件了。嗯,功能还挺全的。有意思吧~~
结束语:向以上几位哥们儿致敬。刚开始做民工,有大家的分享我很幸好。
本文原创地址://lrxjmw.cn/gkfscylbfqby.html编辑:刘遄,审核员:暂无