- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 librtmp发送AVC,AAC数据包
1. libRTMP的包结构 typedef struct RTMPPacket { uint8_t m_headerType; uint8_t m_packetType; uint8_t m_hasAbsTimestamp; int m_nChannel; uint32_t m_nTimeStamp; int32
2016-01-21 12:39:27
5471
原创 打包AAC码流到FLV文件
AAC编码后数据打包到FLV很简单。1. FLV音频Tag格式 字节位置 意义0x08, // 0, TagType0xzz, 0xzz, 0xzz, // 1-3, DataSize, 0xzz, 0xzz, 0
2016-01-21 11:49:30
6303
原创 【手势交互】12. MYO臂环
MYO的工作原理与之前所介绍的体感交互方式都不同,它是通过捕捉用户手臂肌肉的生物电变化来进行体感控制的设备。MYO使用的eEMG(表面肌电图)技术最早应用在航空领域,当使用者在前臂上带上MYO并执行不同的手势时,前臂上的肌肉会发射出各不相同的电子信号,MYO内置的高敏传感器捕捉到这些信号,并通过嵌入式算法进行处理,进而识别出不同的手势,通过蓝牙将手势指令发送到主机。目前MYO可以识别出用户的握拳、
2015-09-28 16:17:35
6507
1
原创 【手势交互】11. SixSense STEM System
SixSence的STEM System是一款体感追踪设备,2013年登陆Kickstrater,在短短5小时,就达到了SixSence公司预期的25万美元目标。SixSence的STEM使用无线技术,靠九轴传感器而不是视觉捕捉玩家手部运动,所以他可以更大范围并且更为自由的动作,同时有更准确的捕捉。 SixSence的产品形态有三个:STEM Base 100美金, STEM Contro
2015-09-06 10:03:36
1330
原创 【手势交互】10. Wii Remote
Wii Remote(昵称:Wiimote、Wii遥控器)是任天堂游戏主机Wii的主要控制器。2005年9月在东京电玩展上发布,Wii Remote的主要特色是动作侦测,玩者可以透过移动和指向来与电视荧幕上的虚拟物件产生互动。由于其独特的功能以及与传统游戏控制器有很大的不同,Wii Remote在公开后受到许多关注。 Wiimote外形如传统的电视遥控器,可单手操作,内置CMOS感光摄像头
2015-08-03 17:52:12
4573
原创 【手势交互】9. PS Move
索尼研发体感控制技术已有10年,在过去那么多年里,尝试了3D摄像头、超声波和电磁感应等各种技术,最后还是认为目前的MOVE所使用的技术最为合适。PS Move是索尼于2010年9月份推出,用来让PS3主机具备动态感应功能的控制器。他利用动态控制器(手柄)和PS Eye摄像头,来捕捉玩家的动作,带给玩家全新的游戏操作模式。 主
2015-07-29 17:30:09
1615
原创 【手势交互】8. Nimble Sense
早在2012、2013年度,手势识别领域就发生了几起重要的行业并购。比如英特尔对Omek的收购,谷歌对Flutter的收购,而苹果公司更是以3.45亿美金得高价收购了之前为微软Kinect提供技术支持的以色列公司Prime Sense。手势识别,早已成为了各大巨头角逐未来的战场。因为巨头们正逐渐看清(手势识别)体感技术对传统操作方式的重要改变。 虚拟现实会是下一代人机交互界面,Oculus
2015-07-21 15:02:53
1643
原创 【手势交互】7. 凌指
美国 http://www.usens.com/ 凌感科技(uSens)成立于2013年,坐落于美国硅谷,公司专注于虚拟现实输入和输出技术的高科技创业公司,公司团队都是在美国留学及工作多年的中国高科技工作者。主要产品包括凌指外设,凌指一体机,虚拟现实/增强现实头盔印象湃(Impression Pi)。本文关注凌指相关技术。 凌感科技的三维手势识别产品凌指 凌指(Fin
2015-07-20 20:48:59
1815
原创 【手势交互】6. 微动VID
中国 天津 http://www.sharpnow.com/ 微动VID是天津锋时互动科技有限公司开发的中国Leap Motion。它可以识别并跟踪用户手部的姿态,包括:指尖和掌心的三维空间位置;手指和手掌的三维空间朝向。通过识别设备上空椎状空间的Air Mode模式和识别设备前方扇形区域Touch Mode模式,用户可以更完美的实现人机交互。 微动使用两个低成本的摄像头来实现左右
2015-07-17 12:21:52
1689
2
原创 【手势交互】5. Kinect for Xbox One
Kinect for XBox One是Kinect for XBox的升级版,这里称他为Kinect2 (也有叫它Kinect 720, Kinect One)。Kinect2于2013年中和Xbox One一起配套发售(Kinect1于2010年11月在美国上市,建议售价149美金)。2014年9月开始可以单独购买Kinect2,目前售价149.99美金。 Kinect for
2015-07-17 09:46:42
4786
原创 【手势交互】4. Kinect for XBox
“You are the Controller”,Kinect for Xbox的广告词,明确说明了Kinect体感的交互方式。作为一款集成了诸多先进视觉技术的自然交互设备,Kinect在学术和游戏业界均享有很高的关注度。此外,Kinect硬件的研发与生产综合了声、光、电和机械学等多方面的技术,其主要零部件近百个,是目前市场上大批量生产中的最为复杂的电子消费产品。 Kinect 的关键
2015-07-16 15:19:51
3663
原创 【手势交互】3. Leap Motion
美国 http://www.leapmotion.com/ Leap Motion是一种3D动作控制系统,其创始人在读书期间发现传统的鼠标对于3D软件的控制极为不方便,因此迸发出要设计一套全新的动作控制系统来自由的控制电脑软件。2012年5月,Leap Motion推出的3D动作控制系统完全突破了以前3D控制的概念,为未来的3D交互打开了无限的想象空间,可以在电脑里进行3D手绘、三维模型设
2015-07-13 20:13:05
4944
原创 【手势交互】2. 分类
按照手势交互的实现原理不同,将手势交互分为以下三种:1. 基于视觉的手势交互 这类手势交互技术发展最为积极,很多老牌和创业公司在这个领域内工作。它依靠光学原理和视觉计算进行物体检测,其优点是:快捷方便和低延迟;缺点是:根据算法差异,精度会有所差别,而且此类方式有可识别区域,超出一定范围便无法识别。 根据识别过程中是否需要额外的辅助设备,又可细分为:裸手识别和辅助手柄识别两类,
2015-07-13 16:59:06
2510
原创 【手势交互】1. 前言
人与人之间的交互方式主要有语音(包括面谈和电话谈或者视频语音谈),文字(在双方异地或者双方语音沟通有障碍或者需要正式的文本背书的情况下选择文字),手势(握手、敬礼、推搡等肢体语言也是表现一个人内心想法的途径)。 人与机器之间的交互要远滞后与人人交互的方式,最传统的方式是键盘鼠标,键盘就类似与文字交流,将确认无误的信息以文本的形式输入机器,让它理解人的意图。鼠标的发明是一项创举,它大大简化了
2015-07-13 11:56:57
1480
原创 3D视频的播放
3D视频的播放人眼产生立体效果的条件有两个:1.需要左右眼两路影像,这两路影像是不同的,具有正确的视差;2.进入左右眼的影像要完全分离,左影像进左眼,右影像进右眼。第一条是对3D视频源提出的要求,视频源必须包括两路视频,这两路视频既有关系,又有差别。它们是在同一时刻、同一架3D摄像机(有两个摄像镜头,两镜头距离与人眼瞳距相近)拍摄的同一个场景所产生的两路视频。这两路视频
2015-07-06 18:07:36
2861
原创 图像空域平滑算法
基于空间相领像素点的平滑算法是图像处理里面经常用到的去噪算法。它的核心思想是:选择当前像素点c和其周围的一些像素{c, n1, n2, ..., nN}(共N+1个像素点),根据他们与c的距离和/或与c的像素差值,赋予他们不同的权重{w0, w1, w2, ..., wn}(要求0空域平滑算法就是不同权重值的卷积运算,卷积运算需要注意的问题1是计算量,2是数据搬移量。3x3的卷积运算,一个
2015-04-02 17:32:26
5296
原创 如何选择摄像头
市面上的摄像头有很多种,规格,价格也是千差万别,如何选择一款适应当前应用系统的摄像头是一个很关键的问题。影响摄像头性能的参数主要有以下几种:1. 分辨率:一般是说摄像头能支持到的最大图像大小,如640x480(普清), 800x600, 1280x720(高清), 1920x1080(全高清或超清)等。分辨率当然是越高越好,但也要考虑系统实际情况,如果系统就用不到1920x1080这样的分
2015-03-27 10:32:16
9335
1
原创 x264并行编码设置
x264有两种并行模式,slice并行和frame并行。slice并行把一帧划分为多个矩形slice,在这多个slice之间并行处理,是一种非延时性的并行模式,多slice会稍微降低编码性能。frame并行是同时开启多帧编码,x264在N个frame并行的时候需要集齐N帧再开始一起编码,因此x264 frame并行是一种延时性的并行模式(这是x264流程的问题,其实frame并行机制并不要求集齐N
2015-03-25 17:49:30
3573
原创 x264码率控制总结3——码率控制参数详解
x264码率控制参数详解 -q, --qp Force constant QP (0-51, 0=lossless)默认:无说明:三种可选的码率控制方法(bitrate, CQP,CRF)之一。设置x264使用固定QP模式。设定的QP将被作为P帧的量化参数,I帧和B帧的量化参数由–ipratio and –pbratio参数进一步算出。CQP模式使用固定的QP
2015-02-12 16:01:30
8679
1
原创 open-GOP
H.264帧类型主要有五种编码帧:I(IDR帧)、i(非IDR I帧)、P(P帧)、B(参考B帧)、b(非参考B帧)。a. IDR帧,NALU_type = 0x65。IDR帧是一种特殊的I帧,在解码IDR帧前,清空所有前后向参考缓冲区,IDR帧随后的所有帧不能参考IDR前面的任何帧。IDR帧是视频安全的随机访问点,找到一个IDR帧可以丢弃前面所有帧数据而正确解码。b. i帧是帧内预测
2015-02-10 17:24:04
2913
翻译 X264码率控制总结2——x264码率控制方法概述
X264码率控制方法定性概述x264/doc/ratecontrol.txtA qualitative overview of x264's ratecontrol methodsBy Loren Merritt历史笔记:本文件是过时的,但相当一部分叙述仍然是准确的,以下是一些重要的码率控制算法更新:1. 默认情况下,MB-tree代替了qcomp用以计算各帧的复杂度,
2015-02-09 18:55:49
3693
1
原创 X264码率控制总结1——ABR,CQP,CRF
1. X264显式支持的一趟码率控制方法有: ABR, CQP, CRF. 缺省方法是CRF 这三种方式的优先级是ABR > CQP > CRF. if(bitrate) rc_method = ABR; else if(qp || qp_constant) rc_method = CQP; else rc_method = CRF;
2015-02-09 16:19:09
16942
1
原创 内存分配的四个例子
内存分配的四个例子原文在是:有关内存的思考题 在这篇基础上扩展了些知识,以做记录。第一个例子:char *GetMemory(char * p) { p = (char *)malloc(100); return p;}void Test(void) { char *str = NULL; GetMemory(str); st
2015-02-02 18:48:15
890
原创 FFmpeg sws_scale分析2
FFmpeg sws_scale分析2在网上没有看到有关SwsFilter的讨论,看FFMpeg代码,总结下面的分析结果。sws_scale前后图像滤波都定义为归一化的2维或者1维图像卷积处理。每个滤波器有四个分量typedef struct SwsFilter { SwsVector *lumH; // 亮度水平处理 SwsVector *lumV;
2015-01-29 12:01:11
1836
原创 FFmpeg sws_scale分析1
FFmpeg sws_scale分析1FFmpeg里面的sws_scale库可以在一个函数里面同时实现:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。其核心函数主要有三个:// 初始化sws_scalestruct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcForm
2015-01-28 22:25:19
2474
原创 字节对齐
字节对齐1. X86结构是小端模式存储,既数据低位在低存储地址,数据高位在高存储地址。例如 short x = 0x3344; 假设x的地址为 0xBFFFF0F4,那么0xBFFFF0F4地址里面存储的是字节0x44, 0xBFFFF0F5地址里面存储的是字节0x33.2. 为了使CPU能够跟快的访问内存,变量地址和变量长度有关联,即所谓地址对齐。4字节的int类型变量,其起始地址应
2015-01-28 18:40:10
913
原创 程序内存分配
程序内存分配____________________| Stack区(栈区)(函数参数,局部变量,数组);自动创建,函数结束时自动释放,速度快,容量小|____________________| Static存储区(static变量,全局变量); 程序编译的时候就分配好 |____________________|
2015-01-28 17:15:33
799
原创 x264改变输出分辨率的算法
x264改变输出分辨率的算法在某些应用场景下,x264的输入视频分辨率与接收端输出的视频分辨率不同。例如编码端摄像头采集到的YUV数据为1280x720,而接收端视频显示窗口为640x480。对于这种场景,一般的处理方式是:源端:采集,编码,传输 720p的码流收端:接收,解码720p的码流,缩放到480p去显示。这种方式的劣势在于编码,传输了接收端用不到的大分辨率码流。
2015-01-27 23:21:55
4499
转载 x264宏块模式选择
x264宏块模式选择评价编码效率有两个指标:码率和解码图像质量。最好结果是码率小而质量高,但这基本上是不可能的,码率和质量一般是反比的关系。因此编码器编码过程就是对这两个因素的平衡过程。率失真优化RDO(Rate Distortion Optimization)就是在这种情况下提出来的编码优化方案。 J(mode) = SSD+λ*R(mode, ref, mvd, re
2015-01-27 18:21:37
1540
原创 X264支持输入NV12格式
X264支持输入NV12格式一般编码器(例如JM)输入格式是YUV420(YV12),H.264标准也介绍的是YUV420的输入。X264编码器的输入也一般是YUV420格式,但是在内部帧的存储方式上x264采用的是NV12。因为一般编码器对U,V两通道的处理方式是相同的,例如他们有相同的QP,宏块划分,参考帧ID,运动矢量。因此对于U,V两通道的数据读取是一致的,这样NV12 UV两通道
2015-01-23 17:35:45
6598
1
原创 H.264码流格式
H.264码流格式SODB: String Of Data Bits 原始数据比特流, 熵编码输出结果, 以bit为单位。RBSP: Raw Byte Sequence Payload 原始字节序列负载, 在SODB最后加上trailing bits.EBSP: Extent Byte Sequence Payload 扩展字节序列负载, RBSP里面加入防伪起始码字节(0x03)
2015-01-23 16:56:35
2224
原创 打包H264码流到FLV文件
FLV格式非常简单,头信息数据量很少,适合网络传输,因此被广泛的应用。1. H264 NALU结构 h264 NALU: 0x00 00 00 01 | nalu_type(1字节)| nalu_data (N 字节) | 0x00 00 00 01 | ... 起始码(4字节) 类型
2015-01-19 20:37:16
13589
1
原创 FLV文件结构解析
1. FLV文件格式相对于MP4,简单很多。 FLV Header(9Bytes) + FLV Body a比特: 1:有音频; 0:无音频 v比特: 1:有视频; 0:无视频 如果音视频都有这个字节为0x05 'F'|'L'|'V'|0x01|0b00000a0v| 0x00 00
2015-01-19 19:55:30
3862
原创 MP4格式分析
1.先说几个基本概念 Sample: 采样,对于音视频来说就是一个编码帧;Sample_count即总帧数,Sample_index即帧下标。 在一个Mp4文件里面,所有Box处理的Samples都是严格按照帧序号排列的。删除或者修改一帧,很多个Box里面的内容需要从新计算。 Chunk: 块,一个Chunk包括一个或者多个同类型Sampl
2015-01-19 14:44:52
1814
原创 YUV格式总结
视频数据总要跟YUV打交道,由于不同公司组织基于对各自产品格式的定义不同,派生出各种各样不同的YUV格式。总的来说,YUV从像素组织形式上来分有两种:1.planer模式,2.packet模式。planar模式举例: Y0Y1....Yn U0U1...Um V0V1..Vm,YUV三个通道分别连续存储;packet模式举例: Y0U0V0 + Y1U1V1 + ... + YnU
2014-11-08 16:14:06
9436
1
原创 x264编码延时研究
研究了一下x264编码延时.方法是加log在x264.cstatic int encode( x264_param_t *param, cli_opt_t *opt ){ ... i_frame_size = encode_frame( h, opt->hout, &pic, &last_dts ); if( i_frame_size ==
2014-11-05 22:45:08
3522
原创 [X264] MinGW编译x264,VC中调用libx264.dll
1. 下载并按照MinGW,最好就缺省按照 http://sourceforge.net/projects/ ... ler/mingw-get-inst/ 把C:\MinGW\bin添加到PATH中 (dos命令行 PATH %PATH%;新目录;)2. 下载Yasm, http://yasm.tortall.net/Download.html
2014-11-05 22:43:15
2646
原创 MPEG-2系统复用 2
TS与PS的区别TS流与PS流的区别在于TS流的包结构是固定长度的(188、192、204、208字节);而PS流的包结构是可变长度,它的一个视频包可能就是一个视频帧。TS包较小,增加了很多冗余的包头信息,导致它对传输误码具有较高的抵抗能力,因此可以应用于信道环境较差的传输方式;而PS包只适合于应用于误码较低的存储环境。TS做传输,PS做存储。TS可以是多路节目的复合,PS只是一路节目。TS中
2012-07-24 19:19:53
1190
原创 MPEG-2系统复用 1
先说下复用的结构:1. 元素,对原始的音视频数据经过压缩形成编码码流,这些码流称为元素流(Elementary Stream),每个元素都有一个由系统层分配的各自独有的ID号;2. 节目,一个节目(program)一般由视频,音频(可能不止一路音频),文本,数据等元素组成,把这些元素复用到一起成为具有统一时间基轴的一个节目。将这些元素复合在一起的时候,系统会生成一个表用来记录这个节目所包
2012-07-24 18:06:35
907
原创 FFmpeg中libstagefright.cpp的认识
FFmpeg/libavcodec目录中有一个叫做libstagefright.cpp的文件,这个文件一开始以为是H.264在stagefright上的一个软实现。后来看了代码和同事研究过以后觉得是FFmpeg在Android系统上调用StageFright中支持的H.264硬件解码器。它提供了一种FFmpeg调用StageFright中硬解码的途径;不是StageFright调用FFmpeg解码
2012-05-17 17:01:35
5922
1
YUV文件处理播放器
2014-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人