Archive for February, 2014

作者:AngryFox 分类: Uncategorized February 24th, 2014 暂无评论

RTMP 全称Routing Table Maintenance Protocol(路由选择表维护协议) 在 AppleTalk 协议组中,路由选择表维护协议(RTMP,Routing Table Protocol)是一种传输层协议,它在 AppleTalk 路由器中建立并维护路由选择表。RTMP 基于路由选择信息协议(RIP)。正如 RIP 一样,RTMP 使用跳数作为路由计量标准。一个数据包从源 网络发送到目标网络,必须通过的路由器或其它中间介质节点数目的计算结果即为跳数。
实时消息传送协议协议概述
实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。它有三种变种:
  1)工作在TCP之上的明文协议,使用端口1935;
  2)RTMPT封装在HTTP请求之中,可穿越防火墙;
  3)RTMPS类似RTMPT,但使用的是HTTPS连接;
协议详细介绍
RTMP协议是被Flash用于对象,视频,音频的传输.该协议建立在TCP协议或者轮询HTTP协议之上.
  RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据.
  一个单一的连接可以通过不同的通道传输多路网络流.这些通道中的包都是按照固定大小的包传输的.
  网络连接(Connection)
  一个Actionscript连接并播放一个流的简单代码:
  复制内容到剪贴板代码:
  var videoInstance:Video = your_video_instance;
  var nc:NetConnection = new NetConnection();
  var connected:Boolean = nc.connect(“rtmp:/localhost/myapp”);
  var ns:NetStream = new NetStream(nc);
  videoInstance.attachVideo(ns);
  ns.play(“flvName”);
  默认端口为1935
握手请求及应答
Client → Server :向服务器发出握手请求.这不属于协议包一部分,该握手请求第一个字节为(0×03),其后跟着1536个字节.尽管看上去这部分的内容对于RTMP协议来说并不是至关重要的,但也不可随意对待.
  Server → Client :服务器向客户端回应握手请求.这部分的数据仍然不属于RTMP协议的部分.该回应的起始字节仍然为(0×03),但是后边跟着个长度为1536个字节(一共为3072 )的包块.第一个1536块看上去似乎可以是任意内容,甚至好像可以是Null都没有关系.第二个1536的代码块,是上一步客户端向服务器端发送的握手请求的内容.
  Client→Server:把上一步服务器向客户端回应的第二块1536个字节的数据块.
  至此客户端与服务器端的握手结束,下面将发送RTMP协议的包内容.
  Client → Server :向服务器发送连接包.
  Server → Client :服务器回应.
  … …. 等等… …
  RTMP 数据类型
  0×01 Chunk Size changes the chunk size for packets
  0×02 Unknown anyone know this one?
  0×03 Bytes Read send every x bytes read by both sides
  0×04 Ping ping is a stream control message, has subtypes
  0×05 Server BW the servers downstream bw
  0×06 Client BW the clients upstream bw
  0×07 Unknown anyone know this one?
  0×08 Audio Data packet containing audio
  0×09 Video Data packet containing video data
  0x0A – 0×11 Unknown anyone know?
  0×12 Notify an invoke which does not expect a reply
  0×13 Shared Object has subtypes
  0×14 Invoke like remoting call, used for stream actions too.
  Shared Object 数据类型
  0×01 Connect
  0×02 Disconnect
  0×03 Set Attribute
  0×04 Update Data
  0×05 Update Attribute
  0×06 Send Message
  0×07 Status
  0×08 Clear Data
  0×09 Delete Data
  0x0A Delete Attribute
  0x0B
  Initial Data
  RTMP包结构
  RTMP包 包含一个固定长度的包头和一个最长为128字节的包体.包头可以是下面4种长度的任意一种:12, 8, 4, or 1 byte(s).
  第一个字节的前两个Bit很重要,它决定了包头的长度.它可以用掩码0xC0进行”与”计算.下面的表格罗列了可能的包头长度:Bits Header Length
  00 12 bytes
  01 8 bytes
  10 4 bytes
  11 1 byte
  我们在这里讨论关RTMP包结构的问题并不是非常的详细.我们在以后有时间会讨论关于AMF的问题(敬请期待…:loveliness:),其实RTMP包结构就是使用了AMF格式.
  流
  关于流的操作我们需要进一步研究,在论坛中的http://www.openred5.com/bbs/viewthread.php?tid=175&extra=page=1这篇文章研究的还是不错的,大家可以参考.不过下面可以列一个关于客户端向服务器端发送流的流程:
  Client→Server :发送一个创建流的请求.
  Server→Client :返回一个表示流的索引号.
  Client→Server :开始发送.
  Client→Server :发送视音频数据包(这些包在同一个频道(channel)并用流的索引号来唯一标识).

作者:AngryFox 分类: Uncategorized February 24th, 2014 暂无评论

视频基础知识:
媒体:是表示,传输,存储信息的载体,常人们见到的文字、声音、图像、图形等都是表示信息的媒体。
多媒体:是声音、动画、文字、图像和录像等各种媒体的组合,以图文并茂,生动活泼的动态形式表现出来,给人以很强的视觉冲击力,留下深刻印象
多媒体技术:是将文字、声音、图形、静态图像、动态图像与计算集成在一起的技术。它要解决的问题是计算机进一步帮助人类按最自然的和最习惯的方式接受和处理信息。
流媒体:流媒体是指采用流式传输的方式在Internet播放的连续时基媒体格式,实际指的是一种新的媒体传送方式,而不是一种新的媒体格式(在网络上传输音/视频等多媒体信息现在主要有下载和流式传输两种方式)流式传输分两种方法:实时流式传输方式(Realtime streaming)和顺序流式传输方式(progressive streaming)。
多媒体文件:是既包括视频又包括音频,甚至还带有脚本的一个集合,也可以叫容器;
媒体编码:是文件当中的视频和音频所采用的压缩算法。也就是说一个avi的文件,当中的视频编码有可能是A,也可能是B,而其音频编码有可能是1,也有可能是2。 转码 :指将一段多媒体包括音频、视频或者其他的内容从一种编码格式转换成为另外一种编码格式
视频:连续的图象变化每秒超过24帧(Frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的画面叫做视频
音频 :人类能听到的声音都成为音频,但是一般我们所说到的音频时存储在计算机里的声音

第二部分:视频文件格式
基本视频概念讲解:
码率:码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。 通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。但是因为编码算法不一样,所以也不能用码率来统一衡量音质或者画质

帧:帧就是一段数据的组合,它是数据传输的基本单位。就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图像等。

帧率:帧率即每秒显示帧数,帧率表示图形处理器处理场时每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了。如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过新率的帧率就浪费掉了。

关键帧:相当于二维动画中的原画,指角色或者物体运动或变化中的关键动作所处的那一帧,它包含了图像的所有信息,后来帧仅包含了改变了的信息。如果你没有足够的关键帧,你的影片品质可能比较差,因为所有的帧从别的帧处产生。对于一般的用途,一个比较好的原则是每5秒设一个关键键。但如果时那种实时传输的流文件,那么要考虑传输网络的可靠度,所以要1到 2秒增加一个关键帧。

视频压缩基本概念:
一、有损和无损压缩:在视频压缩中有损(Lossy )和无损(Lossless)的概念与静态图像中基本类似。无损压缩也即压缩前和解压缩后的数据完全一致。多数的无损压缩都采用RLE行程编码算法。有损压缩意味着解压缩后的数据与压缩前的数据不一致。在压缩的过程中要丢失一些人眼和人耳所不敏感的图像或音频信息,而且丢失的信息不可恢复。几乎所有高压缩的算法都采用有损压缩,这样才能达到低数据率的目标。丢失的数据率与压缩比有关,压缩比越小,丢失的数据越多,解压缩后的效果一般越差。此外,某些有损压缩算法采用多次重复压缩的方式,这样还会引起额外的数据丢失。
二、帧内和帧间压缩:帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,由于帧内压缩时各个帧之间没有相互关系,所以压缩后的视频数据仍可以以帧为单位进行编辑。帧内压缩一般达不到很高的压缩。
采用帧间(Interframe)压缩是基于许多视频或动画的连续前后两帧具有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩(Temporal compression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的。帧差值(Frame differencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。
三、对称和不对称编码:对称性(symmetric)是压缩编码的一个关键特征。对称意味着压缩和解压缩占用相同的计算处理能力和时间,对称算法适合于实时压缩和传送视频,如视频会议应用就以采用对称的压缩编码算法为好。而在电子出版和其它多媒体应用中,一般是把视频预先压缩处理好,尔后再播放,因此可以采用不对称(asymmetric)编码。不对称或非对称意味着压缩时需要花费大量的处理能力和时间,而解压缩时则能较好地实时回放,也即以不同的速度进行压缩和解压缩。一般地说,压缩一段视频的时间比回放(解压缩)该视频的时间要多得多。例如,压缩一段三分钟的视频片断可能需要10多分钟的时间,而该片断实时回放时间只有三分钟。

音频文件格式

一些音视频的参数含义:
声道:目前人们所使用的各种声场技术规范非常多,但最常见的几乎都来自三家公司,他们是Dolby(杜比)、HTX和DTS。声卡所支持的声道数是衡量声卡档次的重要指标之一,从单声道到最新的环绕立体声,下面一一详细介绍:
1.单声道:单声道是比较原始的声音复制形式,早期的声卡采用的比较普遍。当通过两个扬声器回放单声道信息的时候,我们可以明显感觉到声音是从两个音箱中间传递到我们耳朵里的。这种缺乏位置感的录制方式用现在的眼光看自然是很落后的,但在声卡刚刚起步时,已经是非常先进的技术了。
2.立体声:单声道缺乏对声音的位置定位,而立体声技术则彻底改变了这一状况。声音在录制过程中被分配到两个独立的声道,从而达到了很好的声音定位效果。这种技术在音乐欣赏中显得尤为有用,听众可以清晰地分辨出各种乐器来自的方向,从而使音乐更富想象力,更加接近于临场感受。立体声技术广泛运用于自Sound Blaster Pro以后的大量声卡,成为了影响深远的一个音频标准。时至今日,立体声依然是许多产品遵循的技术标准。
3.准立体声:准立体声声卡的基本概念就是:在录制声音的时候采用单声道,而放音有时是立体声,有时是单声道。采用这种技术的声卡也曾在市面上流行过一段时间,但现在已经销声匿迹了。
4.四声道环绕:人们的欲望是无止境的,立体声虽然满足了人们对左右声道位置感体验的要求,但是随着技术的进一步发展,大家逐渐发现双声道已经越来越不能满足我们的需求。由于PCI声卡的出现带来了许多新的技术,其中发展最为神速的当数三维音效。三维音效的主旨是为人们带来一个虚拟的声音环境,通过特殊的HRTF技术营造一个趋于真实的声场,从而获得更好的游戏听觉效果和声场定位。而要达到好的效果,仅仅依靠两个音箱是远远不够的,所以立体声技术在三维音效面前就显得捉襟见肘了,但四声道环绕音频技术则很好的解决了这一问题。四声道环绕规定了4个发音点:前左、前右,后左、后右,听众则被包围在这中间。同时还建议增加一个低音音箱,以加强对低频信号的回放处理(这也就是如今4.1声道音箱系统广泛流行的原因)。就整体效果而言,四声道系统可以为听众带来来自多个不同方向的声音环绕,可以获得身临各种不同环境的听觉感受,给用户以全新的体验。如今四声道技术已经广泛融入于各类中高档声卡的设计中,成为未来发展的主流趋势。
5.“5.1声道” 5.1声道已广泛运用于各类传统影院和家庭影院中,一些比较知名的声音录制压缩格式,譬如杜比AC-3(Dolby Digital)、DTS等都是以5.1声音系统为技术蓝本的。其实5.1声音系统来源于4.1环绕,不同之处在于它增加了一个中置单元。这个中置单元负责传送低于80Hz的声音信号,在欣赏影片时有利于加强人声,把对话集中在整个声场的中部,以增加整体效果。相信每一个真正体验过Dolby AC-3音效的朋友都会为5.1声道所折服。千万不要以为5.1已经是环绕立体声的顶峰了,更强大的7.1系统已经出现了。它在5.1的基础上又增加了中左和中右两个发音点,以求达到更加完美的境界。由于成本比较高,没有广泛普及。

一.WMA
  WMA的全称是Windows Media Audio,是微软力推的一种音频格式。WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18,生成的文件大小只有相应MP3文件的一半。此外,WMA还可以通过DRM(Digital Rights Management)方案加入防止拷贝,或者加入限制播放时间和播放次数,甚至是播放机器的限制,可有力地防止盗版。
优点
WMA 7之后的WMA支持证书加密,未经许可(即未获得许可证书),即使是非法拷贝到本地,也是无法收听的。同时,微软公司开始时宣称的:同文件比MP3体积小一倍而音质不变,也得到了兑现。事实上,这个说法,仅仅适用于低比特率的情况,另外,微软公司在WMA 9大幅改进了其引擎,实际上几乎可以在同文件同音质下比相同的MP3体积少1/3左右。
缺点
在高比率的渲染能力低下,同音源的一个320KBPS的MP3与比较192KBPS的WMA相比,音质和渲染力很容易分别出是前者较优。
  二.VQF
  VQF即TwinVQ(Transform-domain Weighted Interleave Vector Quantization),是由NTT(Nippon Telegraph and Telephone)与Yamaha共同开发的一种音频压缩技术。VQF的音频压缩率比标准的MPEG音频压缩率高出近一倍,可以达到18:1左右甚至更高。也就是说把一首4分钟的歌曲(WAV文件)压成MP3,大约需要4MB左右的硬盘空间,而同一首歌曲,如果使用VQF音频压缩技术的话,那只需要2MB左右的硬盘空间。因此,在音频压缩率方面,MP3和RA都不是VQF的对手。
但是VQF不支持”流”,这可能也是为什么现在它完全被WMA压下去的一个主要原因.
  三.MP3
MP3的全称是Moving Picture Experts Group Audio Layer III。简单的说,MP3就是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3,所以人们把它简称为MP3。MP3是利用 MPEG Audio Layer 3 的技术,将音乐以1:10 甚至 1:12 的压缩率,压缩成容量较小的file,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度。而且还非常好的保持了原来的音质。正是因为MP3体积小,音质高的特点使得MP3格式几乎成为网上音乐的代名词。每分钟音乐的MP3格式只有1MB左右大小,这样每首歌的大小只有3-4兆字节。使用MP3播放器对MP3文件进行实时的解压缩(解码),这样,高品质的MP3音乐就播放出来了。  
MP3最受争议的就是音质问题(尤其是随着WMA的普及),其高频损失很大,很多MP3编码器粗糙的编码算法不但导致高频丢失,还丢失了许多细节,类似吉他擦弦的感觉在MP3中是找不到的.在对MP3快要失望时,偶发现了Lame,它支持根据人耳遮蔽效应原理来分析波形,配合VBR技术,可以让音质达到令人吃惊的地步; 其独创的心理音响模型技术保证了CD音频还原的真实性,配合VBR(动态比特率)和ABR(平均比特率)参数,编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,音质几乎可以媲美CD音频,但文件体积却非常小.很多网友在使用LAME后的反映就是:立刻删除硬盘上所有的MP3和其他编码器,全部用Lame重新来过。Lame提供EXE 和 DLL,其中DLL是作为标准的动态运行库供其他程序调用.EXE是Command Line程序,象DOS程序一样工作,两者彼此独立,互不关联。但大家很快能发现两者编码的质量是不一样的,那是由于dll可控性差,与具备丰富调节参数的EXE版相比,其压缩出来的MP3效果稍逊一筹。但EXE是一个命令行工具,操作很麻烦,幸亏有了WinLAMEr或lameGUIxp这些Shell。只要学会使用这些Shell(是傻瓜型的,一看即会),就可以用LAME压缩出最最精彩的MP3了。再说说APS, 在LAME出现以前,APS就是最好的MP3编码器,它使用的Fraunhofer IIS编码算法,这比LAME使用的编码算法要先进,在192k Bitrate(CBR)下,甚至比LAME编码的曲子要优秀,细节明显要丰富一些,但APS本身不支持VBR,当Bitrate往上提高时,音质就要比LAME编码的要差了,大部分朋友的MP3的一般都是128-192K Bitrate的,因此APS仍旧有推荐的价值。特别是有很多MP3随身听不支持VBR和256K Bitrate以上的MP3,LAME就不一定合适这些朋友了,APS就成了不错的选择,由它编码的曲子,绝对不会辱没你昂贵的PLAYER.
  四.MP3PRO
  MP3PRO完全是基于传统MP3编码技术的一种改良,本身最大的技术亮点就在于SBR(Spectral Band Replication 频段复制),这是一种新的音频编码增强算法.它提供了改善低位率情况下音频和语音编码的性能的可能.这种方法可在指定的位率下增加音频的带宽或改善编码效率,SBR最大的优势就是在低数据速率下实现非常高效的编码.如果在高数据速率的情况下,SBR将如同虚设.当制作MP3PRO文件时,编码器将音频分为两部分。一部分是将音频数据中的低频段部分分离出来,通过传统的MP3技术而编码得出的正常的MP3音频流,此举可令到MP3编码器可以专注于低频段信号从而获得更好的压缩质量,而且原来的MP3播放器也可播放MP3PRO文件。另一部分则是将分离出来的高频段信号进行编码并嵌入到MP3流中,传统的MP3播放器会将其忽略掉,而新的MP3PRO播放器则可从中还原出高频信号,并将两者进行组合,得到高质量的全带宽的声音.官方宣称通过这样的技术,使得MP3PRO能在64kbps的编码率便可提供与128kbps的mp3相同的质量。低比特率下MP3PRO的性能很明显地比MP3要高,但是它与WMA谁胜谁负就很难说了,根据一些发烧友的评测, MP3PRO似乎略胜一些.高比特率下很少有人用到MP3PRO.

五.OGG
  OGG格式的全称应该是OGG Vobis。它是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。OGG Vobis有一个很出众的特点,就是支持多声道,随着它的流行,以后用随身听来听DTS编码的多声道作品将不会是梦想。OGG Vobis在压缩技术上比MP3好,而且它的多声道,免费,开源这些特点,使它很有可能成为一个流行的趋势,这也正是一些MP3播放器对其支持的原因
在高音质要求下,有损音频编码世界中是三足项立,分别为MP3、MPC、OGG。 
Ogg Vorbis中的主要算法还是利用MDCT(修饰离散余弦变换Modified Discrete Cosine Transform )而不是用现在比较时兴的小波(wavelet)技术。Ogg的多通道编码技术,统称为立体声通道耦合Stereo Channel Coupling。而该技术实际又是由两种不同的技术组成的:channel interleaving 和 square polar mapping,而这也是Ogg能成为免费制式的一个必要条件,以往的“联合立体声Joint Stereo”的编码模式是有专利限制的。据官方声称,与其他会造成立体空间感减弱的编码模型相比,这两种技术都可以在保持编码器的灵活性的同时而不损害本来的立体声空间影像――相信配合iRiver的3d音效会有更好的表现力,而且实现的复杂程度比联合立体声方式要低。
  OGG Vorbis这种编码也远比90年代开发成功的MP3先进,它可以在相对较低的数据速率下实现比MP3更好的音质!――我认为Ogg很象MD的atrac格式,特别象新的lp2编码,它能在低别特率下有着很要的音质。此外,在编码上,Ogg Vorbis是使用了VBR(可变比特率)和ABR(平均比特率)方式进行编码,所以理论上,Ogg Vorbis带来的音乐可以比采用CBR文件有更好的声音表现,当然前提是两者使用同样比特率(Bit Rate)的压缩模式――这里可以知道。Ogg Vorbis的比特率缩放功能可以在不用重新编码的情况下调节文件的相关压缩率,与此同时,Ogg文件的单位编辑能力和超越左右声道的音频流技术可以带来更为奇妙的音乐享受。Vorbis还具有比特率缩放功能,可以不用重新编码便可调节文件的比特率。
  Vorbis文件可以被分成小块并以样本粒度(granularity,专业术语,指数据可以被分割的最小尺寸)进行编辑;Vorbis支持多通道(大于2)音频流并使用了独创性的处理技术;这意味着什么?这意味着Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓轨软件(目前这种软件还没有)的支持下,可以对所有的声道进行编码,而不是MP3只能编码2个声道。多声道音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏交响时,会带来更多临场感。这场革命性的变化是MP3无法适应的。在以后的播放技术不断提高以后,而且人们对音质要求不断提高,Ogg的优势将更加明显。
  六. MPC
  MusePaCk是由德国人Andree Buschmann开发的一种完全免费的高品质音频格式。在其问世之前,Lame MP3是公认音质最好的有损压缩方案,追求音质的人对它趋之若鹜。但现在这个桂冠无疑该让给MPC了,在中高码率下,MPC可以做到比MP3更好音质。在高码率下,MPC的高频要比MP3细腻不少,可以在节省大量空间的前提下获得最佳音质的音乐欣赏,是目前最适合用于音乐欣赏的有损编码。
MPC的编码方案是在MP2的基础上改进而来。它同样采用子带编码技术,但相比MP2,它所采用的心理声学模型要优秀得多,并加入了像ANS(Adaptive Noise Shaping)、CVD(ClearVoiceDetection)等技术,甚至改变了压缩时所用的Huffman(哈夫曼)编码,以得到更大的压缩率。另外,MPC采用的是可变码率进行编码。毫无疑问,可变码率的编码效率要高于固定码率,因为前者可以合理地分配数据量,在信号复杂(微弱)时提高(降低)比特率,在得到满意的效果又能确保不错的压缩率。为了保证高音质,MPC的瞬间最大码率甚至高达1.32Mbps,这已经快接近CD的1.41Mbps了
较高比特率下(250kbps左右),MPC表现非常的出众,甚至超过了MP3,很难分辨它和原始信号有多少区别,无论从频率保留还是细节保留,以及信号强度失真来说,MPC太优秀了. 但MPC并非万能的,它无法编码48khz采样率的曲子,所幸的是,这样的曲子来源很少.可惜这种格式并没有像MP3或WMA那样流行.
  七.ATRAC
  ATRAC(Adaptive TRansform Acoustic Coding自适应声学转换编码技术):是Sony的原创音乐压缩技术,主要用于MD Walkman的录音及播放方面。是一项基于听觉心理学领域的研究和不损伤可闻声质量的数码音频译码压缩技术,对音乐资讯有效的进行压缩,压缩的比率为原来的五分之一,因为MD使用了ATRAC压缩技术,这样的压缩大大节省了许多空间,所以 CD的碟片要120mm大小,而MD只需64mm就可以录下74分钟的音乐。
ATRAC压缩技术主要是利用了人耳的蔽遮效应,在心理声学原理上,在进行音频录入的同时,有许多外部的频段同时也会被录入,当人耳同时听到两个不同频率、不同音量的声音时,音量较小的低频及音量较小的高频连同不为人耳所察觉的频段信号都会被自动减弱或忽略不予记录,因此又可以称为适应性变换声码技术,由于近年來编码压缩技术(ATRAC的版本)越來越成熟,所以经过编码解码过程后的声音仍直逼CD,大家就不必担心音质差啦。
ATRAC将16比特44.1KHz的数字信号以频率响应轴分成52个区段(在低频时分割较细而在高频时分割较粗),根据声音心理学的原理,将声音信号中人耳听不到和对人的听力影响不大的信息给剔除出去而达到缩小声音文件的目的。利用这种原理,ATRAC可以将录音的资料量压缩为原来的五分之一(即压缩比为1:5)。
.
  八. APE 
   APE的本质,其实它是一种无损压缩音频格式。庞大的WAV音频文件可以通过Monkey”s Audio这个软件进行“瘦身”压缩为 APE。很时候它被用做网络音频文件传输,因为被压缩后的APE文件容量要比WAV源文件小一半多,可以节约传输所用的时间。更重要的是,通过 Monkey”s Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致。所以APE被誉为“无损音频压缩格式”, Monkey”s Audio被誉为“无损音频压缩软件”。与采用WinZip或者WinRAR这类专业数据压缩软件来压缩音频文件不同,压缩之后的 APE音频文件是可以直接被播放的。 Monkey”s Audio会向Winamp中安装一个“in_APE.dll”插件,从而使Winamp也具备播放APE文件的能力。
和上面介绍的几款编码不同的是,这个编码提供了最好的音质保证(无损压缩)!还提供了 Winamp的插件支持,可以直接用Winamp来播放.所谓无损就是指压缩后的格式和源文件在音质上并无差异,而Mp3、WMA等的编码方案是基于有损的,在损失部分音质的前提下节约存贮空间,所以说音质再好的Mp3、WMA也只能是无限接近源文件的音质。APE非常适合来编码讲究细节的独奏曲目和大动态的交响曲。向各位音乐迷们(不是歌迷)作最强烈的推荐!它的压缩比约为2:1.
  九. WAV
  WAV是录音时用的标准的windows文件格式,文件的扩展名为“ .wav”,WAVE文件作为最经典的Windows多媒体音频格式,应用非常广泛。声道有单声道和立体声之分,采样频率一般有11kHz、22kHz和44kHz三种。
WAVE文件所占容量=(采样频率×采样位数×声道)×时间/8(1字节=8bit)。
  WAV文件与MIDIMP3这类多媒体声音文件比较起来,所占的硬盘空间要大得多,但WAV文件的回放效果是最好的,WAV文件直接反映了一个声音在每个时刻的大小值,1分钟 44khz 采样率的WAV文件就会占用10M硬盘空间!
它通常作为制作高质量音乐的中间体
  十.RM
  Real Networks公司所制定的音频视频压缩规范称为Real Media,用户可以使用RealPlayer或RealOne Player对符合RealMedia技术规范的网络音频/视频资源进行实况转播并且RealMedia可以根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。这种格式的另一个特点是用户使用RealPlayer或RealOne Player播放器可以在不下载音频/视频内容的条件下实现在线播放。另外,RM作为目前主流网络视频格式,它还可以通过其Real Server服务器将其它格式的视频转换成RM视频并由Real Server服务器负责对外发布和播放。RM和ASF格式可以说各有千秋,通常RM视频更柔和一些,而ASF视频则相对清晰一些。
RM格式一开始就定位在视频流应用方面,也可以说是视频流技术的始创者。它可以在用56 K Modem拨号上网的条件下实现不间断的视频播放,当然,其图像质量和MPEG2,DIVX等相比有一定差距,毕竟要实现在网上传输不间断的视频是需要很大带宽的。
RM已经是昨日黄花,没有任何新意,低Bitrate比不过WMA,高Bitrate比不过MP3,虽然新的RM导入了ATRAC3算法,但颓势已定,很难东山再起了。

作者:AngryFox 分类: Uncategorized February 24th, 2014 暂无评论

1.每小时录像文件大小计算公式: 码率大小*3600/8/1024 = MB/小时。
2.硬盘录像机硬盘容量计算公式: 每小时录像文件大小*每天录像时间(时)*硬盘录像机路数*需要保存的天数。
例如:
8路硬盘录像机,音视频录像,采用512Kbps定码率录像,每天定时录像12小时,保存天数为15天。
计算公式如下:
每小时录像的大小 = 512*3600/8/1024 = 225M
硬盘容量 = 225*12*8*15 = 320GB 左右

客户端
1.创建socket.
2.绑定bind。
3.发送send。
服务器端
1.创建socket.
2.绑定bind。
3.监听listen.
4.接受accept.
5.接收recvive。

1.建立握手信息。通过socekt建立握手,然后将客户端的信息发送给服务器,这些信息包含推向服务器的直播流信息(rtmp://192.168.1.10/dd),agent信息,pageurl信息等等。根据需要可以在adobe服务的日志文件中看到。
2.服务器与客户端连接成功后,服务器会发送给客户端一个连接(connect)成功的信息。这样就建立了一个完整的通路,实现了一个客户端登录到adobe服务器的操作。
3.开始直播。先往服务器上发送releaseStream消息,onFCPublish消息,然后再发送createStream消息。进行这些操作的目的是告诉服务器我要进行发布一个流的信息,类似于跟服务器提前打招呼。然后再将直播流推送到服务器上。
4.停止直播。往服务器上发送onFCUnpublish消息,然后再发送deleteStream消息。这些操作的目的是销毁之前的流信息,使服务器不向外发布直播信息。

注意:在往服务器推送直播流的过程中,音频和视频使用不同的通道。上面提到的XXX消息,是根据RTMP自定义的协议规则去组成的,例如releaseStream消息的组成方式。

bool SendReleaseStream(RTMP *r)
{
RTMPPacket packet;
char pbuf[1024], *pend = pbuf + sizeof(pbuf);
char *enc;

packet.m_nChannel = 0x03;
packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM;
packet.m_packetType = 0x14;
packet.m_nTimeStamp = 0;
packet.m_nInfoField2 = 0;
packet.m_hasAbsTimestamp = 0;
packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE;

enc = packet.m_body;
enc = AMF_EncodeString(enc, pend, &av_releaseStream); //函数名称
enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes);
*enc++ = AMF_NULL;
enc = AMF_EncodeString(enc, pend, &r->Link.playpath);
if (!enc)
return false;

packet.m_nBodySize = enc - packet.m_body;

return RTMP_SendPacket(r, &packet, false);
}

客户端采用fms(flash media server)自带的sample。服务器采用flash media server,使用H264编码,开启三个码率标准(低、中、高清)。一台origin源服务器,一台edge边缘(代理)服务器。测试的效果还不错,PC机+USB普通摄像头测试,延迟2秒左右。
(1)flash压制H264视频时,观看的视频不是很平滑。adobe官网的解释是,fms缓存了H264的I帧(关键帧),当观看视频直播时,客户端取得前一个I帧之后的所有视频,并解码显示。这导致,当前获取的视频可能是几秒之前的视频,于是系统在数秒内快速播放这几秒的视频,导致视频看起来很快。过段时间就会恢复正常。adobe建议,调小I帧的时间间隔,以便提高“流畅”性。——显然,这会导致压缩率降低。
(2)负载均衡。最初,我在adobe的官方文档上看到“LoadBalancer”字样,以为fms自带了负载均衡组件。事实上并不是这样。可以安装LVS(Linux平台)等第三方软件来实现负载均衡,或者使用硬件实现负载均衡。
(3)服务器集群。基本上是origin+edge+LoadBalancer(负载均衡)的方式实现。

小结:
fms售价较高,所以,使用FMS作为视频直播、视频点播解决方案,成本稍高。

http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html

http://www.cnblogs.com/haibindev/p/3466094.html

http://blog.s135.com/post/409/

http://blog.csdn.net/langeldep/article/details/8898803

http://blog.csdn.net/langeldep

http://www.cnblogs.com/haibindev/archive/2012/04/16/2450989.html

http://blog.csdn.net/zhengv/article/details/6066989

https://github.com/alemic/nginx-rtmp-module

作者:AngryFox 分类: Uncategorized February 17th, 2014 暂无评论

http://www.cplusplus.com/reference/

Instagram 开发团队奉行的三个核心原则:
•Keep it very simple (极简主义)
•Don’t re-invent the wheel (不重复发明轮子)
•Go with proven and solid technologies when you can(能用就用靠谱的技术)

协议 容灾 轻重 监控
ffmpeg
4/7层交换

MySQL-mmm有漂移IP,像keepalive,但是他不能控制去写里读
2. 更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

3. 无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。
7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。
11. inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。

网页二维码登陆
了解oauth2.0原理,移动端微信已经登录,获得access_token,
再与扫描的二维码中的字符串进行组合编码,发送给服务器,
服务器给浏览器网页的监听器发送消息(通过浏览器端捕获net连接,就能看出它是通过XHR-polling来实现的),网页解析消息,并得到access_token,实现登录。
二维码只是充当一个掩码作用…

微信移动端扫描二维码登录(C-S-C模式)
CSC模式为:web客户端 –> 服务端(腾讯) <– iPhone客户端

认证步骤:
1)打开微信网页版,在浏览器生成一个web客户端,此客户端并未任务授权,但服务端给它生成了一个唯一标识码UUID,监听服务端登录请求;
2) iPhone客户端点击 [登录网页版] 时,实际上此时客户端是登录了且有访问授权码 access_token,扫描网页二维码,获得UUID,将access_token 与UUID编码后,传自腾讯服务端,服务端生成登录授权码,通知正在监听中的网页客户端;
3)网页客户端通过侦听器获得授权码,往服务器请求用户信息,完成登录过程。

把生活当初是修行,用积极的心态面对。你会活的很舒心,很淡定!

作者:AngryFox 分类: Uncategorized February 10th, 2014 暂无评论

http://www.ibm.com/developerworks/cn/linux/l-sockpit/

socket的bind失败,端口被占用,netstat -anop | grep 2099后,发现是一个timewait的tcp占用端口,无pid可以关闭
修改/etc/sysctl.conf

linux下TIMEWAIT回收时间调整:

net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0

设置为1
sysctl -p生效
等keepalive过期后,端口即可使用

在程序中添加
int on;
on = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );
用netstat和ps都还能看到端口在使用中,但运行程序不会出现“Address already in use”的错误了,实现了端口的重用。

使用 SO_REUSEADDR 套接字选项避免地址使用错误

int sock, ret, on;
struct sockaddr_in servaddr;
/* Create a new stream (TCP) socket */
sock = socket( AF_INET, SOCK_STREAM, 0 ):
/* Enable address reuse */
on = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );
/* Allow connections to port 8080 from any available interface */
memset( &servaddr, 0, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 45000 );
/* Bind to the address (interface/port) */
ret = bind( sock, (struct sockaddr *)&servaddr, sizeof(servaddr) );

在应用了 SO_REUSEADDR 选项之后,bind API 函数将允许地址的立即重用。

ffmpeg general protection rip
sphinx_http_api[19108]: segfault at 000000000637f000 rip 0000003f0807b936 rsp 00002b3e01237088 error 4