目标 有时我们的应用并没有按照我们的预期来工作,并且在总线上获得的错误信息也没有足够的内容.这时我们该怎么办呢?幸运的时,GStreamer自身提供了大量的调试信息,通常这些信息会给出一些线索,指向出错的地方.本教程主要讲述: 如何在GStreamer里面获得更多地调试信息 如何把你自己的调试信息加入GStreamer的调试记录 如何获得图形化的pipeline 打印调试信息 调试记录 GStreamer和插件里面都有大量的调试信息,也就是说,在调试区域内可以给出所有的信息,包括时间戳,线程,种…
程序猿学英语就上视觉英语网 Android程序开发0基础教程(一)   平台简单介绍   令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操作系统,内核为Linux. 作为开发人员,我们所关心的是这个平台的架构以及所支持的开发语言.以下是这个平台的架构模型:     这个平台有下面功能:   + Application framework: 可重用的和可替换的组件部分,在这个层面上,全部的软件都是平等的. + Dalvik virtul…
摘要 通常我们的播放引擎需要和GUI进行集成,在使用GStreamer时,GStreamre会负责媒体的播放及控制,GUI会负责处理用户的交互操作以及创建显示的窗口.本例中我们将结合QT介绍如何指定GStreamer将视频输出到指定窗口,以及如何利用GStreamer上报的信息去更新GUI. 与GUI集成 我们知道与GUI集成有两个方面需要注意: 显示窗口的管理. 由于显示窗口通常由GUI框架创建,所以我们需要将具体的窗口信息告诉GStreamer.由于各个平台使用不同的方式传递窗口句柄,GSt…
cocos3.0的事件分发机制: 创建一个事件监听器-用来实现各种触发后的逻辑. 事件监听器添加到事件分发器_eventDispatcher,所有事件监听器有这个分发器统一管理. 事件监听器有以下几种: 触摸事件 (EventListenerTouch) 键盘响应事件 (EventListenerKeyboard) 鼠标响应事件 (EventListenerMouse) 自定义事件 (EventListenerCustom) 加速记录事件 (EventListenerAcceleration)…
在我们github看到了一个不错的第三方库时,可能我们想把他git clone到本地,我们需要复制他的SSH URL,如下图: 复制完地址之后,我们需要打开终端,然后输入命令: git clone + SSH URL,拿上边的为例,我们需要输入 :       git  clone git@github.com:Zhangmangyuan/PullingRefreshTableView.git 输入完成之后回车,会看到下图的情况: 从图上最后一句英文:Please make sure you h…
一.创建对象   下面的语句创建了一个对象并把它的引用赋值给了一个变量: Point originOne = new Point(23, 94);   这条语句由三部分组成(下面将详细讨论): 声明对象变量:声明一个可以引用稍后创建的对象的变量. 实例化类:new关键字是实例化类的操作符. 初始化对象:new从操作符将会调用类的构造器,从而完成对象的初始化. 1.声明对象变量   就像声明基本数据类型的变量一样,声明对象变量的语法如下: ClassName variableName;   这会告…
在本章中,我们将看到什么是Internet和Intranet,以及讨论两者之间的异同. 互联网 它是互联计算机网络的全球/全球系统.它使用标准的Internet协议(TCP / IP).Internet中的每台计算机都由唯一的IP地址标识.IP地址是一组唯一的数字(例如110.22.33.114),用于标识计算机的位置. 特殊计算机DNS(域名服务器)用于为IP地址提供名称,以便用户可以通过名称查找计算机.例如,DNS服务器会将名称https://www.tutorialspoint.com解析…
1.指定编码方式       第一种 在代码文件首行通过 #encoding:GBK的方式     第二种  ruby -E UTF-8 文件名称     第三种  irb  -E UTF-8   2.基本类型       Fixnum,String,Float     3.注释 #开头的行 =begin   =end之间的所有行 4.流程控制 if elsif else end while do end 5.迭代器 times each 6.Syntax   :    ":symbol_nam…
1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 Brave 1.19.84 FireFox 85.0 WebStorm 2020.3.2 Manifest V3 3 开发环境准备 开发扩展建议使用WebStorm,推荐WebStorm的原因是能够补全,在设置中的Libraries中可以下载chrome的库,这样就能够补全了: 另一个建议使用的是VS…
目标 GStreamer提供了一系列方便使用的工具.这篇教程里不牵涉任何代码,但还是会讲一些有用的内容: 如何在命令行下建立一个pipeline--完全不使用C 如何找出一个element的Capabilities 如何发现一个媒体文件的内部结构 介绍 这些工具就位于SDK的bin目录下.你需要把这个目录加入PATH变量,或者把当前目前切换到GStreamer SDK的bin目录. 打开一个终端界面,把当前目录切换到GStreamer SDK的bin目录,然后准备跟着我们操作吧. 为了防止多个版…
目标 本教程给出了一系列开发中常用的element.它们包括大杂烩般的eleemnt(比如playbin2)以及一些调试时很有用的element. 简单来说,下面用gst-launch这个工具给出一个个具体例子(命令行),你可以用-v参数可以看到Pad得Caps是如何协商的. Bins 这些是Bin element,它们在内部包含其他的element,已经组成了内部的pipeline,但在外部,我们还是把它们当成一个element. Playbin2 这个element在整个系列的教程里面广泛的…
目标 快进,倒放和慢放是trick模式的共同技巧,它们有一个共同点就是它们都修改了播放的速度.本教程会展示如何来获得这些效果和如何进行逐帧的跳跃.主要内容是: 如何来变换播放的速度,变快或者变慢,前进或者后退 如何一帧一帧的播放视频 介绍 快进是以超过正常速度播放媒体的一项技术,反之,慢放是以低于正常速度播放的技术.倒放和播放是一样的,只不过是从后面朝前面播放. 所有这些技术做的都是修改播放速度这件事,如果说正常播放速度是1.0的话,那么超过1.0这个数字就是快进,低于1.0这个数字就是慢放了,…
目标 GStreamer建立的pipeline不需要完全关闭.有多种方法可以让数据在任何时候送到pipeline中或者从pipeline中取出.本教程会展示: 如何把外部数据送到pipeline中 如何把数据从pipeline中取出 如何操作这些数据 介绍 有几种方法可以让应用通过pipeline和数据流交互.本教程讲述了最简单的一种,因为使用了专门为这个而创建的element. 专门让应用可以往pipeline里面传入数据的element时appsrc,而appsink就正好相反,让应用可以从…
目标 GStreamer会自动处理多线程这部分,但在有些情况下,你需要手动对线程做解耦.本教程会教你怎样才能做到这一点,另外也展示了Pad的有效性.主要内容包括: 如何针对部分的pipeline建立一个新的线程 什么是Pad的有效性 如何复制流 介绍 多线程 GStreamer是一个支持多线程的框架.这就说明,如果有必要它会在内部自动创建/销毁线程.比如:在应用线程中把流解出来.而且,plugin在自身也可以任意的创建线程,比如一个视频解码器为了充分利用4核CPU的能力,可以创建4个线程. 这里…
目标       Pad的Capabilities是一个GStreamer element的基础,因为framework大部分时间是自动处理的,所以我们几乎感觉不到它的存在.本教程比较偏向原理,介绍了:       什么是Pad Capabilities       如何获得这个东西       什么时候应该去获得这个东西       为什么你需要了解他们 介绍 Pads       Pads允许信息进入或者离开一个element--就像曾经展示过得一样.这个Capabilities(或者简单地…
目标 本教程展示了如何在GStreamer集成一个GUI(比如:GTK+).最基本的原则是GStreamer处理多媒体的播放而GUI处理和用户的交互. 在这个教程里面,我们可以学到: 如何告诉GStreamer输出视频到一个window 如何持续的刷新GUI 在GStreamer多线程时如何保持UI的更新 一个仅发送给你订阅的消息而不是所有消息的机制 介绍 我们下面就用GTK+这样一个GUI工具来些一个播放器,但基本概念是可以推广到其它工具的(比如QT).如果你对GTK+有一定的了解有助于理解本…
摘要 在 Gstreamer基础教程01 - Hello World中,我们介绍了如何快速的通过一个字符串创建一个简单的pipeline.为了能够更好的控制pipline中的element,我们需要单独创建element,然后再构造pipeline,下面将介绍GStreamer的一些基本概念并展示pipeline的另一种构造方式. 基本概念 Element 我们知道element是构建GStreamer pipeline的基础,element在框架中的类型为GstElement,所有GStrea…
摘要 在我们前面的文章中,我们的Pipline都是使用GStreamer自带的插件去产生/消费数据.在实际的情况中,我们的数据源可能没有相应的gstreamer插件,但我们又需要将数据发送到GStreamer Pipeline中.GStreamer为我们提供了Appsrc以及Appsink插件,用于处理这种情况,本文将介绍如何使用这些插件来实现数据与应用程序的交互. Appsrc与Appsink GStreamer提供了多种方法使得应用程序与GStreamer Pipeline之间可以进行数据交…
摘要 GStreamer提供了不同的命令行工具用于快速的查看信息以及验证Pipeline的是否能够正确运行,在平时的开发过程中,我们也优先使用GStreamer的命令行工具验证,再将Pipeline集成到应用中.本文将介绍gst-inspect-1.0,gst-discoverer-1.0,gst-launch-1.0命令行工具的使用. gst-inspect-1.0 此命令有3种工作模式,实际中我们常用第一种和第三种方式: 一.不带任何参数.这样会列出当前系统中支持的所有Element,这些E…
Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型 OxyPlot组件中支持7种类型的条型图表,分别为普通条形图.线型条形图.矩形条形图.差值图.龙卷风图.普通柱形图和柱形误差图,如图1.13~1.19所示.…
目标 通过手动选择音频和视频的sink,playbin2可以进一步定制.这允许使用playbin2的应用在解码后可以自行做最终的渲染和显示.本教程展示了: 如何替换playbin2选择的sink 如何使用一个复杂的pipeline来作为sink 介绍 playbin2有两个属性:audio-sink和video-sink.应用只需要实例化合适的element然后通过这两个属性传给playbin2就行了. 这个方法只能使用一个简单地element来做sink.如果遇到的情况不是简单地element…
目标 亮度,对比度,色度和饱和度都是常见的视频调节参数,也是GStreamer里面设置色彩平衡的参数.本教程将展示: 如何发现可用的色彩平衡通道 如何改变它们 介绍 <GStreamer基础教程05--集成GUI工具>里面已经解释了GObject接口:应用通过它们来获得特定功能,而不用去管具体的element的实现. playbin2实现了色彩平衡的接口(gstcolorbalance),这就可以设置色彩平衡了.如果playbin2里面的任何一个element支持了这个接口,playbin2就…
目的 在<GStreamer基础教程--流>里面我们展示了如何在较差的网络条件下使用缓冲这个机制来提升用户体验.本教程在<GStreamer基础教程--流>的基础上在扩展了一下,增加了把流的内容在本地存储.并且展示了: 如何开启既看式下载 如何知道下载的是什么 如何知道在哪里下载 如何限制下载数据的总量 介绍 当播放流的时候,从网络上获得的数据被锁住之后,会创建称为future-data的一个小的缓冲区.然而,在数据播放渲染之后就会被丢弃.这就意味着,如果用户想要倒回前面去看,相应…
目标 我们前面已经使用过了playbin2这个element,它可以让我们做的很少而实现很多.本教程会展示当这个element的默认设置在一些特殊情形下不符合我们的需求是可以做的一些深度定制,我们会看到: 如何判断一个文件中有多少个流并区分开 如何获得每一个流的信息 作为一个编注,虽然这个element名字是playbin2,但因为原来的playbin已经废弃不用了,所以还是可以称作playbin而不会引起混淆. 介绍 很多时候,一个文件里面会含有一个视频流,多个音频流和字幕流.最常见的时含有一…
iOS 9应用开发基础教程下册   介绍: 本教程是国内第一本iOS 9开发应用教程.本教程基于Xcode 7.0,使用Swift 2.0语言讲解如何开发iOS 9的应用App. 学习建议:本教程针对iOS开发初学者,学习前需要具备Swift 2.0语言基础.学习Swift 2.0,可以参考教程 Swift2.0语言快速入门.      目  录 第11章  数据管理 1 11.1  文件管理 1 11.1.1  创建文件 1 11.1.2  写入数据 3 11.1.3  读取数据 6 11.1…
Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘制.具体的操作步骤如下: (1)打开Xamarin.Android项目. (2)将OxyPlot.Xamarin.Android组件添加到项目中的引入中. (3)打开activity_main.axml文件,使用PlotView进行布局.代码如下: <?xml version="1.0&quo…
AndoridSQLite数据库开发基础教程(5) 创建SQLite数据库 使用SQLiteManager创建数据库的操作步骤如下: (1)双击SQLiteManager工具,弹出SQliteManager对话框,如图1.9所示. 图1.9  SQliteManager对话框 (2)选择New SQLite Database选项,弹出Create a sqlite database对话框,如图1.10所示. 图1.10  Create a sqlite database对话框 (2)“文件名(N…
懒惰是富有最大的敌人,再不前进,我们就out了.最近工作比较轻松,不是很忙.于是想晚上下班回家学习点新东西.看着苹果大军的一天天壮大,心里也是痒痒的.于是就想先系统的学习下Objective-C,为之后学习ios编程开发提前打好基础,做好准备. 大家学习Objective-C的主要目的都是为了能更好的进行IOS项目的开发.那么,Objective-C的学习开发要什么条件呢?要么就是用Linx系统下编写Objective-C,然后下载sdk,设置好运行环境.具体操作网上应该有教程.还有最理想的状态…
RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么? RPG Maker 是由Enterbrain公司推出的RPG制作工具. 中文译名为RPG制作大师. 熟悉的人喜欢简称为RM. 根据发行版本的不同,RM在国内流行的版本有4款: 2.附上资源下载地址:点击进入网盘下载 3.关于 RPG Maker MV? RMMV是当前RM系列最新发行的一款RPG制作工具 制作的游戏支持导出iOS.Android.Windows.OS X甚至是可以在浏览器上游玩的…
Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来.规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入.解释业务规则.并根据业务规则做出相应的决策. 通俗来说,规则引擎就是负责执行系统中规则的插件,亦可以作为一个远程系统供业务系统调用. 什么是规则:所有的业务逻辑都可以看做是规则. 引入规则引擎后带来的好处: 1 实现业务逻辑与业务规则的…