- 博客(11)
- 资源 (9)
- 收藏
- 关注
原创 x264代码学习笔记(四):B帧是何时被确定帧类型的?怎样进行编码的?
在上一篇博客《x264代码学习笔记(三):x264_slicetype_decide函数》里,在解读x264_slicetype_decide函数过程中,一直有这样的疑问,即B帧是何时被确定类型的,具体是怎样将视频帧由输入序列(播放序列)转换为编码序列呢? 为求解答案,我书写了一个实例进行代码调试,如下所示:#include <assert.h>#...
2018-08-30 14:19:45 3104 1
原创 基于Speex的音频调试实验(NS / AGC / AEC)
1. NS(噪声抑制)功能调试使用全向Mic进行实验 : 波形图(不加去噪功能):波形图(加去噪功能):从波形中可以看出,去噪效果较为明显。Speex的降噪功能,对于人声有噪声抑制效果,但偶尔会有“噼噼”声,而对于音乐播放 “噼噼”的声音出现频率较高;建议播放音乐时关闭此降噪功能。噪声消除模块需设置一个参数,即噪声抑制阈值(默认为-25dB),此值可控制噪声削弱强度。即...
2018-08-28 11:00:06 7812 2
原创 x264代码学习笔记(三):x264_slicetype_decide函数
x264_slicetype_decide函数(代码所在位置为“x264-snapshot-20171128-2245-stable\encoder\slicetype.c”)的主要作用为:分析帧类型(I\P\B帧)以及将视频播放序列转换为编码序列调用顺序如下:x264_encoder_encode —>x264_lookahead_get_frames —>x264_sl...
2018-08-27 11:58:38 2056 1
原创 码率控制基础知识
视频编码中,码流控制占有一定比例,它控制着码率输出是否符合预期,从而可以保证码流在网络传输中稳定,减少由于码率波动引起的视频卡顿等现象。下面举一个例子,解释一下码率控制是如何进行的。一个视频等待压缩,其参数如下:height : 1080 weight : 1920 fps: 25 目标码率:码率控制在2Mbit/s码率控制流程:首先,2Mbit/s = 2000000bit/...
2018-08-22 11:06:38 5326
原创 x264代码学习笔记(二):x264_encoder_encode函数
encode()函数中循环调用encode_frame()函数进行逐帧编码:调用x264_encoder_encode()函数完成一帧编码; 将编码后的码流载入码流文件中。static int encode_frame( x264_t *h, hnd_t hout, x264_picture_t *pic, int64_t *last_dts ){ x264_picture_t...
2018-08-21 16:07:31 6426 1
原创 x264代码学习笔记(一):main函数和encode函数
x264代码的主输入口:main()函数对软件进行多线程初始化 对命令行字符串进行编码格式检测,若不为UTF-8编码格式,则转换 解析命令行参数,并赋值给 x264_param_t 结构体和 cli_opt_t 结构体,以备后续使用 使用encode() 函数对视频数据进行编码压缩 关闭文件等内存清理操作int main( int argc, char **argv ){ ...
2018-08-16 15:28:03 1202 2
原创 Halcon训练分类器方法
Halcon分类器常识:HALCON自带的分类器不能识别汉字; 下图为Halcon自带的分类器种类(所在路径为:C:\Program Files\MVTec\HALCON-13.0\ocr): Halcon的分类器有三种MLP、SVM、GMM;SVM:按照个人理解就是找到两类中间隔最近的某几个点,然后根据这几个点确定一个函数使得这几个点到这个函数的垂直距离最长;这就是它的...
2018-08-13 13:59:59 6992
原创 DirectSound播放PCM有杂音的解决方法
问题场景描述:使用DirectSound播放PCM,先点击暂停按钮再点击播放按钮后,大概率会有杂音出现播放音频单独放在一个线程中处理,程序基于MFC架构,有播放和暂停按钮。如下所示代码为音频播放线程,开始使用static DWORD offset = BUFFERNOTIFYSIZE; 代替pObj->m_DS_offset,这使得暂停回来之后offset的值继续上次的数值而不是重新赋值...
2018-08-09 15:36:13 3422
原创 视频播放Seek的基本原理
首先了解一下NAL包结构,如下图所示为NAL的包头结构,其中unit_type占用5个bit,表示帧类型如下表所示,其中IDR图像对应的unit_type数值为5,因此可以通过包头信息判断流数据是否为IDR图像。 下面开始介绍视频播放Seek的基本原理,如下图所示,为视频文件播放时间轴示意图,Start为开始播放视频的,End为视频播放结束,IDR帧为立即刷新帧所对应的播放时刻,S...
2018-08-03 10:27:47 8228 1
原创 使用winmm.lib库对windows录音设备采集录音数据
首先包含头文件以及库目录 #include <mmsystem.h>#pragma comment(lib, "winmm.lib") 初始化录音所需变量 WAVEHDR wHdr1[4]; // 采集音频时包括数据缓存的结构体HWAVEIN hWaveIn; // 输入设备句柄hWaveIn = NULL; // 录音设备句柄初始化 ...
2018-08-02 11:59:42 10481
android.media.cts.CamcorderProfileTest#testGetWithId测试失败解决方法
2023-08-31
OMX的整体架构以及codec、YUV的基本概念
2023-08-31
音频视频内容检测的一般方法
2023-08-30
Halcon代码在VS2015下配置出现的问题记录
2023-08-30
包含啸叫的音源(用于音频啸叫处理实验)
2018-07-10
opencv3.2.0在VS2015下的编译库(包含32位和64位)
2018-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人