1、这里有个简单的例子,可以看看GStreamer如何编程的。

  2、GStreamer  GstAppSink的官方Document,翻译了一下它的描述部分,点击这里

  3、GStreamer  GstAppSrc的官方Document,翻译了以下它的描述部分,点击这里

  4、GStreamer中的Padscapabilities

Pads 允许信息进入或者离开一个element,这个Capabilities(简称Caps)就是指定哪些信息可以通过Pad来传输。例如:“RGB视频,尺寸为320*200并且每秒30帧”或者“16位的音频采样,5.1声道,每秒采样44.1k” 甚至可以是类似于mp3/h264之类的压缩格式。

  Pads支持多重Capabilities(比如,一个视频的sink可以支持RGB输出或者YUV输出),Capabilites可以指定一个范围而不必须是一个特定值(比如,一个音频sink可以支持从1~48000的采样率)。然而,数据从一个pad流向另一个pad的时候,必须是一个双方都能支持的格式。某一种数据形式是两个pad都能支持的,这样pads的Capabilities就固定下来,这个过程就被称为协商。

  作为一个应用开发者,我们通常都是用连接一个个element的方法来建立pipeline的,在这里,你需要了解使用的element的Pad的Caps。

  5、Pad模板

  Pad是由Pad模板创建的,模板里面会列出一个Pad所有可能的Capabilities。模板对于创建几个相似的Pad是很有帮助的,但也会比较早的判断出两个element是否可以连接:如果两个Pad的模板都不具备共同的子集的话,就没有必要进行更深层的协商了。

  Pad模板检查是协商流程的第一步。随着流程的逐步深入,Pad会正式初始化,也会确定他们的Capability(除非协商失败)

  6、queue

  queue element会创建一个新的线程。通常来说,有多于一个sink element时就需要使用多个线程。这是因为在同步时,sink通常是阻塞起来等待其他的sink都准备好,如果仅仅只有一个线程是如法做到这一点的。

  7、tee

  tee比较特别但很有用,tee有1个输入pad而没有输出pad,需要有申请,tee才会生成。通过这种方法,输入流可以被复制成多份。和Always Pad比起来,Request Pad因为并非一直存在,所以是不能自动连接element的。

  例子:

  建立一个如上的pipeline的步骤如下:

  1)初始化GStreamer;

  2)创建上图中的所有element;

  3)创建pipeline;

  4)配置element;

  5)把element放进pipeline中,然后将可以连接起来的原件连接起来;

      (1)app source -> tee  (2)audio_queue -> audio_convert -> audio_resample -> audio_sink  (3)video_queue ->wave_scope->video_convert->video_sink

  6) 手工连接tee->audio_queue和tee->video_queue;

  7)设置pipeline状态为PLAYING;

  8)监测BUS信号即可。

  上诉过程的代码可以参考官方文档:https://gstreamer.freedesktop.org/documentation/tutorials/basic/multithreading-and-pad-availability.html

  同时也可以参考《GStreamer讲解.pdf》 P56。

  关于上面的第6步,两个参考讲解还有一点不一致,官方文档更简单,需要进一步测试才能确定这两种方式是不是都可行。

GStreamer 从摄像头获取图像 转264的更多相关文章

  1. 如何使用 OpenCV 打开摄像头获取图像数据?

    OpenCV 如何打开摄像头获取图像数据? 代码运行环境:Qt 5.9.1 msvc2015 32bit OpenCV 3.3.0 #include "include/opencv2/ope ...

  2. ROS 教程之 vision : 用各种摄像头获取图像

    可能有很多人想在ROS下学习视觉,先用摄像头获取图像,再用opencv做相应算法处理,可是ROS下图像的采集可不像平常的read一下那么简单,需要借助外部package的使用.而摄像头即可以用笔记本自 ...

  3. [转]GStreamer资料(摄像头采集,视频保存,远程监控)DVR

    http://blog.csdn.net/wzwxiaozheng/archive/2010/12/26/6099397.aspx GStreamer资料整理(包括摄像头采集,视频保存,远程监控,流媒 ...

  4. 【视频开发】【Live555】摄像头采集,264编码,live555直播

    加入 摄像头采集和264编码,再使用live555直播 1.摄像头采集和264编码 将x264改成编码一帧的接口,码流不写入文件而是直接写入内存中(int  Encode_frame 函数中). /* ...

  5. 【ARM-Linux开发】Gstreamer+QT+摄像头 编程总结

    1,gstreamer开发手册,gstreamer官网(这些都不用说了吧) 2,gst-launch的用法,这也不用说了吧.(白菜,鸡蛋,西红柿,砖头,鼠标--..) 3,http://blog.ch ...

  6. android摄像头获取图像——第三弹

    相机获取图像的格式问题 android中承认的格式的参考网址为 :http://developer.android.com/reference/android/graphics/ImageFormat ...

  7. 【视频开发】用GStreamer实现摄像头的采集和保存

    GStreamer是流媒体软件的开发框架.可以这样说,在该框架的支持下,你可以非常简单地为很多格式的流媒体写出自已需要的程序. 现在,GStreamer已经内置对MP3.Ogg/Vorbis.MPEG ...

  8. ROS 使用自带和usb摄像头获取图像

    笔记本自带的摄像头的设备号一般为/dev/video0 第一步:安装Webcam 驱动 $ sudo apt-get install git-core $ cd ~/catkin_ws/src $ g ...

  9. AVFoundation之如何从摄像头获取图像

    前言: 最近项目有个需求是对试图对手机密码进行强破解的人进行拍照(通过摄像头截图),因为之前没做过,所以一堆坑.现在就把我的经验都分享出来,希望后来人不用再踏上坑途中. 直接上代码: // 创建会话 ...

随机推荐

  1. Linux基础学习5

    程序管理与SELinux初探 process&program  程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘.光盘.软盘.磁带等), 为实体档案 ...

  2. ubuntu 配置L2tp出现的问题解决

    运行环境:ubuntu 14.04 64位 配置推荐网址: https://linux.cn/article-3409-1.html 首先,官方教程是必须的: https://help.ubuntu. ...

  3. flash+xml无法显示中文的解决办法

    flash+xml用来做图片动态浏览效果相当不错,被广泛运用于电子相册制作,很多朋友都会从网上下载一些相关的flash源码下载参考,但是经常发现在使用过程中,修改了xml文件中的英文后要么文本不显示, ...

  4. [Android实例] Scroll原理-附ScrollView源码分析 (转载)

    想象一下你拿着放大镜贴很近的看一副巨大的清明上河图, 那放大镜里可以看到的内容是很有限的, 而随着放大镜的上下左右移动,就可以看到不同的内容了 android中手机屏幕就相当于这个放大镜, 而看到的内 ...

  5. Python moni模拟鼠标事件

    7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 4 ...

  6. Linux多线程编程-信号量

    在Linux中.信号量API有两组.一组是多进程编程中的System V IPC信号量.另外一组是我们要讨论的POSIX信号量. 这两组接口类似,但不保证互换.POSIX信号量函数都已sem_开头,并 ...

  7. Android开发系列(二十三):实现带图片提示的Toast提示信息框

    Android中的Toast是非经常见的一个消息提示框.可是默认的消息提示框就是一行纯文本.所以我们能够为它设置一些其它的诸如是带上图片的消息提示. 实现这个非常easy: 就是定义一个Layout视 ...

  8. storm笔记:Storm+Kafka简单应用

    storm笔记:Storm+Kafka简单应用 这几天工作须要使用storm+kafka,基本场景是应用出现错误,发送日志到kafka的某个topic.storm订阅该topic.然后进行兴许处理.场 ...

  9. 连续调用scanf的问题总结

    对于非常简单的scanf函数,一直使用,但是却是有很多的知识点没有掌握好,现总结如下: 1.多个scanf之后,后序以 scanf("%c",&c) 当程序连续调用scan ...

  10. 模拟IE各种版本的方法

    下载360极速浏览器.开启“兼容模式” 默认会是IE7.可以通过控制台(Ctrl + shift + I)调整各个版本