自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liwf616的专栏

行者无疆 始于足下

  • 博客(102)
  • 收藏
  • 关注

原创 mac 下ffmpeg enable-libsrt编译方法及问题解决

1. 编译srt1.1 下载及编译srt代码git clone https://github.com/Haivision/srt.gitcd srt./configuremake && make install //或者使用clion的cmake2. 安装ffmepg之间的准备2.1 检查是否安装opensslcmd$ pkg-config --list-all...

2019-08-11 18:42:49 3047

原创 DASH && Nginx && Webrtc && Quic学习资料超链

文章地址:https://github.com/liwf616/awesome-live-streamdash学习资料快速链接fmp4实现开源方式fmp4 nginx实现-nginx-vod-moduledash相关介绍hls vs dashfmp4开源-shaka-packagernginx rtmp -> dashnginx ts-&am

2019-01-03 17:25:49 1407

原创 openrestry 火焰图

1. 安装前的准备1.1 确定/etc/yum.repos.d/CentOS-Debuginfo.repo是否存在.如果不存在,则创建,并写入如下内容# CentOS-Debug.repo## The mirror system uses the connecting IP address of the client and the# update status of each m...

2018-12-15 11:38:36 413

原创 媒体文件格式分析FMP4

媒体文件格式分析之FMP4MP4 中最基本的单元就是Box,它内部是通过一个一个独立的Box拼接而成的。所以,这里,我们先从 Box 的讲解开始,每个 Box 是由 Header 和 Data 组成的,FullBox 是 Box 的扩展,Box 结构的基础上在 Header 中增加 8bits version 和 24bits flags1. 名词解释2. 最小单元Box...

2018-07-19 10:55:41 7753

原创 Nginx stream模块阅读!

Nginx stream模块阅读!ngx_stream_handler.c ngx_stream_init_connection函数 代码解读: 在ngx_stream_optimize_servers里设置有连接发生时的回调函数ngx_stream_init_connection. 创建一个处理tcp的会话对象. 创建ctx数组,用于存储模块的ctx数据,调用handl

2018-02-27 17:39:06 5085 1

原创 NGINX TIME_WAIT的解决办法

NGINX TIME_WAIT的解决办法及TCP状态解析1. 检测TIME_WAIT状态的语句:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'返回结果:TIME_WAIT 1000CLOSE_WAIT 5FIN_WAIT2 20ESTABLISHED 10000LAST_A

2018-01-25 17:30:28 7916

原创 Nginx HLS压测工具之vegeta

HLS压测工具之vegeta1. MAC安装brew update && brew install vegeta2. 构造target.txt创建target.txt文件,内容如下:GET http://test.hlslive.ks-cdn.com/live/test/index.m3u83. 执行vegeta执行:vegeta attack -targets="target.txt" -

2017-11-16 20:26:16 1675

原创 Nginx 反向代理的基本配置及命令解析(以HLS为例子 )

Nginx 反向代理的基本配置及命令解析1.proxy_pass 语法: proxy_pass URL; 配置块:: location, if in location, limit_except  此配置项将当前请求反向代理到URL参数指定的服务器上。协议可以是”http”或”https”。URL可以是主机名或IP地址加端口的形式,例如:proxy_pass http://local

2017-10-22 00:13:58 3463

原创 Nginx Lua 三种重定向的使用及比较

lua 三种重定向的使用及比较1. ngx.exec 语法:ngx.exec(uri, args?) 主要实现的是内部的重定向,等价于下面的rewrite指令:rewrite regrex replacement last;  例子:ngx.exec('/some-location');ngx.exec('/some-location', 'a=3&b=5&c=6');ngx.exe

2017-10-17 00:40:13 17815

原创 Nginx learning 之location及优先级

nginx配置location总结1. 语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ~ pattern 表示区分大小写的正则匹配 location ~* pattern 表示不区分大小写的正则匹配 location ^~ /uri

2017-09-18 17:07:44 509

原创 Nginx Learing - ngx_http_request_t 结构体

ngx_http_request_t

2017-09-13 14:04:31 682

原创 Nginx Rtmp Module - HLS切片和级联播放

Nginx Rtmp Module - HLS切片和播放1、名词解释媒体片段文件(.ts): 媒体片段是由源站生成的,基于编码后的媒体源,并且是由一系列的 .ts 格式的文件组成,其中包含了你想通过 rtmp流携带的 H.264视频和AAC 音频。对于纯音频的直播,切片器可以生产MPEG 基础音频流,其中包含了 ADTS头的AAC音频。HLS直播索引文件(.m3u8): 由源站附带生成保

2017-09-07 21:11:00 8975 2

原创 Nginx Rtmp Learing 之HTTP HOOK回调及unix socket使用

Nginx Rtmp Learing 之HTTP HOOK回调和unix socket使用1. 名词解释LMSS Live Media Streaming Service 直播流媒体服务LMDS Live Media dispatch Service 直播媒体调度服务2. 概述 在nginx的rtmp协议实现中,一个简单的推拉流会被拆分成多个事件(CONNECT,PUBLISH,

2017-09-07 15:48:12 1606

原创 Nginx Rtmp Module Study 之基本数据结构ngx_module_t

Nginx Rtmp Learing 之基本数据结构ngx_module_t1. ngx_module_t的基本结构  对于开发一个模块来说,我们都需要定义一个ngx_module_t类型的变量来说明这个模块本身的信息,从某种意义上来说,这是这个模块最重要的一个信息,它告诉了nginx这个模块的一些信息,配置信息,还有模块上下文信息,都是通过这个结构来告诉nginx系统的,也就是加载模块的上层代码,

2017-09-04 18:47:59 554

转载 用start-stop-daemon启动Nginx

用start-stop-daemon启动Nginx在前面学习Ubuntu apt-get install nginx 创建的nginx启动脚本中,看到start-stop-daemon的用法。迅速查了一下手册(用man start-stop-daemon)。这个程序用来启动和关闭系统级别的进程。下面我用该命令启动我自己编译的nginx程序:start-stop-daemon --start --qu

2016-06-25 11:54:21 2720

转载 Nginx模块开发之最简单的Hello模块

nginx模块开发并不是那么容易, 从行数上来讲, 淘宝给出的tengine给出的那个所谓hello模块的长度也到了245行, 要想真正独立写出这么多代码, 对于我来说是非常难的.245行, 如果是nodejs, 已经可以写一个比较完善的文件服务器了. 要想完全理解这个hello模块, 有c基础的也怕是要花不少时间, 像我这样没有c经验的, 更是难上加难.我决定写一个真正的hell

2016-05-30 13:53:12 5537 5

转载 菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表ngx_chain_t

菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表 ngx_chain_t Author:Echo Chen(陈斌)Email:[email protected]:Blog.csdn.net/chen19870707Date:Nov 6th, 2014 1.缓冲区链表结构ngx_chain_t和ngx_buf_

2016-05-26 13:13:20 2066

转载 nginx rtmp代码架构1 hook点总结

1. 对消息的处理 ngx_rtmp_receive_message里面,对消息的头部h的type做判断之后,会调用cmcf->events[h->type]里面的handler,而这些handler是模块注册的 ngx_rtmp.c里面,解析配置时,可能注册ngx_rtmp_protocol_message_handlerngx_rtmp_amf_message_handler

2015-07-25 17:41:15 1470

转载 Nginx RTMP 功能研究

Nginx-RTMP功能调研1. RTMP协议介绍...22.RTMP server.32.1当前的流媒体server.32.2Wowza功能...33.Nginx-based RTMP server.53.1  Nginx rtmp 功能点...53.2编译nginx rtmp模块...63.3配置以及功能介绍...63.4

2015-06-10 17:43:28 580

转载 FLV视频封装格式详解

OverviewFlash Video(简称FLV),是一种流行的网络格式。目前国内外大部分视频分享网站都是采用的这种格式.File Structure从整个文件上开看,FLV是由The FLV header 和 The FLV File Body 组成.1.The FLV headerFieldTypeComment

2015-05-08 11:10:59 997

转载 【多媒体封装格式详解】--- AAC ADTS格式分析

1.ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资料才知道。一般的AAC解码器都需要把AAC的ES流打包成ADTS的格式,一般是在AAC

2015-05-08 10:03:08 583

原创 Webrtc FrameBuffer实现原理

Webrtc jitterbuffer实现串讲(未完待续)InsertPacketint64_t FrameBuffer::InsertFrame(std::unique_ptr<EncodedFrame> frame) { TRACE_EVENT0("webrtc", "FrameBuffer::InsertFrame"); RTC_DCHECK(frame); i...

2019-09-05 22:00:27 1946

原创 Nginx开启/关闭Core文件及调试

1. Nginx生成core的配置ulimit -a 可以查看系统core文件的大小限制(第一行),core文件大小设置为0, 即没有打开core dump设置。 core file size (blocks, -c) 1024 data seg size (kbytes, -d) unlimited scheduling priority ...

2018-11-08 18:15:02 3401

转载 TCP 的那些事儿(下)

这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资

2017-12-27 16:29:56 159

转载 TCP 的那些事儿(上)

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相

2017-12-27 13:42:33 181

原创 SRS部署环境之HDS(HTTP Dynamic Streaming)

SRS部署环境之HDS(HTTP Dynamic Streaming)拉取gitbub源码: git clone https://github.com/ossrs/srs && cd srs/trunk编译: ./configure --with-hds && make修改配置conf/srs.conf,在 defaultVhost 添加如下配置vhost __def

2017-10-25 17:39:11 988

原创 vim E303问题解决办法

vim E303问题解决办法问题现象:用VIM打开一个文件时,出现一下错误信息提示:E303: Unable to open swap file for "[No Name]", recovery impossible1.在命令行模式下执行::help E3032.输出相关信息如下:Unable to open swap file for "{filename}", recovery impossi

2017-09-26 11:56:15 5531

转载 Smart and Efficient Byte-Range Caching with NGINX & NGINX Plus

When correctly deployed, caching is one of the quickest ways to accelerate web content. Not only does caching place content closer to the end user (thus reducing latency), it also reduces the number

2017-09-13 14:50:55 494

转载 设计模式-适配器模式(Go语言描述)

在上一篇博客设计模式-策略模式(Go语言描述)中我们用最简单的代码用Go语言描述了设计模式中的策略模式,用最简单的实例来描述相信可以让初学者可以很轻松的掌握各种设计模式。继上篇博客,我们接着用同样简单的代码来了解一下适配器模式。适配器模式介绍说起适配器模式,相信很多做Android的同学第一印象就是AdapterView的Adapter,那它是干嘛用的呢?为什么要叫adapter呢

2017-02-27 15:17:56 209

转载 C语言二级指针的介绍和使用

一、一级指针一级指针的简单描述①一级指针是一种以存储其他变量地址为目的的变量。一个T类型的指针变量(一级指针)就是一个存储了某T类型值变量的内存地址的引用。②对指针的解引用(也就是*),是获取指针指向的内存空间中存储的值。③当指针解引用做左值的时候,可以改变指针指向内存空间中存储的值。④指针指向哪个变量,就将该变量的内存地址赋给该指针(用于指针变量做左值

2017-02-24 16:02:58 7939 2

转载 RTMP流媒体播放过程

本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程。注意:RTMP中的逻辑结构RTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection);第二步,建立一个网络流(NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于

2017-02-14 16:51:03 2008

转载 MAC下 Intellij IDEA GO语言插件安装及简单案例

1.下载地址风.fox Intellij IDEA下载(community版 就可以) https://www.jetbrains.com/idea/download/ Go语言 下载 https://golang.org/dl/ Linux 下安装 http://blog.csdn.net/fenglailea/article/details/261639272.安装

2016-12-13 13:33:02 2731

转载 Git 撤销合并

Git 的 revert 命令可以用来撤销提交(commit),对于常规的提交来说,revert 命令十分直观易用,相当于做一次被 revert 的提交的「反操作」并形成一个新的 commit,但是当你需要撤销一个合并(merge)的时候,事情就变得稍微复杂了一些。Merge Commit在描述 merge commit 之前,先来简短地描述一下常规的 commit。每当你做了一批操作(增...

2016-12-09 18:20:48 18706 5

转载 打开GoSublime命令列表的方式

快捷键:ctrl+dot,ctrl+dot这个快捷键,会调出 GoSublime 支持的所有功能,可以直接在这里选择,当然也可以看到每个具体功能对应的快捷键.Sublime Text 2 默认调出所有命令的快捷键是 ⌘⇧P,这里的 ⌘.,⌘. 是对命令进行了过滤出来的。 http://www.sublimetext.com/ GoLang 的Package

2016-12-07 18:32:31 2126

转载 Go学习笔记2之初识Go

代码组织工作空间Go tool先天就是设计来与开源仓库协作的,不管你愿不愿意发布你的代码,构建开发环境的方式是一样的。Go代码必须保存在一个工作空间里, 一个工作空间要有三个根目录src Go源代码pkg Go库文件bin 包含可执行命令一个工作空间的示例:bin/ hello

2016-12-07 17:01:18 339

转载 Linux dig 命令详解(重要)

转载:http://www.ahlinux.com/start/cmd/7749.html之所以会关注到这个命令,是因为最近在研究MySQL的主从复制相关的技术,希望能实现当Slave落后Master比较多的时候自动将Slave从数据源中去除掉的功能。找了很多资料,没有比较好的现成办法。只能参考 percona-toolkit 中的 pt-heartbeat 命令的实现自己来做,这个完全可

2016-12-07 10:35:14 19107

转载 Mac OS X 下如何配置才能通过 sz/rz 命令下载/上传文件

第一步:下载 iTerm2首先明确,使用自带的终端是不行的,我们需要下载一款比终端更强大的 shell 工具:iTerm2   iTerm2下载地址下载下来是个 zip 的压缩包,直接解压就得到了以 .app 为后缀名的可执行文件,双击打开就是 iTerm2 的窗口了,过程中有警告窗口的话同意即可(就相当于是 Win 下的绿色软件一样无需安装)第二步:使用 iTerm2 安

2016-08-03 13:24:40 9227

转载 virtual共享文件件

29down voteacceptedYou have to mount your folder on your VM.First you need to install Guest Additions (although I already did this during the installation).Start your VMDevices > I

2016-08-02 20:45:58 358

转载 【基于libRTMP的流媒体直播之 AAC、H264 推送】

这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析、H264 码流的推送和解析以及网上没说清楚的地方分享给各位。        RTMP 协议栈的实现,Bill 直接使用的 libRTMP,关于 libRTMP 的编译、基本使用方法,以及简单的流媒体直播框架,请参见博文[

2016-06-06 16:28:05 2327

转载 AAC音频格式分析与解码

关于AAC音频格式基本情况,可参考维基百科http://en.wikipedia.org/wiki/Advanced_Audio_Coding AAC音频格式分析AAC音频格式有ADIF和ADTS:ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必

2016-06-06 11:01:04 813

空空如也

空空如也

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

TA关注的人

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