<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[菜鸟的学习笔记]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lory17</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lory17]]></copyright><item><title><![CDATA[C/C++变长参数实现log输出]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/77505655</link><guid>https://blog.youkuaiyun.com/lory17/article/details/77505655</guid><author>lory17</author><pubDate>Wed, 23 Aug 2017 14:32:36 +0800</pubDate><description><![CDATA[__VA_ARGS__宏
使用说明
sample code:
vsnprintf和snprintf
使用说明
sample code:
相关测试源码
参考资料]]></description><category></category></item><item><title><![CDATA[C++调用Object-C]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/77365856</link><guid>https://blog.youkuaiyun.com/lory17/article/details/77365856</guid><author>lory17</author><pubDate>Fri, 18 Aug 2017 10:16:54 +0800</pubDate><description><![CDATA[使用背景
调用结构
实现方式
代码详解
编译及运行
使用限制
延伸阅读]]></description><category></category></item><item><title><![CDATA[inline函数用法详解]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/74171059</link><guid>https://blog.youkuaiyun.com/lory17/article/details/74171059</guid><author>lory17</author><pubDate>Mon, 03 Jul 2017 09:17:26 +0800</pubDate><description><![CDATA[inline函数定义
内联函数的编程风格
慎用内联
inline 和 预处理的区别]]></description><category></category></item><item><title><![CDATA[设计模式：组合模式(COMPOSITE)|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62940496</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62940496</guid><author>lory17</author><pubDate>Fri, 17 Mar 2017 22:41:33 +0800</pubDate><description><![CDATA[定义组合模式（Composite Pattern），又叫部分整体模式，是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象，用来表示部分以及整体层次。这种类型的设计模式属于结构型模式，它创建了对象组的树形结构。 
这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。 
我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。介绍意图： 
将对]]></description><category></category></item><item><title><![CDATA[设计模式：桥接模式|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62437867</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62437867</guid><author>lory17</author><pubDate>Thu, 16 Mar 2017 19:59:41 +0800</pubDate><description><![CDATA[定义桥接（Bridge）是用于把抽象化与实现化解耦，使得二者可以独立变化。这种类型的设计模式属于结构型模式，它通过提供抽象化和实现化之间的桥接结构，来实现二者的解耦。 
这种模式涉及到一个作为桥接的接口，使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 
我们通过下面的实例来演示桥接模式（Bridge Pattern）的用法。其中，可以使用相同的抽象类方法但是不同的桥接实现]]></description><category></category></item><item><title><![CDATA[设计模式：适配器模式|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62224270</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62224270</guid><author>lory17</author><pubDate>Wed, 15 Mar 2017 15:07:27 +0800</pubDate><description><![CDATA[定义适配器模式（Adapter Pattern）是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式，它结合了两个独立接口的功能。 
这种模式涉及到一个单一的类，该类负责加入独立的或不兼容的接口功能。举个真实的例子，读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器，再将读卡器插入笔记本，这样就可以通过笔记本来读取内存卡。]]></description><category></category></item><item><title><![CDATA[设计模式：原型模式|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62083053</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62083053</guid><author>lory17</author><pubDate>Tue, 14 Mar 2017 23:12:30 +0800</pubDate><description><![CDATA[定义原型模式（Prototype Pattern）是用于创建重复的对象，同时又能保证性能。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。 
这种模式是实现了一个原型接口，该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时，则采用这种模式。例如，一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象，在下一个请求时返回它的克隆，在需要的时候更新数据库，以此来减少]]></description><category></category></item><item><title><![CDATA[设计模式：抽象工厂模式|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62048252</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62048252</guid><author>lory17</author><pubDate>Tue, 14 Mar 2017 18:30:47 +0800</pubDate><description><![CDATA[定义抽象工厂模式抽象工厂模式（Abstract Factory  
Pattern）是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。在抽象工厂模式中，接口是负责创建一个相关对象的工厂，不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 
介绍意图：提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们]]></description><category></category></item><item><title><![CDATA[设计模式：单例模式|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62047106</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62047106</guid><author>lory17</author><pubDate>Tue, 14 Mar 2017 18:00:23 +0800</pubDate><description><![CDATA[定义单例模式（Singleton Pattern）是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。 
这种模式涉及到一个单一的类，该类负责创建自己的对象，同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式，可以直接访问，不需要实例化该类的对象。 
注意： 
1. 单例类只能有一个实例。 
2. 单例类必须自己创建自己的唯一实例。]]></description><category></category></item><item><title><![CDATA[设计模式：建造者模式|菜鸟教程]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/62047036</link><guid>https://blog.youkuaiyun.com/lory17/article/details/62047036</guid><author>lory17</author><pubDate>Tue, 14 Mar 2017 17:57:59 +0800</pubDate><description><![CDATA[定义建造者模式（Builder Pattern）]]></description><category></category></item><item><title><![CDATA[设计模式：工厂模式]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/61916757</link><guid>https://blog.youkuaiyun.com/lory17/article/details/61916757</guid><author>lory17</author><pubDate>Mon, 13 Mar 2017 14:14:25 +0800</pubDate><description><![CDATA[工厂模式]]></description><category></category></item><item><title><![CDATA[RTMP推流及协议学习]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/61916351</link><guid>https://blog.youkuaiyun.com/lory17/article/details/61916351</guid><author>lory17</author><pubDate>Mon, 13 Mar 2017 13:44:34 +0800</pubDate><description><![CDATA[前期准备
了解RTMP定义
准备RTMPDump中的librtmp
使用openssl中的libssllibcrypto
推流工作
整体框架图
使用libtrmp提供的API
将streaming封装成为RTMP格式
进阶
RTMP client与RTMP server交互流程
RTMPDump源码分析
参考资料]]></description><category></category></item><item><title><![CDATA[RTSP协议学习]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/60144734</link><guid>https://blog.youkuaiyun.com/lory17/article/details/60144734</guid><author>lory17</author><pubDate>Fri, 03 Mar 2017 18:41:23 +0800</pubDate><description><![CDATA[RTSP简介
RTSP和HTTP RTPRTCP的关系
RTSP和HTTP
RTSP和RTPRTCP
RTSP消息
简单的rtsp交互过程
RTSP中常用方法
OPTION
DESCRIBE
SETUP
PLAY
TEARDOWN
SDP协议
RTSP基于libcurl代码实现
参考资料]]></description><category></category></item><item><title><![CDATA[使用HTTP获取 OAuth 2.0 access tokens（Google）]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/54666920</link><guid>https://blog.youkuaiyun.com/lory17/article/details/54666920</guid><author>lory17</author><pubDate>Sun, 22 Jan 2017 10:41:29 +0800</pubDate><description><![CDATA[1.搭建开发环境
2.请求 code
3.请求access token
4.使用refresh token来刷新access token]]></description><category></category></item><item><title><![CDATA[如何将live stream发布到Youtube]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/54617153</link><guid>https://blog.youkuaiyun.com/lory17/article/details/54617153</guid><author>lory17</author><pubDate>Thu, 19 Jan 2017 16:10:41 +0800</pubDate><description><![CDATA[1.搭建开发环境
2.获取用户授权
3.建立LiveBroadCast频道
4.建立streaming通道
5.绑定LiveBroadcast和LiveStreams
6.切换BroadCastLive状态
7.删除liveBroadCast直播频道]]></description><category></category></item><item><title><![CDATA[RTSP to RTMP 基于 Live555]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/52415336</link><guid>https://blog.youkuaiyun.com/lory17/article/details/52415336</guid><author>lory17</author><pubDate>Fri, 02 Sep 2016 16:58:24 +0800</pubDate><description><![CDATA[前期准备：
1.Live555 

2.rtmpdunp


设计思路：

1.使用Live555接收码流
2.将码流封装成RTMP格式
3.使用librtmp将码流推送到直播平台。]]></description><category></category></item><item><title><![CDATA[Media foundation——Media source：Writing a Custom Media Source]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/50502879</link><guid>https://blog.youkuaiyun.com/lory17/article/details/50502879</guid><author>lory17</author><pubDate>Tue, 12 Jan 2016 15:00:21 +0800</pubDate><description><![CDATA[编写自定义的媒体源（Writing a Custom Media Source）


本主题描述如何在微软MF基础上实现自定义媒体源。它包含以下部分：


创建表示描述符开始媒体源

索引
暂停媒体源产生源数据

样本请求分配采样样本流中的间隙
关闭媒体源Live源



创建表示描述符
IMFMediaSource::CreatePresentationDesc]]></description><category></category></item><item><title><![CDATA[Media foundation——Media source：Media Source Events]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/50502712</link><guid>https://blog.youkuaiyun.com/lory17/article/details/50502712</guid><author>lory17</author><pubDate>Tue, 12 Jan 2016 11:23:43 +0800</pubDate><description><![CDATA[媒体源事件（Media source events）


本主题列出由媒体源和媒体流发送的事件。媒体来源还可以发送自定义事件，但不在这里列出。



媒体源事件（Media Source Events）





事件

描述



MEEndOfPresentation
 Event

演示结束。演示中的所有流已到达流的结尾。



MENew]]></description><category></category></item><item><title><![CDATA[Media foundation——Media source：Presentation Descriptors]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/50502053</link><guid>https://blog.youkuaiyun.com/lory17/article/details/50502053</guid><author>lory17</author><pubDate>Tue, 12 Jan 2016 11:09:45 +0800</pubDate><description><![CDATA[表示描述符
一个Presentation是一组相关的共享一个共同的演示时间的媒体流。例如，一个演示可以是来自电影的视频流和音频流。一个表示描述符（Presentation Descriptors）是一个包含一个特定的演示描述的对象。演示描述符用于配置媒体源和一些媒体接收器。
每个演示文稿描述符（Presentation Descriptors）包含一个或多个流描述符的列表。这些用于描述存在pr]]></description><category></category></item><item><title><![CDATA[Media foundation——Media source：Media source object module]]></title><link>https://blog.youkuaiyun.com/lory17/article/details/50498646</link><guid>https://blog.youkuaiyun.com/lory17/article/details/50498646</guid><author>lory17</author><pubDate>Mon, 11 Jan 2016 17:48:07 +0800</pubDate><description><![CDATA[Media Source 对象模型
主要描述在Microsoft Media foundation中media source 的对象模型。一个Media source必须实现两个对象：


一个描述符。用于描述源的内容：包括stream流的个数以及每个stream流的格式。产生元数据的一个（或以上）media stream。
在playback开始之前，Media source不会创建流]]></description><category></category></item></channel></rss>