摘要:音频码流(冗余数据占的比例):先简单讲一下对于ADTS header的结构的理解: 1)ADTS header位于每一个aac帧的开头,长度一般是7字节(也可以是9字节的,没见过)。 2)每个aac帧的长度固定为1024个sample(可以是1024*n,没见过n>1的情况)。 3)ADTS hea
阅读全文
07 2017 档案
摘要:遵循:BY-SA 署名-相同方式共享 4.0协议 作者:谭东 时间:2016年10月28日 环境:Windows 7 ADTS是Audio Data Transport Stream的简称。 是AAC音频文件常见的传输格式。 有的时候当你编码AAC裸流的时候,会遇到写出来的AAC文件并不能在PC和手
阅读全文
摘要:http://www.imaotao.cn/project/webrtc-201604
阅读全文
摘要:本文将介绍HTML5中的视音频标签和对应的DOM对象。是相关资料的中文化版本,可以作为编写相关应用的简易中文参考手册。 一些约定 所有浏览器:指支持HTML5的常见桌面浏览器,包括IE9+、Firefox3.5+、Chrome3.0+、Oprae10.5+、Safari3.0+等等,以及常见的移动平
阅读全文
摘要:ffmpeg 翻译文档 (参考源文件ffmpeg-all 包含重要组件) 目录: 1 命令语法 2 描概览 3 详细说明 4 流的选择(指定) 5 选项 技提示(原版已废弃) 6 例子 7 语法 8 表达式计求值 9 OpenCL选项 10 编码选项 11 解码器 12 视频解码 13 音频解码 1
阅读全文
摘要:16 音频编码器 介绍当前可用的音频编码器 aac AAC(Advanced Audio Coding )编码器 当前原生(内置)编码器还处于实验阶段,而且只能支持AAC-LC(低复杂度AAC)。要使用这个编码器,必须选择 ‘experimental’或者'lower' 因为当前还处于实验期,所以很
阅读全文
摘要:1 OpenVCS - Open Source Video Conferencing Server it is used as Multipoint Control Unit (MCU) manager. The application can managed any number of MCU (
阅读全文
摘要:采用下面的方法。重新编译了一下依赖的库,OK了。 问题描述: 今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示: 在ErrorList里面列出了34个链接错误信息,但仔细看的话,其实很多都是重复的,只有两三个外部符号未正确解析,如下: "pu
阅读全文
摘要:一共有2种AAC头格式,一种是StreamMuxConfig,另一种是AudioSpecificConfig 1、AudioSpecificConfig 读写header的代码参考 ffmpeg libavcodec\aacenc.c put_audio_specific_config() ffmp
阅读全文
摘要:什么是C++0x? C++0x是C++最新标准标准化过程中的曾用名,在这一系列文章中我们将介绍最新标准添加的一系列新的语言特性。在2011年9月份,C++0x正式由官方发布并命名C++11,现在很多编译器已经支持了部分C++11特性。 C++11包括大量的新特性:主要特征像lambda表达式和移动语
阅读全文
摘要:在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。 auto 在C++11之前,auto
阅读全文
摘要:今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector<struct> mFriendList;...std::vector<struct>::iterator
阅读全文
摘要:在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频会议开发当中,我们的开发效率肯定会事半功倍,下面我们列举一下视频会议相关的十大开源项目,并对其重要性及
阅读全文
摘要:https://www.zhihu.com/question/20629995
阅读全文
摘要:通常来说AAC的头信息在编解码过程中是可以获取到的,但今天需要根据音频参数生成相应的AAC头。项目中使用的是AAC_LC,今天先对它的结构进行分析。 项目中使用ffmpeg进行音频编码,音频编码库为FAAC,好吧,直接看代码吧。 ffmpeg调用Faac_encode_init()初始化编码器;在F
阅读全文
摘要:AAC格式里有个复杂的AudioSpecificConfig, 在FLV格式里称为AAC sequence header。在正式播放ADTS AAC数据包之前,需要用AudioSpecificConfig生成一个audio_tag交给播放器。 其实AudioSpecificConfig的内容,完全可
阅读全文
摘要:参考资料: AAC以adts格式封装的分析:http://wenku.baidu.com/view/45c755fd910ef12d2af9e74c.html aac编码介绍:http://wenku.baidu.com/view/0de48034f111f18583d05a65.html AAC音
阅读全文
摘要:一SADTS格式: ADTS的全称是Audio Data Transport Stream。是AAC音频的传输流格式。 AAC音频格式在MPEG-2(ISO-13318-7 2003)中有定义。AAC后来又被采用到MPEG-4标准中。 1. adts_sequence() { while (next
阅读全文
摘要:一共有2种AAC头格式,一种是StreamMuxConfig,另一种是AudioSpecificConfig 1、AudioSpecificConfig 读写header的代码参考 ffmpeg libavcodec\aacenc.c put_audio_specific_config() ffmp
阅读全文
摘要:static int h264_parse(Track *tr, uint8_t *data, size_t len) { h264_priv *priv = tr->private_data; // double nal_time; // see page 9 and 7.4.1.2 size_t
阅读全文
摘要:H.264 RTPpayload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: + + |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | + + F: 1 个比特(禁
阅读全文
摘要:RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为
阅读全文
摘要:—— 2017-2-12 更新RTMP 协议整理了一下,包括rtmp 消息类型,rtmp 如何分块,rtmp分块例子。 用脑图整理了一下,使用Xmind 打开,URL: https://github.com/gezhaoyou/RtmpMindmap rtmp 消息类型 Paste_Image.pn
阅读全文
摘要:我们知道, RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议,做流媒体传输方面的应用离不开RTP协议的实现及使用,为了更加快速地在项目中应用RTP协议实现流媒体的传输,我们一般会选择使用一些RTP库,例如使用c++语言编写的JRTP
阅读全文
摘要:名称 librtmp − RTMPDump Real-Time Messaging Protocol API 库 RTMPDump RTMP(librtmp, -lrtmp) 简介 #include<librtmp/rtmp.h> 描述 实时流协议(Real-TimeMessaging Protoc
阅读全文
摘要:这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析、H264 码流的推送和解析以及网上没说清楚的地方分享给各位。 RTMP 协议栈的实现,Bill 直接使用的 libRTMP,关于
阅读全文
摘要:视频、音频打时间戳的方法 视频、音频打时间戳的方法 http://blog.csdn.net/wfqxx/article/details/5497138 1. 视频时间戳 pts = inc++ *(1000/fps); 其中inc是一个静态的,初始值为0,每次打完时间戳inc加1. 在ffmpeg
阅读全文
摘要:一、RTP协议分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议
阅读全文
摘要:AAC编码后数据打包到FLV很简单。1. FLV音频Tag格式 字节位置 意义0x08, // 0, TagType0xzz, 0xzz, 0xzz, // 1-3, DataSize, 0xzz, 0xzz, 0xzz, 0xzz, // 4-6, 7 TimeStamp | TimeStampE
阅读全文
摘要:AAC编码后数据打包到FLV很简单。1. FLV音频Tag格式 字节位置 意义0x08, // 0, TagType0xzz, 0xzz, 0xzz, // 1-3, DataSize, 0xzz, 0xzz, 0xzz, 0xzz, // 4-6, 7 TimeStamp | TimeStampE
阅读全文
摘要:流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、 IP电话等应用场合的技术基础。RTP是进行实时流媒体传输的标准协议和关键技术,本文介绍如何在Linux下利用JRTPLIB进行实时流媒体编程。 随着Internet的日益
阅读全文
摘要:http://my.oschina.net/jerikc/blog/501948#OSC_h3_13 使用librtmp进行H264与AAC直播 发表于5个月前(2015-09-06 23:19) 阅读(1276) | 评论(0) 11人收藏此文章, 我要收藏 赞0 http://my.oschin
阅读全文
摘要:RTMPDump主页 ,RTMPDump库主要包含三部分: 1、一个基本的客户端程序 2、两个服务器程序(rtmpsrv、rtmpsuck) 3、一个支持rtmp协议的库—librtmp 下载RTMPDump最新源码,可以通过git拉取master分支上的最新代码: 或者下载以前版本的代码— Dow
阅读全文
摘要:需要编译libRTMP,首先需要安装配置编译环境。网上能够找到的资料多是在Windows环境编译。这里介绍一下在Linux系统中编译安装libRTMP,一来给后来者一个参考,二来也给自己做一个备忘录。 编译libRTMP之前,需要安装下面三个软件:openssl , zlib, libssl-dev
阅读全文
摘要:#ifndef _HIK_EVENT_H_ #define _HIK_EVENT_H_ #ifdef _MSC_VER #include <Windows.h> #define hik_event_handle HANDLE #else #include <pthread.h> typedef st
阅读全文
摘要:条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。举个简单的例子,应用程序A中包含两个线程t1和t2。t1需要在bool变量test_cond为true时才能继续执行,而test_cond的值是由t2来改变的,这种情况下,如何来写程序呢?可供选择的
阅读全文
摘要:最近公司开发新项目,web server使用nginx,趁周末小小的研究了一下,一不小心踩了个坑吧,一直404 not found!!!!!当时卡在location和root中,但是网上却比较少聊这方面的关系,一般都是聊location匹配命令(这里可以看看http://www.nginx.cn/1
阅读全文
摘要:H264的RTP中有三种不同的基本负载(Single NAL,Non-interleaved,Interleaved) 应用程序可以使用第一个字节来识别。 在SDP中也说明了本次会话的属性 SDP 参数 下面描述了如何在 SDP 中表示一个 H.264 流:. "m=" 行中的媒体名必须是 "vid
阅读全文
摘要:1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上
阅读全文
摘要:H264的RTP负载打包的数据包格式,分组,分片 1. RTP数据包格式 RTP报文头格式(见RFC3550 Page12): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 12 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+
阅读全文
摘要:引用:http://blog.csdn.net/perfectpdl/article/details/6633841 一. h264基础概念 1、NAL、Slice与frame意思及相互关系 1 frame的数据可以分为多个slice.每个slice中的数据,在帧内预测只用到自己slice的数据,
阅读全文
摘要:最近在做基于SIP的VoIP通信研究,使用Wireshark软件可以对网络流量进行抓包。 VoIP使用RTP协议对语音数据进行传输,语音载荷都封装在RTP包里面。要对传输中的语音进行截获和还原,需要通过Wireshark对RTP包进行分析和解码。该过程如下: 1.打开截获的pcapng文件,点击Te
阅读全文
摘要:抓到完整的流媒体包之后,用wireshark打开,其中的包可能不会自动映射成RTP+AMR/H263/H264的包,做如下修改操作即可:1. 把UDP 包解析成RTP/RTCP包。选中UDP包,右键,选择Decode As,选RTP2. 把RTP Payload映射成实际的媒体格式。首先查看RTSP
阅读全文
摘要:关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 目录 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案 目录 安装VC reditexe程序解决 安装KB2999226补丁程序 更新到Win7 SP1 无法安装更新解决方案-删除目录
阅读全文
摘要:HTTP服务端JSON服务端 最后更新日期: 2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易实现HTTP服务和JSON服务,这里介绍CPPCMS开发环境的搭建。写一个CPPCMS测试程序,它建立
阅读全文
摘要:原始字面量很容易理解,即不进行转义的完整字符串。 最近看了看Python,其中讲到了原始字符串。 Both string and bytes literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are
阅读全文
摘要:标题:CPPCMS库在Windows下的使用时间:2012-7作者:Kagula环境:[1]WinXP SP3[2]VisualStudio2008 SP1[3]ZLib 1.2.7[4]PCRE 8.31[5]Python 2.7.3第一步:配置编译环境ZLib库[1-1]进行VS2008命令行模
阅读全文
摘要:How to build CppCMS 1.x.x Requirements Mandatory Requirements Recommended Dependencies Suggested Dependencies for Common Linux Distributions Notes for
阅读全文
摘要:我的环境为: Win764 + VS2005 + zlib1.2.8 zlib1.2.8我使用VS2010来编译。 我导入zlib库的代码如下: #include "zlib128/zlib.h"// #pragma comment(lib, "zlib128/zlibwapi.lib") // 链
阅读全文
摘要:1、CppCMS简介 CppCMS是一个C++的Web开发框架(不是一个CMS)。它不同于大多数其他Web开发框架,如巨蟒Django , Java的Servlets ,或C++ Wt因为它在设计和调整来处理极高的负荷,而且它的目的是发展的网站,而不是“GUI-Like” Web应用程序。[1] C
阅读全文
摘要:一、下载并解压:boost1.64.0:http://www.boost.org/users/history/version_1_64_0.html 二、以管理员权限运行VS2015命令行工具 三、cd到boost解压目录 四、运行bootstrap.bat生成bjam.exe编译工具 五、使用bj
阅读全文
摘要:生成文件命名规则:boost中有许多库,有的库需要编译、而有的库不需要编译,只需包含头文件就可以使用。编译生成的文件名字普遍较长,同一个库根据编译链接选项不同,又可以生成多个不同名字的文件。生成的文件名字是很长,可是这样带的信息才多,也就容易识别出用途。其实生成文件的名字遵循一定的规则,有着固定的格
阅读全文
摘要:RCF(远程调用框架)是一个可以移植的C++进程间通信框架,使用C++语言特性,提供了一个简单高效的编写分布式C++软件的途径。RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORBA,DCOM,.NETRemoting,WCF,WS-*,等所支持的面向对象方式不一样,RCF提供了
阅读全文
摘要:现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方。那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口。 在对大量框架进行调研后,决定使用RCF替换COM接口。 RPC通信框架 为什么选择RCF 经过各项对
阅读全文
摘要:现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical)。我们在常见的开源协议如BSD, GPL, LGPL, MIT等都是OSI批准的协议。如果要开
阅读全文
摘要:在使用VC 2005 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated 出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、
阅读全文
摘要:禁用所有编译器警告 当“解决方案资源管理器”中有项目选中时,在“项目”菜单上单击“属性”。 单击“编译”选项卡。 选中“禁用所有警告”复选框。 禁用单个编译器警告 在“解决方案资源管理器”中选定一个项目,然后在“项目”菜单中单击“属性”。 单击“编译”选项卡。 在“默认编译器选项”表中,将该警告的“
阅读全文
摘要:当项目引用到外部源代码后,经常出现4819错误,警告信息如下: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失. 通常的方法是在编译选项中去加个选项,方法如下: 配置属性--c++--命令行 加上 /wd4819
阅读全文
摘要:在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,更麻烦的是还有可能造成自己代码中产生的警告被淹没在多过的无关警告中,而被忽略掉的情况。 所以要想办法关闭这
阅读全文
摘要:一直以来我只知道vc设置命令行编译环境的批处理命令是%VS140COMNTOOLS%/Common7/Tools下的vsvars32.bat,(%VS140COMNTOOLS%为定义vs2015公共工具程序位置的环境变量,命令行窗口输入set就能找到,vs2010的对应定义为%VS100COMNTO
阅读全文
摘要:在公司使用C++ 做开发,公司的大拿搭了一个C++的跨平台开发框架。在C++开发领域我还是个新手,有很多知识要学,比如Dll库的开发。 参考了很多这方面的资料,对DLL有一个基本全面的了解。有一个问题让我有点困惑,普通的导入导出C++类的方式都是使用_declspec(dllexport) /_de
阅读全文
摘要:http://doc.oschina.net/grpc?t=57966
阅读全文
摘要:获取gRPC源码 gRPC是开源框架,项目代码在github上,所以首先要安装github。github安装后,在指定文件夹中,执行git命令就可以获取gRPC的所有源码。 git clone https://github.com/grpc/grpc.git cd grpc git submodul
阅读全文
摘要:环境: win7_x64,VS2015 开始: 一、安装工具 1. 安装cmake 2. 安装ActivePerl 3. 安装golang 4. 安装nasm 验证安装是否安装成功: cmake -version perl -version go version nasm -v 如果出现错误,请检查
阅读全文
摘要:1.获取源码:位于github上 电脑装有git的直接克隆,未装git下载压缩包也可以 git clone https://github.com/grpc/grpc.git cd grpc git submodule update --init 这条命令在我电脑上不起作用,我采用的办法是,对着grp
阅读全文
摘要:所需工具 : cmake for windows 和 git for windows 原理:protobuf 是google的一个开源项目,其源代码在github上可以下载到,并且源码都采用cmake来构建,所以我们可以把源码下载到本地,然后了利用cmake构建本地工程,然后编译. 步骤一:下载源码
阅读全文
摘要:此文档是windwos grpc c++ 编译 ,基于 vs2015 编译完成 获取gRPC源码 gRPC是开源框架,项目代码在github上,所以首先要安装github。github安装后,在指定文件夹中,执行Git命令就可以获取gRPC的所有源码。 git clone https://githu
阅读全文
摘要:开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。今天无意中发现了Git的git submodule命令,之前的问题迎刃而解了。 添加 为当前工程添加submodule,命令如下: 其中,仓库地址是指子模块仓库地址,路径指将子模
阅读全文
摘要:子模块 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者
阅读全文
摘要:Simple Rtmp Server是一个国人编写的开源的RTMP/HLS流媒体服务器. 功能与nginx-rtmp-module类似, 可以实现rtmp/hls的分发. 有关nginx-rtmp-module的可参照: http://blog.csdn.NET/redstarofsleep/art
阅读全文
摘要:一、用户对动态PHP网页访问过程 用户浏览器发起对网页的访问:http://192.168.1.103/index.php 用户和nginx服务器进行三次握手进行TCP连接(忽略包括nginx访问控制策略、nginx防火墙等访问控制策略) 第一步:用户将http请求发送给nginx服务器 第二步:n
阅读全文
摘要:Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrappe
阅读全文
摘要:安装过程中参考:张宴 http://blog.s135.com/nginx_php_v5/nginx对我来说是一个新的内容,安装的包比较多,在经过了一段时间对nginx的了解之后,才真正的配置成功,本文在经过第二轮的nginx配置学习过程中,不断的完善,不断的理解。对以后再次配置是一个很好的总结。
阅读全文
摘要:由于最近工作的需要,本人学习了一下利用高性能web server - Nginx,来发布C/C++编写的fastCGI程序,详细细节如下。 1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道。 FastCGI程序 - 常驻型CGI程序,它是语言无关的、可伸缩架构的CGI
阅读全文
摘要:http://www.howtocn.org/nginx:nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88:standardhttpmodules:fastcgi#fastcg
阅读全文
摘要:使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可。特别是它的配置,有点像写程序一样,每行命令结尾一个";"号,语句块用"{}"括起来。 配制好,直接nginx -t 检查配制情况,配制成功,直接运行:service nginx reload .服务器没有任何宕机情况下,实现平
阅读全文
摘要:这篇文章主要介绍了Nginx中的root&alias文件路径及索引目录配置,顺带讲解了root和alias命令的用法,需要的朋友可以参考下 这篇文章主要介绍了Nginx中的root&alias文件路径及索引目录配置,顺带讲解了root和alias命令的用法,需要的朋友可以参考下 root&alias
阅读全文
摘要:一、RTMP、RTSP、HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播用 HTTP。下面分别介绍下三者的特点。 1,RTMP协议 (1)是流媒体协议。 (2)RTMP协议是 A
阅读全文