自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (3)
  • 收藏
  • 关注

翻译 GStreamer基础教程15——继承Clutter

Clutter是一个开源的库,用来创建快速、可移植和动态的GUI。GStreamer可以通过cluttersink这个element把clutter集成进来,允许视频像纹理一样使用。

2014-03-24 13:16:00 3854

翻译 GStreamer基础教程14——常用的element

本教程给出了一系列开发中常用的element。

2014-03-23 17:21:40 21997 1

翻译 GStreamer基础教程13——播放速度

本教程会展示如何来获得快进,倒放和慢放的效果以及如何进行逐帧的跳跃。

2014-03-22 11:26:09 9589 1

翻译 GStreamer基础教程12——流

直接播放Internet上的文件而不在本地保存就被称为流播放。我们在前面教程里已经这样做过了,使用了http://的URL。

2014-03-21 10:38:45 21260 3

翻译 GStreamer基础教程11——调试工具

有时我们的应用并没有按照我们的预期来工作,并且在总线上获得的错误信息也没有足够的内容。这时我们该怎么办呢?幸运的时,GStreamer自身提供了大量的调试信息,通常这些信息会给出一些线索,指向出错的地方。

2014-03-20 11:46:46 15733 2

翻译 GStreamer基础教程10——GStreamer工具

GStreamer提供了一系列方便使用的工具。

2014-03-19 12:00:06 26199 7

翻译 GStreamer基础教程09——收集媒体信息

有时你需要快速的了解一个文件(或URI)包含的媒体格式或者看看是否支持这种格式,GStreamer提供了一个工具可以帮你做这些。

2014-03-18 10:58:28 6802

翻译 GStreamer基础教程08——pipeline的快捷访问

GStreamer建立的pipeline不需要完全关闭。有多种方法可以让数据在任何时候送到pipeline中或者从pipeline中取出。

2014-03-17 11:59:21 15742 3

翻译 GStreamer基础教程07——多线程和Pad的有效性

GStreamer会自动处理多线程这部分,但在有些情况下,你需要手动对线程做解耦。

2014-03-16 10:58:08 18582 8

翻译 GStreamer基础教程06——媒体格式和pad的Capabilities

Pad的Capabilities是一个GStreamer element的基础,因为framework大部分时间是自动处理的,所以我们几乎感觉不到它的存在。

2014-03-15 23:16:54 12481 1

翻译 GStreamer基础教程05——集成GUI工具

本教程展示了如何在GStreamer集成一个GUI(比如:GTK+)。最基本的原则是GStreamer处理多媒体的播放而GUI处理和用户的交互。

2014-03-14 09:44:10 9653 8

原创 iOS设备是否越狱的判断代码

苹果是非常看重产品的安全性的,所以给用户设计了一套复杂的安全机制。这让喜爱自由,崇尚一切开放的程序员们极度不爽,于是越狱就成了苹果和黑客们反复斗法的场所。总体来说,越狱可以让我们随意安装、共享应用,但确实也降低了设备的安全性,会给一些恶意应用提供方便之门。      有时我们的应用希望知道安装的设备是否已经越狱了,显然,苹果官方不会给出解决方案来的,那么我们怎么办呢?因为越狱后会自动安装cyd

2014-03-13 12:33:13 30354

原创 杂谈iOS7.1

苹果推出了iOS7.1,当然是第一时间升级。

2014-03-12 14:53:51 1985

翻译 GStreamer基础教程04——时间管理

本教程主要讲述一些和时间相关的内容。主要包括:1. 如何问pipeline查询到流的总时间和当前播放的时间2. 如何在流内部实现跳转功能

2014-03-11 10:48:40 14729 3

翻译 GStreamer基础教程03——动态pipeline

本教程介绍pipeline的一种新的创建方式——在运行中创建,而不是在运行前一次性的创建结束。

2014-03-10 21:09:26 25262 5

翻译 GStreamer基础教程02——GStreamer概念

上一个教程演示了如何自动生成一个pipeline。这次我们打算用一个个element来手动搭建一个pipeline。我们这个教程会演示:1. 什么是GStreamer的element以及如何建立一个element2. 如何在element直接建立连接3. 如何客制化element的行为4. 如何监视总线上的错误并获得相关的信息      手动建立Hello World

2014-03-09 22:33:48 28331 2

原创 iOS的category和protocol

很多时候我们需要扩展一下现有的类,增加一点功能。如果有源码,修改一下即可,如果是第三方的库,就要麻烦一些。在C++中我们使用类继承的方法来实现,在ObjectiveC中当然也可以这么做,不过ObjectiveC还提供的一种简单实用的方法,就是category,对于一些很微小的功能增加,或者就是增加一个方法方便使用,用category是最轻量级的。

2014-02-22 10:46:58 3875

翻译 GStreamer基础教程01——Hello World

目标      对于一个软件库来说,没有比在屏幕上打印出Hello World更近直观的第一印象了。因为我们是在和一个多媒体的framework打交道,所以我们准备播放一段视频来代替Hello World。不要被下面的代码吓唬住了——真正起作用的也就四行而已。剩下的都是资源管理的代码,C语言嘛,就是有这个麻烦。不多说了,准备你的第一个GStreamer应用吧…...Hello World

2014-02-19 09:51:01 47336 14

原创 iOS中如何呼出另一个应用

我们经常会遇到在一个应用里面呼出另一个应用的需求,比如在文档里面点击地址,调用safari来打开网页;比如在文件浏览器里面点击某种文件,自动激活一个应用来打开文件。        iOS里面对于这样的需求使用URL来实现,把其他的应用看成一种资源,本质上就是调用系统资源。        我们有两个应用App1和App2,在App2里面呼出App1,那么首先要配置App1,让系统认识App1

2014-02-07 17:48:39 11766 2

原创 iOS多线程系列(3)

在2011的WWDC上,苹果推出了GCD,从此多线程增加了一种新的方法。GCD要求运行在iOS4.0版本以上或者OS X10.6版本以上。GCD是Grand Central Dispatch的缩写,是一组用于实现并发编程的C接口。GCD是基于Objective-C的Block的特性开发的,基本的业务逻辑和NSOperation很像。都是添加一个任务到一个队列,由系统来负责线程的生成和调度。因为直接

2014-02-03 23:23:03 7634

原创 iOS多线程系列(2)

前面了iOS的NSThread方法来实现多线程,这篇就简单的讲讲NSOperation和NSOperationQueue。      NSOperation是一个抽象类,定义一个要执行的任务。NSOperationQueue是一个任务队列,帮助对NSOperation所定义的任务进行管理。当任务加入到任务队列后,会自动按照优先级和依赖关系自动运行。

2014-01-29 21:33:04 1754

原创 iOS多线程系列(1)

多线程这个概念的接触是蛮早的时候了,当时还是单核单CPU的时候,Thread这个概念已经出现了,记得较多的是时间片轮流,线程可以优先级抢占,但一次只能运行一个线程,实际上多线程是不能真正并行处理的,只是宏观上表现的多线程在齐头并进。现在硬件进步了很多,多核的CPU时代来临了,于是线程开始了真正意义上的并行处理,多线程也作为越来越重要的一个部分需要掌握。

2014-01-28 11:44:09 2889

原创 iOS事件拦截处理

前面分析了一通iOS事件的分发,主要介绍了事件如何找到处理的view,又是如何按照responder chain逐级传递的。这篇文章主要介绍iOS事件的拦截以及特殊处理。

2014-01-26 13:24:37 14300 1

原创 iOS6和iOS7代码的适配(5)——popOver

popOver这个空间本身是iPad only的,所以iPhone上见不到,我记得微信上有个这样的弹出框,有扫一扫等几个菜单项,估计这是腾讯自己实现的,用于菜单的扩展。        popOver从iOS6到iOS7最大的变化还是扁平化,除此之外是背景改成了白色。如果你的popOver里面是一个tableView的话,那么自动会是一个半透明的显示,如果是自定义的一些内容,推荐也采用半透明的显

2014-01-26 10:38:35 4093

原创 iOS的事件分发

移动平台

2014-01-25 20:29:47 11018

原创 iOS中的retainCount

我们都知道iOS中采用引用计数的技术来管理内存,当一个对象没有任何一个地方引用的时候会自动释放,此时的retainCount为0,而且提供了一个-(NSInteger)retainCount的方法来获得对象当前的持有数。     这个概念清楚而明确,不过,让我们看两段代码: NSNumber *number = [NSNumber numberWithInt:1]; NSLo

2014-01-13 22:21:34 13622 1

转载 IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)

2012-11-21 20:02 5402人阅读 评论(8) 收藏 举报目录(?)[+]概述:在iOS6之前的版本中,通常使用 shouldAutorotateToInterfaceOrientation 来单独控制某个UIViewController的方向,需要哪个viewController支持旋转,只需要重写shouldAutorotateToInte

2014-01-10 17:04:06 2489 1

原创 iOS6和iOS7代码的适配(4)——tableView

iOS7上不少控件的样子有了变化(毕竟要扁平化嘛),不过感觉变化最大的肯定非tableView莫属。因为这个控件的高度可定制性,原先是使用及其广泛的,这样的一个改变自然也影响颇大。      1.accessoryType      tableViewCell中变化最大的的accessoryType是UITableViewCellAccessoryDetailDisclosureButto

2014-01-09 22:38:20 11416

原创 iOS真机UI调试利器——Reveal

做iOS的开发,UI是非常非常重要的一环。调试时我们一般用模拟器,提交前用真机做测试。

2014-01-08 14:21:24 65548 22

原创 iOS6和iOS7代码的适配(3)——坐标适配

由于iOS7里面status bar和视图是重叠在一起了,所以应用的y坐标就没法和以前一致了,需要重新计算设定。基本上,你的应用用Xcode5运行一下就能看见这个问题,这里写了一个最简单的例子,一个View上加了一个Label控件,分别在iOS6和iOS7的模拟器上的样子。      从图上明显可以看到,iOS7上的应用y坐标起始计算点是从屏幕顶点算起,而iOS6是从status ba

2014-01-07 13:36:32 11118

原创 iOS6和iOS7代码的适配(2)——status bar

用Xcode5运行一下应用,第一个看到的就是status bar的变化。在iOS6中,status bar是系统在处理,应用

2014-01-04 15:45:50 10978 1

原创 iOS6和iOS7代码的适配(1)

苹果的iOS7推出后,对于所有的应用来说都提出了一个天然的需求——适配不同版本的SDK。目前来说,用iOS6的SDK生成的应用,可以在iOS7的系统上跑,UI上也保持了原来的风格样式,这是苹果做的向下兼容,不过不要小看苹果推行iOS7的决心——苹果发布消息,2014年2月1日开始,AppStore上不接受不是Xcode5的提交。      这样,苹果给所有的开发者留下的就是华山一条路了——升级

2014-01-03 22:03:48 15673

原创 深入Blocks分析

1.简介      从iOS4开始,苹果引入了这个C语言的扩充功能“Blocks”,在一些特定的场景下也是一把利刃。我前面一篇博客中初步介绍了Blocks这个东西,主要是语法的介绍(《iOS中Blocks的介绍》)。      我曾经看见了老外的一个系列的Blocks介绍,很有深度(A look inside blocks:Episode 1,A look inside block

2013-12-31 17:26:10 2545 2

原创 iOS中Blocks的介绍

1. 什么是Blocks      Blocks是C语言的扩充功能。如果用一句话来概括就是:带有自动变量的匿名函数。      第一次看见Blocks的时候,感觉很类似C语言的函数指针,尤其是Block类型变量,更是有极强的相似度。但Blocks不是一个指针,而是一个不带名字的函数,它允许开发者在两个对象之间将任意的语句当作数据进行传递,同时它又能获得上下文的信息(闭包Closure),所

2013-12-28 14:29:30 4768 2

翻译 GStreamer iOS教程5——一个完整的播放器

1. 目标      本次教程主要是演示一下在iOS平台上GStreamer都能实现什么样的功能,具体的知识和iOS教程4相比没太多增加。      这个应用仅仅是演示了播放器的一些功能,并不是一个完整的应用,不能用于上传AppStore。2. 介绍      前一个教程已经实现了基本的播放器,这里只是简单的增加了一些周边功能。最主要的是增加了播放媒体的选择和在播放时不允许屏幕保护

2013-12-27 10:04:38 2892 1

翻译 GStreamer iOS教程4——一个基础的播放器

1. 目标      本教程最终会在你的iOS设备上播放一个在Internet上的流媒体。它展示了:UI上如何进行刷新如何实现时间进度条如何获得媒体的尺寸并适配显示层      本教程同样需要在Basic教程的前继内容,包括playbin2如何播放媒体和如何处理网速不稳定的问题。2. 介绍      在上一篇教程里,我们已经实现了几乎所有的播放器所需要的元素。其

2013-12-26 12:58:03 4204 4

翻译 GStreamer iOS教程3 —— 视频

1. 目标      到目前为止,所有的GStreamer都是靠video sink来创建一个窗口并显示视频内容的(除了Basic教程里面的第5讲)。但在iOS系统里面video sink不能创建自己的窗口,所以必须提供一个绘制层。本教程会讲述如何在Xcode的IB工具里面创建一个绘制层并传给GStreamer。2. 介绍      由于iOS没有提供窗口系统,GStreamer的vi

2013-12-25 13:37:45 3720

翻译 GStreamer iOS教程2 —— 运行pipeline

GStreamer iOS 教程2

2013-12-24 15:29:14 3532

翻译 GStreamer iOS教程1 —— GStreamer连接

GStreamer是相当高大上的一个流媒体应用程序开发框架,目前中文的资料不多,自己在学习中诞生了一个把官方的Tutorial翻译成中文的一个念头,一方面可以推广这个东西,让其他有兴趣的程序员快速上手,另一方面也能让自己得到锻炼。在这里立个碑,希望自己能坚持下去。       术语方面我会采用英文表述,方便交流和沟通。下面是第一篇的正文:1. 目标        第一个iOS的教程

2013-12-23 15:00:26 4682 2

原创 GStreamer iOS SDK的安装

1.    背景介绍        GStreamer是目前比较热火的创建流媒体应用程序的框架,建立在GObject的基础上。其基本设计思想来自于俄勒冈(Oregon)研究生院有关视频管道的创意,同时也借鉴了DirectShow的设计思想。 2.    下载SDK        GStreamer目前版本发展非常迅速,已经到达了1.2,但提供下载的编译好的SDK还是0.10版本的。

2013-12-23 13:25:33 4557 2

GStreamer playbin2内部拓扑图

Playbin2的内部拓扑图,这对于了解这个复杂的element有极大的帮助。对于自己手动搭建pipeline也有相当大的参考意义

2014-03-20

Android小知识整理

常见,实用的android编码小技巧,涵盖常见的几个方面

2012-12-26

vivi bootloader

linux下经典的vivi bootloader

2012-12-26

空空如也

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

TA关注的人

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