自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

转载 UNIX高级环境编程(14)文件IO - O_DIRECT和O_SYNC详解

原文地址:http://www.cnblogs.com/suzhou/p/5381738.htmlO_DIRECT和O_SYNC是系统调用open的flag参数。通过指定open的flag参数,以特定的文件描述符打开某一文件。这两个flag会对写盘的性能有很大的影响,因此对这两个flag做一些详细的了解。先看一个open函数的使用例子.1

2017-06-26 16:52:37 310

原创 GstBuffer中data实际的存储地址

GstBuffer中data实际的存储地址前段时间刚开始学Gstreamer,还没学多少就要干活了,最近想用gdb查看GstBuffer的data地址是总很麻烦,要先用gst_buffer_map先获得data,所以就深入的了解了一下GstBuffer中data所存放的地方。下面就和大家分享一下吧!通常我们需要获取GstBuffer的data数据是通过接口gst_buffer_map得到的

2017-04-10 14:39:40 3350

转载 mp4文件格式解析(一)

原文地址:http://blog.sina.com.cn/s/blog_48f93b530100jz4b.html目前MP4的概念被炒得很火,也很乱。最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准。随后MP4概念被转移到视频上,对应的是MPEG-4标准。而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器。但是这篇文章介绍的内容跟上面这些都无关,我们要

2017-04-06 11:16:07 271

转载 MP4文件格式详解——元数据moov-mvhd box

原文地址:http://blog.csdn.net/PirateLeo/article/details/7590056元数据moov(一)(ISO-14496-12)Author:Pirate LeoEmail:[email protected] 14496 - 12 定义了一种封装媒体数据的基础文件格式,mp4、3gp、ismv等我们

2017-03-25 17:25:47 611

转载 MP4文件格式详解——文件类型ftyp

原文地址:http://blog.csdn.net/PirateLeo/article/details/7590056元数据moov(一)(ISO-14496-12)Author:Pirate LeoEmail:[email protected] 14496 - 12 定义了一种封装媒体数据的基础文件格式,mp4、3gp、ismv等我们常见媒体封装格式

2017-03-25 17:15:58 626

转载 MP4文件格式详解——结构概述

原文地址:http://blog.csdn.net/pirateleo/article/details/7061452MP4文件格式详解(ISO-14496-12/14)Author:Pirate LeoEmail:[email protected]一、基本概念1、 文件,由许多Box和FullBox组成。2、 Box,每个Box由Header和Data组成

2017-03-25 16:54:57 492

转载 I,P,B帧和PTS,DTS的关系

原文:http://www.cnblogs.com/qingquan/archive/2011/07/27/2118967.html基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame:

2017-03-24 18:08:28 170

原创 glib交叉编译

glib交叉编译        glib是一个C语言函数库,它对很多系统调用进行了封装,提供了很多实用的功能,能极大地方便编程。        为了在产品上尝试使用glib,需要对glib进行交叉编译,使其能在ARM9上运行。以下是版本信息:        开发平台:Linux ubuntu 3.8.0-35-generic #52~precis

2017-03-06 20:53:19 1520 1

转载 h264 NAL头解析

h264 NAL头解析NAL全称Network Abstract Layer,即网络抽象层。在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。NAL单元是NAL的基本语法结构,它包含一个字节的头信

2017-03-03 15:43:49 318

转载 Linux系统结构详解

Linux系统结构详解Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核        内核是操作系统的核心,具有很多最基本功能,它负责管理系

2017-03-01 17:04:10 198

转载 Linux的SOCKET编程详解

1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)

2017-03-01 16:11:26 209

转载 动态库的链接和链接选项-L,-rpath-link,-rpath

原文:https://my.oschina.net/shelllife/blog/115958链接动态库如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择

2017-03-01 10:55:33 211

原创 Gstreamer整体分析2——Element状态转变所做的事

在前面的内容中,我们已经分析了Gstreamer在将element添加到pipeline及连接element时所做的事,一般完成了前面的步骤后,我们会设置pipeline的状态为PLAYING,下面我们来分析一下,Gstreamer设置状态时都让element做了些什么事。编写应用程序时,我们会调用gst_element_set_state函数用于设置状态,在源码中,我们可以看到,Gstrea

2017-02-27 16:21:58 1421

翻译 Gstreamer插件教程3.2—高级概念(Advanced Concepts):Cap协商(Caps negotiation)

cap协商是找到一种两个element都能够处理的媒体格式(即GstCaps)的一种行为。Gstreamer中的这种处理,对于整个pipeline,大多数情况下都可以找到最优的解决方案。在这个章节,我们解释了它是怎样工作的。Caps negotiation basics在Gstreamer中,媒体格式的协商总是遵循如下的简单规则:一个下游的element在它的sinkpad上建

2017-02-26 16:03:36 1296

原创 Gstreamer整体分析2——连接Element

上一部分中,我们已经介绍了编写应用程序时,element的创建及何时加载插件动态库。在此部分中,我们将介绍Gstreamer是如何将element添加到pipeline中,并把它们连接起来的。

2017-02-24 18:53:07 2713

原创 Gstreamer整体分析1——Element的创建及Plugin的加载

学习Gstreamer断断续续也有一小段的时间了,不仅学习了基础教程和播放教程,同时还开始了翻译Gstreamer插件,但个人觉得对Gstreamer的了解还是比较的浅,特别是在学习和翻译Gstreamer插件的时候,感觉学的东西都是偏局部的,不能很好的串起来,所以,最近开始看Gstreamer的源码,但如果不做笔记的话,又可能会渐渐忘记其内部的工作原理,所以在这里对Gstreamer做一个总体上的分析。此教程不涉及应用的开发(基础教程和播放教程中已介绍),只对Gstramer是如何完成element的创建

2017-02-24 16:13:06 1890 1

原创 Gstreamer整体分析2——插件开发

根据前面已翻译的Gstramer插件教程部分,我们知道,可以通过gst-template创建一个基础的模板。在模板文件中,我们可以看到,其包含一个*_class_init()函数和一个*_init()函数。*_class_init函数详解element会先调用*_class_init()函数进入初始化,在此函数中,一般会为class设定设置性质的函数,如videotestsrc中的:

2017-02-24 16:07:03 292

翻译 Gstreamer插件教程3.2—高级概念(Advanced Concepts):不同的调度模式(Different scheduling modes)

一个pad的调度模式定义了数据是如何从source pad中接收及发送至sink pad。Gstreamer能够运行两种调度模式,分别称为push和pull模式。Gstreamer支持element能够拥有可以任何方式调度的pad,一个element中的pads并不需要以相同的调度模式运行。目前为止,我们只讨论了_chain()函数运行element,如,在sink pad上设置了chain函数的element将push数据到它的source pad中。我们称这种模式为push模式,因为一个同级的elem

2017-02-23 20:39:28 987

翻译 Gstreamer插件教程3.1—高级概念(Advanced Concepts):需求pads和间或pads(Request and Sometimes pads)

到目前为止,你应该能够创建可以接收和发送数据的filter element。这是Gstreamer所支持的简单模型。但Gstreamer还可以做更多的事!在这接下来的章节,我们将讨论多个高级主题,如时间安排、特殊的pad类型、时钟、事件、接口和标签等更多。这些主题使得应用中使用Gstreamer更简单。直到目前为止,我们只处理了那些一直存在的pads,然而,还有许多pads是只有在某些时候或只有应用程序要求时才被创建的。第一个被称为sometimes pad,第二个被称为request pad。pad的可

2017-02-23 14:41:06 1026

原创 linux IO刷新机制sync, fsync, fdatasync和fflush详解及注意事项

Linux,unix在内核中设有 缓冲区高速缓冲或页面高速缓冲,大多数磁盘I/O都通过缓冲进行,采用延迟写技术。sync:将所有修改过的快缓存区排入写队列,然后返回,并不等待实际写磁盘操作结束fsync:只对有文件描述符制定的单一文件起作用,并且等待些磁盘操作结束,然后返回。fdatasync:类似fsync,但它只影响文件的数据部分。fsync还会同步更新文件的属性。fflush:标准I/O函数(如:fread,fwrite)会在内存建立缓冲,该函数刷新内存缓冲,将内容写入内核缓冲,要想将其写入磁

2017-02-17 16:47:35 2282 1

翻译 Gstreamer插件教程2.9—编写一个插件(Writing a Plugin):构建一个测试应用(Building a Test Application)

你将经常想用尽可能小的设置来测试你新写的插件。通常,gst-launch-1.0是用于测试插件的第一步。如果你还未在Gstreamer的搜索目录上安装你的插件,你将需要设置插件路径。或者设置GST_PLUGIN_PATH变量为包含你插件的目录路径,或者用命令行选项--gst-plugin-path。如果你的插件基于gst-plugin模板,它将类似于gst-launch-1.0 --gst-plugin-path=$HOME/gst-template/gst-plugin/src/.libs TESTPI

2017-02-13 17:36:12 614

翻译 Gstreamer插件教程2.8—编写一个插件(Writing a Plugin):信号(Signals)

GObject信号可以用来通知应用这object中的特殊事件。然而,可以注意到应用需要明白信号及它的意义,所以如果你正在寻找应用与element交互的通用的方式,信号可能不是你想要找的。但是,在很多情况下,信号是非常有用的。详见GObject文档关于信号的内部介绍。

2017-02-13 16:55:48 771

翻译 Gstreamer插件教程2.7—编写一个插件(Writing a Plugin):添加性质(Adding Properties)

控制一个element行为的主要的且最重要的方式是通过GObject性质。GObject性质是在_class_init()函数里定义的。element可以选择实现一个_get_property()函数或一个_set_property()函数。这些函数将在一个应用改变或要求一个性质的值时被通知,然后填充对应性质的值或在内部对需求采取相应的方法改变对应性质的值。你可能想保持一个事例对象的性质的值为当前配置的,此值为你在get和set函数中用到的。注意到GObject不会自动设置你的事例变量的值为默认值,你需要

2017-02-13 16:47:00 942

翻译 Gstreamer插件教程2.6—编写一个插件(Writing a Plugin):状态是什么?(What are states?)

状态描述了element是否被初始化,是否已经准备好传送数据以及目前是否正在处理数据。Gstreamer中定义了4个状态:GST_STATE_NULLGST_STATE_READYGST_STATE_PAUSEDGST_STATE_PLAYING

2017-02-13 15:36:32 348

翻译 Gstreamer插件教程2.5—编写一个插件(Writing a Plugin):query函数(The query function)

通过query函数,你的element将收到必须被回复的queries。这些queries是一些如播放位置、持续时间等,但是也包含所支持的格式和你的element所支持的时间安排模式。queries能向上游传送,也能够向下游传送,所以你能够在sink pads和source pads中接收到它们。

2017-02-11 20:33:27 539

翻译 Gstreamer插件教程2.4—编写一个插件(Writing a Plugin):event函数(The event function)

event函数通知你发生在数据流上的特殊事件(如caps, end-of-stream, newsegment, tags等)。events可以往上游传送,也可以下游传送,所以你即可以在sink pads中,也可以在source pads中收到它们。

2017-02-11 20:19:21 400

翻译 Gstreamer插件教程2.3—编写一个插件(Writing a Plugin):chain函数(The chain function)

chain函数是所有数据处理发生的地方。在一个简单的过滤器中,_chain()几乎是线性的函数,所以对于任意一个输入的buffer,都将被输出。下面是一个非常简单的一个chain函数的实现

2017-02-11 19:43:18 859

翻译 Gstreamer插件教程2.2—编写一个插件(Writing a Plugin):详解pads(Specifying the pads)

正如前面所说,pad是数据进出element时的端口,这使得pad在element的创建过程中成为非常重要的一步。在boilerplate代码中,我们已经看到了静态pad模板是如何通过element class来注册pad模板的。这里,我们将看到如何创建一个真实的element:用一个_event()-函数来配置一个特殊的格式。还将看到如何注册函数,使得数据流通过element。在element的_init()函数中,你从pad模板中创建的pad已经在_class_init()函数中被注册到element

2017-02-11 19:15:25 549

翻译 Gstreamer插件教程2.1—编写一个插件(Writing a Plugin):构建样板(Constructing the Boilerplate)

本章节中,你将学会怎样使用最小的代码量构建一个最基本的新插件。由于从零开始,所以你将需要知道如何获得Gstreamer的模板源。然后,你将学会如何运用一些基本的工具来拷贝且修改一个模板插件,以创建一个新的插件。当你阅读完此章节,了解了下面的例子,你将得到一个功能性的音频过滤器插件,你可以编译此插件并在Gstreamer应用程序中使用它。

2017-02-11 14:41:49 1182

翻译 Gstreamer插件教程1.2—介绍(Introduction):基础(Foundations)

这章将介绍Gstreamer的基本概念。理解这些本概念将帮助你处理扩展Gstreamer时所涉及到的问题。关于这些基本概念的更详细介绍可查看Gstreamer应用开发手册。此部分关于Gstreamer基本概念的介绍,主要是为了帮你回顾之前的内容。

2017-02-09 15:00:34 702

翻译 Gstreamer插件教程1.1—介绍(Introduction):前言(Preface)

Gstreamer是什么?Gstreamer是一个创建流媒体应用的框架。基本的设计源自于奥立冈州立大学商学研究院关于视频流的研究,同时也包含DirectShow的思想。基于Gstream

2017-02-08 19:32:39 430

转载 使用 Yocto Project 构建自定义嵌入式 Linux 发行版

Yocto Project 是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义 Linux 系统,不管硬件架构是什么。我想要告诉那些对 yocto 这个名称不甚理解的用户的是,术语 yocto 是最小的 SI 单元。最为一个前缀,yocto 表示 10^-24。本文将提供一个分步指导,向您介绍如何使用 Yocto Project 的行业标准开源工具为嵌入式设备创建自定义的 Linux 操作系统,并使用 QEMU 在一台虚拟机中启动操作系统。Yocto Project 是由大型硬件

2017-02-07 19:26:55 194 1

转载 GStreamer播放教程09——数字音频传输

目标 本教程展示GStreamer是如何进行数字音频传输的。

2017-02-07 11:34:47 377

转载 GStreamer播放教程08——视频解码的硬件加速

目标 视频的硬件解码近来发展非常快速,尤其是在低功耗的设备上。本教程会讲述一些硬件加速的背景知识并解释一下GStreamer是怎么做的。 悄悄告诉你,如果设置正确地话,我们什么也不用做,GStreamer自动做完这一切的。

2017-02-07 11:13:29 1824

转载 GStreamer播放教程07——自定义playbin的sink

目标 通过手动选择音频和视频的sink,playbin2可以进一步定制。这允许使用playbin2的应用在解码后可以自行做最终的渲染和显示。本教程展示了: 如何替换playbin2选择的sink 如何使用一个复杂的pipeline来作为sink

2017-02-07 10:55:28 947

转载 GStreamer播放教程06——可视化音频

目标 GStreamer有一系列把音频转换成视频的element。他们可以用于科学的目的或者增加音乐播放器的趣味性。本教程展示: 如何允许音频的可视化 如何选择可视化element

2017-02-07 10:31:07 402

转载 GStreamer播放教程05——色彩平衡

目标 亮度,对比度,色度和饱和度都是常见的视频调节参数,也是GStreamer里面设置色彩平衡的参数。本教程将展示: 如何发现可用的色彩平衡通道 如何改变它们

2017-02-07 10:12:48 317

转载 GStreamer播放教程04——既看式流

目的 在《GStreamer基础教程——流》里面我们展示了如何在较差的网络条件下使用缓冲这个机制来提升用户体验。本教程在《GStreamer基础教程——流》的基础上在扩展了一下,增加了把流的内容在本地存储。并且展示了: 如何开启既看式下载 如何知道下载的是什么 如何知道在哪里下载 如何限制下载数据的总量

2017-02-07 09:31:29 411

转载 GStreamer播放教程03——pipeline的快捷访问

目的 《GStreamer08——pipeline的快捷访问》展示了一个应用如何用appsrc和appsink这两个特殊的element在pipeline中手动输入/提取数据。playbin2也允许使用这两个element,但连接它们的方法有所不同。连接appsink到playbin2的方法在后面还会提到。这里我们主要讲述: 如何把appsrc连接到playbin2 如何配置appsrc

2017-02-06 10:52:38 253

转载 GStreamer播放教程02——字幕管理

目标 这篇教程和上一篇非常相似,但不是切换音频流,而是字幕了。这次我们会展示: 如何选择选择字幕流 如何引入外部的字幕 如何客制化字幕使用的字体

2017-02-06 10:28:42 539

OpenCV参考手册

文档描述了OpenCV各个函数的用法!英文的哦,不过各位应该看得懂!

2015-07-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除