随笔分类 -  C++

摘要:ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。 记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资料才知道。一般的AAC解码器都需要把AAC的ES流打包成ADTS的格式,一般是在AAC ES流前添加7个字节的A... 阅读全文
posted @ 2018-04-26 18:20 poisson_notes 阅读(1200) 评论(0) 推荐(0)
摘要:编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件)。 一个现代编译器的主要工作流程如下: 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可... 阅读全文
posted @ 2018-02-26 17:49 poisson_notes 阅读(6486) 评论(0) 推荐(0)
摘要:变量命名规则是为了增强代码的可读性和容易维护性。以下为C++必须遵守的变量命名规则: 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。 第一个字母必须是字母或者下划线开头。 不能使用C++关键字来命名变量,以免冲突。 变量名区分大小写。 变量命名规则: 一.用最短字符表示最准确的意义。 二.使用变量前缀。 1... 阅读全文
posted @ 2018-02-12 16:25 poisson_notes 阅读(16577) 评论(0) 推荐(2)
摘要:#include #include #include using namespace std; //公约数 int getCommoDivisor(int x, int y) { int k; if (x > x; cout > y; z = getCommoDivisor(x, y); t = getCommonMultip... 阅读全文
posted @ 2018-02-09 11:50 poisson_notes 阅读(256) 评论(0) 推荐(0)
摘要:设置在Release模式下调试的方法: 1.工程项目上右键 -> 属性 2.c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) 3.c++ -> 优化 -〉优化 选 禁止(/Od) 4.连接器 -〉调试 -〉生成调试信息 选 是 (/DEBUG) 阅读全文
posted @ 2017-12-27 13:48 poisson_notes 阅读(4433) 评论(0) 推荐(0)
摘要:{ /* 开辟内存空间*/ memset( param, 0, sizeof( x264_param_t ) ); /* CPU自动检测 */ param->cpu = x264_cpu_detect(); param->i_threads = X264_THREADS_AUTO;/* 并行编码线程为0 */ ... 阅读全文
posted @ 2017-11-02 10:19 poisson_notes 阅读(656) 评论(0) 推荐(0)
摘要:Flv是网络上流行的非常广的一种媒体格式,很多大型媒体网站都在使用这种格式承载音视频信息,比如优酷等网站。 Flv文件格式相对而言还是比较简单的,主要是由两部分组成 FLV header FLV body FLV header 前9个字节 46 4c 56 01 05 00 00 00 00 09 阅读全文
posted @ 2017-10-27 17:10 poisson_notes 阅读(4469) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-10-26 10:03 poisson_notes 阅读(638) 评论(0) 推荐(0)
摘要:题外话: HTTP渐进下载流媒体播放: 基于TCP。 yy、乐视、爱奇艺、优酷土豆、搜狐视频、花椒直播,主要还是通过rtmp&hls来实现的, 但他们也意识到rtmp的天生缺陷,所以不管是技术预研也好,还是测试版也好,都已经或多或少在弄WebRTC了。 流媒体概述: 所谓流媒体是指采用流式传输的方式在 Internet 播放的媒体格式。流媒体又叫流式媒体,它是指商... 阅读全文
posted @ 2017-10-25 15:04 poisson_notes 阅读(12739) 评论(0) 推荐(4)
摘要:症状是这样的:用librtmp推流aac后,用vlc能收到推流的声音,但是用flash却播放不了推流的声音。 查了几天,用工具抓取推流的数据,发现rtmp数据包中的头部信息有一个Chunk Stream ID的字段。 这个字段应该在不同类型的包类型中应该是不一样的。 在下列三种包类型中,Chunk Stream ID字段应该是不同的值 Metadata VideoSpsPps,Vide... 阅读全文
posted @ 2017-10-18 17:20 poisson_notes 阅读(2138) 评论(0) 推荐(0)
摘要:关于事件 事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类: (1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用S 阅读全文
posted @ 2017-10-17 14:29 poisson_notes 阅读(20128) 评论(0) 推荐(2)
摘要:(一)关于位深度。位深度也叫采样位深,音频的位深度决定动态范围。我们常见的16Bit(16比特),可以记录大概96分贝的动态范围。那么,您可以大概知道,每一个比特大约可以记录6分贝的声音。同理,20Bit可记录的动态范围大概就是120dB;24Bit就大概是144dB。假如,我们定义0dB为峰值,那么声音振幅以向下延伸计算,那么,CD音频可的动态范围就是"-96dB~0dB。",依次类推,24Bi... 阅读全文
posted @ 2017-09-19 10:46 poisson_notes 阅读(23104) 评论(0) 推荐(0)
摘要:涉及的接口有: IMMDeviceEnumerator IMMDevice IAudioClient IAudioCaptureClient 主要过程: 创建多媒体设备枚举器(IMMDeviceEnumerator) 通过多媒体设备枚举器获取声卡接口(IMMDevice) 通过声卡接口获取声卡客户端 阅读全文
posted @ 2017-09-05 17:05 poisson_notes 阅读(6845) 评论(3) 推荐(1)
摘要:#include "stdafx.h" /************************音频的输入输出设备**************************/ #include #include #include #define EXIT_ON_ERROR(hres) \ if (FAILED(hres)) { goto Exit; } #defin... 阅读全文
posted @ 2017-09-01 14:15 poisson_notes 阅读(1513) 评论(0) 推荐(0)
摘要:一、安装DirectShow。 我装的是DirectShow SDK 9.0b。安装程序名为DXSDK_Jun10.exe。 下载地址:https://pan.baidu.com/s/1kURma3t 下载地址:https://pan.baidu.com/s/1slfmSMD 二、准备需要的静态链接 阅读全文
posted @ 2017-08-31 17:47 poisson_notes 阅读(586) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-08-16 15:24 poisson_notes 阅读(247) 评论(0) 推荐(0)
摘要:将YUV进行x264编码的时候,建议将 i_threads 参数设置成 X264_SYNC_LOOKAHEAD_AUTO//* 取空缓冲区继续使用不死锁的保证. 否则有可能编码出来的数据会出现IDR_SLICE集中在一起的情况, 这样会导致rtmp推流出去的数据出现乱码,类似下面的情况 阅读全文
posted @ 2017-08-15 14:09 poisson_notes 阅读(470) 评论(0) 推荐(0)
摘要:在使用dshow抓取摄像头数据,调用dshow的回调函数,如果发现SampleTime一直为0,如下图 那极有可能是使用RenderStream函数连接Filter时,指定的第一个参数为 PIN_CATEGORY_PREVIEW 如下图 要让回调函数时间不为零,要把参数设置为 PIN_CATEGOR 阅读全文
posted @ 2017-08-10 15:07 poisson_notes 阅读(428) 评论(0) 推荐(0)
摘要:BOOL RGB2YUV(LPBYTE RgbBuf, UINT nWidth, UINT nHeight, LPBYTE yuvBuf, unsigned long *len) { if (RgbBuf == NULL) { return FALSE; } int i, j; unsigned char*bufY, *bufU,... 阅读全文
posted @ 2017-08-09 16:43 poisson_notes 阅读(3154) 评论(0) 推荐(0)
摘要:#include "stdafx.h" #include #include #include #define CHECK_HR(s) if (FAILED(s)) {return 1;} #define SAFE_RELEASE(p) do { if ((p)) { (p)->Release(); (p) = NULL; } } while(0) LRE... 阅读全文
posted @ 2017-08-08 14:32 poisson_notes 阅读(4566) 评论(0) 推荐(0)