<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaoluer的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaoluer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaoluer]]></copyright><item><title><![CDATA[使用nginx做为http-flv服务如何解决跨域问题]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/105545337</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/105545337</guid><author>xiaoluer</author><pubDate>Wed, 15 Apr 2020 22:04:42 +0800</pubDate><description><![CDATA[什么是跨域

跨域是指浏览器的同源策略限制，这个策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。如果一个请求url的协议、域名、端口三者之间任意一个与当前页面的url不同即为跨域。

如下图所示即为跨域时的报错：



使用nginx搭建http-flv服务

主要使用了nginx和nginx-http-flv-module模块，具体过程可参考：https://blog.cs...]]></description><category></category></item><item><title><![CDATA[windows 10 x64环境下编译带有ffplay的ffmpeg]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/84714769</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/84714769</guid><author>xiaoluer</author><pubDate>Wed, 12 Jun 2019 07:20:18 +0800</pubDate><description><![CDATA[windows下编译ffmpeg的核心在于要搭建一个类linux的编译环境，换句话说就是需要在windows环境中运行gcc、make等命令工具。本文详细介绍windows下编译环境的搭建与ffmpeg的编译过程，并成功生成ffplay。


编译环境搭建

windows下类linux的编译环境常见的有两种，一种是MinGW，一种是cygwin。下面先简单介绍一下两者的区别。

MinGW与c...]]></description><category></category></item><item><title><![CDATA[时间复杂度O(1), O(n), O(logn), O(nlogn) 表示的具体含义]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/90311273</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/90311273</guid><author>xiaoluer</author><pubDate>Sat, 18 May 2019 09:10:58 +0800</pubDate><description><![CDATA[在描述算法复杂度时，经常用到O(1), O(n), O(logn), O(nlogn)来表示对应复杂度程度, 不过目前大家默认也通过这几个方式表示空间复杂度 。

那么，O(1), O(n), O(logn), O(nlogn)就可以看作既可表示算法复杂度，也可以表示空间复杂度。

大O加上（）的形式，里面其实包裹的是一个函数f(),O（f()）,指明某个算法的耗时/耗空间与数据增长量之间的关系。...]]></description><category></category></item><item><title><![CDATA[对YUV格式的详细分析]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/90269094</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/90269094</guid><author>xiaoluer</author><pubDate>Thu, 16 May 2019 22:35:36 +0800</pubDate><description><![CDATA[YUV数据格式的定义和采集方式

YUV数据格式定义

YUV分为三个分量，“Y”表示明亮度（Luminance或Luma），也就是灰度值；而“U”和“V” 表示的则是色度（Chrominance或Chroma），作用是描述影像色彩及饱和度，用于指定像素的颜色。与我们熟知的RGB类似，YUV也是一种颜色编码方法，主要用于电视系统以及模拟视频领域，它将亮度信息（Y）与色彩信息（UV）分离，没有UV信...]]></description><category></category></item><item><title><![CDATA[Linux线程JOINABLE与DETACHED的区别]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/90178772</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/90178772</guid><author>xiaoluer</author><pubDate>Mon, 13 May 2019 18:50:01 +0800</pubDate><description><![CDATA[Linux线程JOINABLE与DETACHED的区别Linux下两种类型线程的创建joinable属性的线程detached属性的线程代码示例
Linux下两种类型线程的创建
Linux下多线程编程时，线程有两种属性，一种是joinable，一种是detached。
joinable属性的线程
如果是joinable的线程，那么必须使用**pthread_join()来等待线程结束，否则线程所占...]]></description><category></category></item><item><title><![CDATA[MLT框架简介与部分命令解析]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/77945051</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/77945051</guid><author>xiaoluer</author><pubDate>Wed, 10 Apr 2019 14:17:15 +0800</pubDate><description><![CDATA[本文仅仅做为一篇入门文章，带领大家认识一下MLT这个框架（库）。

一、简介

 MLT的英文全称为MLT Multimedia Frameword，翻译过来为MLT多媒体框架。该框架国内用的人比较少，也几乎没有中文资料，本文的目的是带大家简单认识一下这个功能强大的库。

 MLT的官网为：https://www.mltframework.org/， 可以在上面下载最新的源码，...]]></description><category></category></item><item><title><![CDATA[TCP协议可靠传输的实现]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/86442206</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/86442206</guid><author>xiaoluer</author><pubDate>Sun, 13 Jan 2019 23:10:12 +0800</pubDate><description><![CDATA[     TCP协议作为一个可靠的面向流的传输协议，其可靠性和流量控制由滑动窗口协议保证，而拥塞控制则由控制窗口结合一系列的控制算法实现。

一、滑动窗口协议

     关于这部分自己不晓得怎么叙述才好，因为理解的部分更多，下面就用自己的理解来介绍下TCP的精髓：滑动窗口协议。
     所谓滑动窗口协议，自己理解有两点：1. “窗口”对应的是一段可以被发送者发送的字节序列，其连续的范围称之为“...]]></description><category></category></item><item><title><![CDATA[golang版的排序算法实现（冒泡、选择、快速）]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/86322422</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/86322422</guid><author>xiaoluer</author><pubDate>Fri, 11 Jan 2019 22:44:42 +0800</pubDate><description><![CDATA[用golang重写冒泡、选择和快速三种排序算法。

测试输入参数如下所示：


valus := []int{12, 23, 1, 5, 3, 9}

冒泡排序接口：


func bubbleSort(values []int) {
	for i := 0; i &amp;lt; len(values); i++ {
		for j := i+1; j &amp;lt; len(values); j++ {
	...]]></description><category></category></item><item><title><![CDATA[C++中const如何用于函数重载]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/86163448</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/86163448</guid><author>xiaoluer</author><pubDate>Wed, 09 Jan 2019 17:28:40 +0800</pubDate><description><![CDATA[常成员函数和非常成员函数之间的重载

首先先回忆一下常成员函数

声明：&amp;lt;类型标志符&amp;gt;函数名（参数表）const；

说明：

（1）const是函数类型的一部分，在实现部分也要带该关键字。

（2）const关键字可以用于对重载函数的区分。

（3）常成员函数不能更新类的成员变量，也不能调用该类中没有用const修饰的成员函数，只能调用常成员函数。

（4）非常量对象也可以调用常成员...]]></description><category></category></item><item><title><![CDATA[使用ffmpeg命令行实现一入多出转码]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/81346285</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/81346285</guid><author>xiaoluer</author><pubDate>Wed, 28 Nov 2018 17:50:05 +0800</pubDate><description><![CDATA[我们在实际工作中有时会遇到一入多出的转码需求，比如在给播放器提供多种网络环境的播放源选择（如流畅、清晰、高清和超清等）时就会需要这种操作。
在这篇文章中，我们讲一下如何使用一条ffmpeg命令来实现同一个输入源转码输出多路不同视频的功能。]]></description><category></category></item><item><title><![CDATA[ffmpeg命令行map参数的使用]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/81136478</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/81136478</guid><author>xiaoluer</author><pubDate>Sat, 21 Jul 2018 11:04:58 +0800</pubDate><description><![CDATA[介绍

理解-map参数的最好办法就是想像一下怎么去告诉ffmpeg你要从源文件中选择/拷贝哪个流到输出文件。输出文件的stream顺序取决于在命令行中-map的参数顺序。

下面有一些例子。

默认

默认操作（没有指定map参数），比如：


ffmpeg -i INPUT OUTPUT

本质上，是从所有输入中发现“最高质量”（单个）视频输入流和“最高质量”（单个）音频输入流，并“发送”到O...]]></description><category></category></item><item><title><![CDATA[基于FFMPEG的音频编码器]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/81035905</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/81035905</guid><author>xiaoluer</author><pubDate>Fri, 13 Jul 2018 18:19:59 +0800</pubDate><description><![CDATA[本文介绍一个最简单的基于FFMPEG的音频编码器。该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单，但是每一行代码都很重要。通过看本编码器的源代码，可以了解FFMPEG音频编码的流程。本程序使用最新版的类库（编译时间为2014.5.6），开发平台为VC2010。所有的配置都已经做好，只需要运行就可以了。流程（2014.9.29更新）下面附一张使用FFmpeg编码音频的...]]></description><category></category></item><item><title><![CDATA[用ffmepg实现音频重采样]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/81035480</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/81035480</guid><author>xiaoluer</author><pubDate>Fri, 13 Jul 2018 18:03:48 +0800</pubDate><description><![CDATA[1.概述在进行音频播放时，有时音频流不能满足播放要求，需要对声音的相关属性如：通道数，采样率，样本存储方式进行变更播放，也就是音频重采样。ffmpeg提供了SwrContext进行转换。typedef struct SwrContext SwrContext;2.基本概念2.1通道数声音在录制时在不同空间位置用不同录音设备采样的声音信号，声音在播放时采用相应个数的扬声器播放。采用多通道的方式是为了...]]></description><category></category></item><item><title><![CDATA[Qt中无处不在的d指针为何方神圣]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/79380013</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/79380013</guid><author>xiaoluer</author><pubDate>Mon, 26 Feb 2018 17:46:29 +0800</pubDate><description><![CDATA[在研究QCoreApplication类的代码时，无意间弄明白了“d_func()”和“d指针”的来源：class Q_CORE_EXPORT QCoreApplication
#ifndef QT_NO_QOBJECT
    : public QObject
#endif
{
    ……
    Q_DECLARE_PRIVATE(QCoreApplication)
public:
   …...]]></description><category></category></item><item><title><![CDATA[ts、mp4、mov和flv媒体容器封装层的timebase分析]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/79378877</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/79378877</guid><author>xiaoluer</author><pubDate>Mon, 26 Feb 2018 16:38:03 +0800</pubDate><description><![CDATA[在使用ffmpeg封装过程中发现，封装成mp4文件音视频是同步的，但是封装成mpegts文件则有问题，视频播放正常，但音频播放异常，且不同步。所以猜测是封装层的时间基准单位(timebase)在搞鬼。 在此，并没有去深入的分析ffmepg中的源代码，而是简单的修改了一下ffmpeg中的av_dump_format函数，使之把音频的tbn（即封装层的timebase）也打印出来，分析了如下容器：mp...]]></description><category></category></item><item><title><![CDATA[三个基于WebRTC开源MCU框架的横向对比]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/79088416</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/79088416</guid><author>xiaoluer</author><pubDate>Wed, 17 Jan 2018 18:19:46 +0800</pubDate><description><![CDATA[1. licode
官网地址：
http://lynckia.com/licode/index.html

官方demo地址：
https://chotis2.dit.upm.es/

Github地址：
https://github.com/lynckia/licode

Github推荐指数：
1483（star）

功能（官方原文）：
Licode is base]]></description><category></category></item><item><title><![CDATA[使用jitsi官方源安装内网演示环境过程]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/79085539</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/79085539</guid><author>xiaoluer</author><pubDate>Wed, 17 Jan 2018 15:20:58 +0800</pubDate><description><![CDATA[操作系统：ubuntu 16.04 x64


1.安装nginx
sudo apt-get install nginx

2.添加软件库
sudo vim /etc/apt/sources.list
在文件的最下面加上：

deb https://download.jitsi.org stable/

3.添加一个dns 服务地址：


sudo vim /etc/]]></description><category></category></item><item><title><![CDATA[如何使用Android Studio用相同的代码工程生成不同的APP]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/78430191</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/78430191</guid><author>xiaoluer</author><pubDate>Thu, 02 Nov 2017 22:28:58 +0800</pubDate><description><![CDATA[今天由于公司业务需要, 经理让安装两个相同的APP到手机上, 考虑到包名是应用程序的唯一标识, 所以在工程列表的app下的build.gradle里, 把applicationId改成了不同的. 然后再使用新的签名文件(也可以使用同一个签名文件)重新打包, 这样打包出来的APK就可以和其它的项目同时运行在手机上了.]]></description><category></category></item><item><title><![CDATA[libx264预设类参数详解]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/76913764</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/76913764</guid><author>xiaoluer</author><pubDate>Tue, 08 Aug 2017 15:56:11 +0800</pubDate><description><![CDATA[libx264预设类参数详解。]]></description><category></category></item><item><title><![CDATA[ffmpeg常用转码参数解析]]></title><link>https://blog.youkuaiyun.com/xiaoluer/article/details/76913130</link><guid>https://blog.youkuaiyun.com/xiaoluer/article/details/76913130</guid><author>xiaoluer</author><pubDate>Tue, 08 Aug 2017 15:51:33 +0800</pubDate><description><![CDATA[转码命令示例


$ ffmpeg -i input.flv -vcodec h264 -s 960x540 -pix_fmt yuv420p -b 800k -r 25.0 -g 50 /
–acodec aac -ab 64k –ac 2 -ar 44100 -profile:v high -level:v 3.1 -subq 5 -me_method /
umh -me_range 8 -r...]]></description><category></category></item></channel></rss>