linux gst qt,【ARM-Linux开发】Gstreamer+QT+摄像头 编程总结

1,gstreamer开发手册,gstreamer官网(这些都不用说了吧)

2,gst-launch的用法,这也不用说了吧。(白菜,鸡蛋,西红柿,砖头,鼠标……..)

lqplayer--基于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_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花了我三四天的时间)

基于QT3的,实现了GST的采集编码,并保存为avi文件。总感觉这东西写的有些地方让人不爽,又说不出是哪里来。

GStreamer发送视频/音频流至服务器端并播放、保存。

Client实现了gstreamer视频文件的RTP发送,写个vlc的配置文件,使用vlc打开可以在网络上进行观看(vlc的使用和配置文件使用可以从网上搜一下,还是比较多的),效果还不错.源码实现时稍显繁琐。Decodebin的连接要注意一下。还有就是gstrtpbin的连接要仔细看一下,刚开始感觉有些麻烦,错误了好几次。后来才明了了。(此功能的源码实现花了我一整天的时间,早9-晚11)

Server端,试了,没成功,后来就没仔细看。

Gstreamer实现摄像头采集并显示。不过是命令行下的,相对上面RTP网络的例子来说,这个用源码实现可就是小case了吧。同样结合上面RTP传输的例子,也同样使用vlc来播放,就可以实现网络摄像头。(哇塞,网络摄像头耶!远程监控耶!摄像头采集花了我两个月的时间吧,当时还年轻,后来发现是摄像头的问题,当然,这个也算是BUG,总结经验就是十几块的摄像头是靠不住的)

总结:上面有了摄像头采集保存的例子,有利用QT+GST实现播放器的例子,有RTP传输的例子,这样就可以实现用QT做界面,Gstreamer做后台的集采集编码保存,还有本地视频回放,网络视频监控于一体的DVR软件了。嗯,功能还挺全的。有意思吧~~

结束语:向以上几位哥们儿致敬。刚开始做民工,有你们的分享我很庆幸。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背后的故事之 - 快乐的Lambda表达式(二)

快乐的Lambda表达式 上一篇 背后的故事之 - 快乐的Lambda表达式(一)我们由浅入深的分析了一下Lambda表达式。知道了它和委托以及普通方法的区别,并且通过测试对比他们之间的性能,然后我们通过IL代码深入了解了Lambda表达式&#x…

linux用vsc写c语言,vscode写c语言(windows)

用vscode学习c语言。记录vscode配置c语言编译环境。1.安装vscode(版本1.27)2.安装c/c扩展。配置环境变量,以WIN10为例 ,此电脑-属性-高级系统设置-环境变量-系统变量-path-添加一条D:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw3…

mouseevent tips

关于roll_over 和 mouse_over的区别,这篇文章说明的很清楚,http://zengrong.net/post/1105.htm 全文如下: 在MouseEvent中,ROLL_OVER和MOUSE_OVER、ROLL_OUT和MOUSE_OUT是两对比较相似的事件,它们有什么区别呢&#xf…

mt3 linux外网搭建,MT3 换皮梦幻 Linux端架设文字教程

1.安装宝塔yum install -y wget && wget -O install.shhttp://download.bt.cn/install/install.sh&& shinstall.sh获取宝塔地址 账号 密码开放端口10030 10011 10020 10003宝塔安装网站环境n1.14 mysql 5.6 php5.4关闭防火墙,我是7系统&…

一个有关数组的题

//在这里插入代码片import java.util.*; 1. (A rookie learning Java)写的一个有关数组的题 定义一个长度为10的整型数组, 循环输入10个整数然后判断这个数组中有几个偶数, 再定义一个正好能存放这几个偶数的数组, 将上一个数组中的所有偶数…

onCreateOptionsMenu

onCreateOptionsMenu----只在Activity创建时调用一次!之后不会再被调用!onPrepareOptionsMenu----每次display menu之前,都會调用该方法,  只要按一次menu按鍵,就會调用一次。  所以你會發現每次只要按一次menu按鍵…

linux识别UDF文件系统吗,Linux Kernel UDF文件系统本地缓冲区溢出漏洞

发布日期:2012-07-04更新日期:2012-07-05受影响系统:Linux kernel 3.3.x描述:--------------------------------------------------------------------------------BUGTRAQ ID: 54279Linux Kernel是Linux操作系统的内核。Linux K…

程序编译时书写Makefile注意事项一例

在进行程序编译时,可能需要指定一些库的库的路径、头文件的路径,分别使用的参数选项是-L和-I,需要注意的是:需要确保-L和-I后边的内容不为空,否则会出现意想不到的错误,而这种错误比较难以发现,…

把一个数组分为多个数组

/*int[]arr{1,2,5,213,75,42,64,48,21,44,22}; 分为3个数组 第一个数组满足全是偶数 第二个数组满足全是3的倍数 第三个数组满足其他*/ public class E{public static void main(String[]args){int[]arr{1,2,5,213,75,42,64,48,21,44,22};int b0,c0,d0;//遍历数组,得到每个数组…

window的war发布Linux失败,为什么war包在Windows的tomcat正常运行,在linux服务器报errorpage错误?...

最近项目完成后打包成war发布到服务器遇到访问应用404问题,用的是tomcat8.5,错误信息如下:o.s.b.w.servlet.support.ErrorPageFilter : Cannot forward to error page for request [/login] as the response has already been committed. As…

linux 命令行模式下,浏览网页方法

Ubuntu自带最新版的Gnome桌面,拥有大量的服务和桌面应用程序,让您仅通过一张安装光盘就可以体验到无比舒适的操作环境。下文介绍的在ubuntu下使用终端命令行上网的方法。 第一步,需要安装一个名为w3m的软件工具,打开终端&#xff…

数组的增删

public class A {public static void main(String[] args) {int[] arr { 1, 2, 5, 23, 64, 9, 87, 99 };// 要求删除23int index -1;int num 23;for (int i 0; i < arr.length; i) {if (num arr[i]) {index i;}}for (int i index 1; i < arr.length; i) {arr[i -…

linux就业技术指导,学linux前景怎么样

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼青海华夏职业学校09年招生简章221.207.32.* 1楼青海华夏职业技术中等专科学校概况&#xff1a;青海华夏职业技术中等专科学校是由青海省教育厅备案并批准成立的一所中等层次的职业技术专修学校。学校坐落在青海省西宁市美丽的南川河…

获取Android版本信息和电话信息

Android的版本信息可以通过android.os.Build获得&#xff0c;电话信息可以通过TelephonyManager获得&#xff0c;代码如下&#xff1a; private void get_infor(){sdk android.os.Build.VERSION.SDK;;release android.os.Build.VERSION.RELEASE;user android.os.Build.USER;…

简单的二维数组

/*找人,找到输出在第几楼第几号房间&#xff08;考虑没有找到的情况&#xff09;*/ /*{{"凤姐","蔡除坤","张洁"},{"姚鸣","芙蓉姐姐"},{"马尔克死","打仲马","肝塞特","高死你"}}…

求e的c语言程序,(C语言)计算e的x次方

计算e的x次方题目&#xff1a;编写程序&#xff0c;计算ex1x(x2)/(2!)(x3)/(3!)(x4)/(4!)…(x^n)/n!说明&#xff1a;e^x表示e的x次方&#xff0c;2!表示2的阶乘输入输出格式要求&#xff1a;输入格式&#xff1a;x n回车e^x, x, n均用double类型存储。要求输出小数点后6位。只…

第一次接触万物接对象

public class Girl{//一个类文件String name;//开始赋予girl的静态属性String character;String ilike;String range;public void introduction(){//方法&#xff0c;无参无返&#xff0c;动态属性System.out.print("Name&#xff1a;"name"\n"""…

用c语言程序编写一份试卷,C语言程序设计试题

C语言程序设计试题俗话说&#xff1a;“一份耕耘&#xff0c;一分收获。”耕耘就得付出一定的代价&#xff0c;没有那含辛如苦的“耕耘”&#xff0c;哪能领会到甜人心田的收获?以下是小编为大家搜索整理的C语言程序设计试题&#xff0c;希望能给大家带来帮助!更多精彩内容请及…

[课程相关]homework-06

一、c11 lambda /* * File: main.cpp* Author: liangjie** Created on 2013年11月23日, 下午12:02*/#include <cstdlib> #include <iostream>using namespace std;/** */ int main(int argc, char** argv) {string aa "Hello World!";int b 0, c 0;…