Ⅰ Asterisk播放mp4(1)——音频和PCM编码
本文分为四个部分:音频基本概念,PCM编码格式介绍,PCM A-law编码格式介绍,制作测试样本。
我们听到的声音是由频率(是什么)和强度(有多响)决定的。上图是一个正弦函数生成的音频,频率是441Hz,采样率是44.1kHz,采样(sample)的最大值是4095。声音的频率就是一个完整的波形没秒钟重复的次数,采样率(sample_rate)是每秒钟收集多少次声音的强度数据,这样每个完整的波形包含100个采样。
上面这个图是个单声道(channel)的音频,实际的音频很多都是多声道的。当有多个声道时,需要定义每个声道中的采样用什么方式进行排列,例如:双声道的时,可以 LRLR... ,也可以 LL...,RR... 。(这个问题会在后续讲容器的文章中在详细说明)
每个采样(sample)代表了声音的强度,但它这并不是个绝对的声音大小,只是相对的。因为,同样的声音文件通过不同的设备播放,声音的大小显然不同,这个和播放设备提供的能量有关。声音的绝对大小用分贝(dB)度量,采样只是和分贝的相对关系。
PCM(Pulse Code Molation,脉冲编码调制)是对声音的振幅(音量的大小)进行编码,位深度为14bit,20bit,24bit等(用多少个二进制位表示)。通过每秒钟记录若干次振幅的值(采样率,8k,44.1k,48k等),把声音的波形记录下来(频率)。
计算机系统中8个二进制位对应1个字节,所以实际表示一个采样时,需要用1个,2个或4个字节进行表示;每个字节又可采用有符号或无符号的方式。当用多个字节表示一个采样时,又存在字节序的问题,就是前面的字节表示的高位还是低位,分为大字节序(big-endian,将高序字节存储在起始地址)和小字节序(little-endian,将低序字节存储在起始地址)。这样就会产生 很多编码的组合,下面是 ffmpeg 支持的 pcm 采样格式(也可以通过命令行 ffmpeg -formats | grep PCM 查看)。
PCM本身是一种无损(lossless)编码格式(我理解无损的含义是收集到什么就记录什么,不同格式间的差别在于记录的精度,并不因为方式产生的损失)。但是在电话系统中为了更有效地传递数据,提出了 PCM A-alaw 和 PCM mu-law 两种编码格式,其思路是将原始的PCM编码, 压缩成8位的编码(具体的算法不展开了,可以参考 g711原理pcm转alaw,pcm转ulaw,alaw转pcm,ulaw转pcm )。
alaw 是将13位的有符号数压缩为8位的有符号数,是有损编码(压缩),编码后的数据通过解码无法恢复到原状,数值越大的采样损失的数据就越多。(这里有个疑问,在系统中是用16位保存一个样本的,那是否又有3位数据丢掉了?)
alaw 只定义了采样的编解码方法,但是实际使用中还要注意采样率的问题,通常mp3,mp4这些音视频文件中的采样率为44.1k或48k,而电话系统中的采样率为8k,那么从高采样率到低采样率,必然又会产生损失。
上图是实现Asterisk播放mp4文件的简要流程,中间涉及到音频的编解码过程,其中任何一个环节(出现错误或者因为编解码带来损失)都可能导致最终听到的声音有问题(失真,噪音等)。我们必须找到一种方法验证在各个环节是否运行正确,例如;采样率,采样位深度等等。我采用的方法是通过 ffmpeg 这个工具生成测试数据,并按照各个环节产生的编码格式生成对应的参照数据,然后比较在各个环节实际产生的数据是否正确。
通常mp4文件中的音频解码出的裸流是 pcm_s16le (有符号,2字节,小字节序),那么我们先生成一个该格式的10秒钟的裸流。
ffmpeg 告诉我们生成的文件的编码格式 pcm_s16le ,采样率是 44100 ,单声道 mono 。通过查看源码(libavfilter/asrc_sine.c)可以知道:1、正弦波的频率是441Hz,那么 每周期包含100个采样(44100/441) ,这个有助于我们理解生成的数据的变化规律;2、 采样的最大值等于4095(0xfff) ,并不是有符号16位数的最大值32767(0x8000),这个最大值正好是12bit,加上1位符号位是13,正好和 alaw 将13位有符号数转为8位对应上了。
生成文件的大小是 882000 字节,44100个采样/秒 * 10秒 * 2字节/采样。
读取生成文件的前200个采样(400个字节)生成图形如下:
按16进制格式打开文件(vi sine-10s.s16le,打开后 :%!xxd ),查看数据:
可以看到在第26个采样达到最大值 ff0f ,第76个采样达到最小值 01f0 。因为是小字节序,要调换字节顺序,所以最大值对应的是 0x0fff(4095) ,最小值对应的是 0xf001(-4095) 。
用上面的 ffmpeg 命令生成一段10秒钟的 pcm_s16le 格式音频文件(裸流,没有进行封装)。我们既可以用耳朵听,也可以用眼睛看这个音频。
下面我们把同样的声音做 alaw 编码。
生成文件的大小 441000 ,44100个采样/秒 * 10秒 * 2字节/采样。
读取生成文件的前200个采样(200个)字节,生成图形:
alaw 采样的符号位和原始pcm数据符号位是相反的,所以波峰和波谷和 s16le 是相反的;因为数据进行了编码压缩,所以编码后的数据并不能体现出原始波形,但是频率并没有发生改变。
直接打开文件查看数据:
可以看到在波峰波谷位置数据的差异变小了。
如果需要设置采样率(默认是44.1k),例如:8k,可以通过 ar 参数实现。
alaw 是一种压缩格式,需要解压缩才能播放,按 alaw 算法解码出来的采样时13位有符号数,对应的存储格式就是 pcm_s16le ,所以我们看看alaw转s16le会是什么样?
这次是用之前生成好的 alaw 文件作为输入。
取前200个样本生成图形。
从图形上可以看到整体波形并没有发生改变,但是在波峰波谷的位置存在失真,这表明 alaw 的编解码过程带来了损失。
查看原始数据我们也可以看到已经和原始 s16le 数据不同,数据精度下降了。
生成一段空白10秒裸流,采样全是0。
ffmpeg -lavfi anullsrc=r=44100:cl=mono -t 10 -f s16le -c:a pcm_s16le null-10s.raw
生成一段指定内容的裸流(并不能设定为特定值,如果指定的是0,输出的是0,否则是最大值)。
ffmpeg -lavfi aevalsrc=1 -t 1 -f s16le -c:a pcm_s16le eval-1s.raw
执行如下命令,可以查看音频文件的音量:
获得输出内容:
n_samples: 441000
mean_volume: -21.1 dB
max_volume: -18.1 dB
histogram_18db: 128000
看这个数据仍然不太明白音量到底是什么,通过看源码,形成大体上的理解,0dB被当作音量的极大值,对应16位有符号数的最大值就是32767(0x8000),等于91dB的音量。(目前并不确切知道为什么选91分贝这个值,似乎是再高的值人就受不了。)
参考: http://ffmpeg.org/ffmpeg-filters.html#anullsrc
参考: http://ffmpeg.org/ffmpeg-filters.html#sine
参考: http://ffmpeg.org/ffmpeg-filters.html#aevalsrc
参考: https://trac.ffmpeg.org/wiki/AudioVolume
参考: http://ffmpeg.org/ffmpeg-filters.html#volumedetect
参考: https://stackoverflow.com/questions/2445756/how-can-i-calculate-audio-db-level
Ⅱ android语音聊天软件怎么实现
介绍使用较广的三款语音聊天软件:
1.YY语音最早用于魔兽玩家的团队语音指挥通话,逐渐吸引了部分传奇私服用户,最后发展为穿越火线游戏用户必备的团队语音工具,笔者曾在穿越火线游戏中目测,99%的战队收人广告后面都挂着YY语音ID。2009年初YY娱乐用户已经形成了可以和游戏用户抗衡的用户群,YY语音的娱乐公会开始逐步超越游戏公会,人气也日渐增长。时至今日,YY语音已经成为集合团队语音、好友聊天、视频功能、频道K歌、视频直播、YY群聊天、应用游戏、在线影视等功能为一体的综合型即时通讯软件。
2.腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与多种通讯终端相连。2015年,QQ继续为用户创造良好的通讯体验。其标志是一只戴着红色围巾的小企鹅。目前QQ已经覆盖Microsoft Windows、OS X、Android、iOS、Windows Phone等多种主流平台。
3.微信 (WeChat)
是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费(需
消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”
公众平台“、”语音记事本“等服务插件。截止到2015年第一季度,微信已经覆盖中国 90% 以上的智能手机,月活跃用户达到 5.49 亿,用户覆盖
200 多个国家、超过 20 种语言。此外,各品牌的微信公众账号总数已经超过 800 万个,移动应用对接数量超过 85000
个,微信支付用户则达到了 4 亿左右。
Ⅲ 编码g.711 g.168 g.729 g.723 哪个好
你的问题貌似网络通信之类的。
基本资料如下:
FPS(Frames Per Second)即每秒传输帧数,指动画或视频的每秒显示的画面数,每秒钟帧数 (FPS) 愈多,所显示的动作就会愈流畅。
G.711是一种由国际电信联盟(ITU-T)订定音频编码方式,又称为ITU-T G.711。G.711使用64Kbps的带宽,可将14bits转换成8bits。G.711有两个编码方式,A-law以及Mu-law。2008年3月国际电信联盟正式发布了最新的宽带语音编解码标准G.711.1。
G.726是ITU-T定义的音频编码算法。1990年 CCITT(ITU前身)在G.721和G.723标准的基础上提出。G.726可将64kbps的PCM信号转换为40kbps、32kbps、24kbps、16kbps的ADPCM信号。
问题的意思是:
一个媒体文件,它的音频采用某种音频编码格式,且该格式可以被G.726或G.711解码,其回放效果可达到16bit,其动画不低于每秒钟1帧。
或某个硬件,支持文件采用G.726或G.711的编码,其音频可转换到16bit,其动画编辑能力不低于每秒钟1帧。
Ⅳ android语音聊天软件怎么实现
看你要实时传输的还是非实时的.
开头的过程都是捕捉音频然后编码.编码也可以说是语音压缩,压缩算法有n种.gsm,g711,g723,g729,g722,silk,ilbc ====,
实时传输可以使用RTP协议.有开源的rtp协议实现库.
在android平台上比较快速可以实现的有PJMEDIA.有java ports.
Ⅳ 什么样的火焰识别预警系统好
产品名称:火焰检测识别预警系统,火焰侦测摄像机
产品型号:KDO-PHY102-Y
一、产品概述
科缔欧火焰检测识别预警系统支持全光谱火焰检测,极速火焰检测并输出抗各类光源干扰检测距离远检测灵敏度可调全屏幕检测支持多达 16 个屏蔽区域 ,产品致力于服务智慧消防平台智能化建设,有效实现对烟火智能检测的实时预警,包括事件预警、信息推送等功能。
二、产品特点
(1)高清网络智能分析摄像机
200万高清网络摄像机,基于先进的海思平台。
(2)火焰监测预警抓拍
嵌入式前端摄像机自动分析火焰事件并抓拍相关图像视频。
(3)支持ONVIF协议
支持ONVIF协议可对接主流NVR等存储设备。
(4)预警信息推送
将抓拍的图像视频信息推送到智能安防信息平台上。
(5)适应性强
独特的边缘算法可大幅降低误报率,适用于户外户内等任何复杂环境。
三、产品参数
参数/型号
摄像机
图像传感器
1/2.9" Progressive CMOS
图像尺寸
1920x1080
自动光圈
固定光圈
电子快门
1/25秒至1/20000秒
低照度
彩色:[email protected],AGC ON
黑白:0lux with IR
镜头
3.6定焦
日夜转换模式
ICR红外滤片式
宽动态范围
物理宽动态
数字降噪
2D/3D数字降噪
图像
视频压缩格式
H.265 / H.264 / MJPEG
H.265压缩标准
Main Profile @Leve4.1 High Tier
编码方式
VBR/CBR
画质
VBR条件下五档可调,CBR条件下可任意
压缩传输码率
64Kbps~10Mbps
分辨率
1080P(1920×1080)、720P(1280×720)、D1、CIF、480x240
图像设置
感兴趣区域、亮度、色度、饱和度、对比度、宽动态、锐化、降噪(均可通过IE和客户端进行调节)
音频压缩格式
G711A/U
感兴趣区域
支持每个码流感兴趣区域独立配置
接口
网络接口
RJ45 10m/100m 自适应以太网口
视频输出
CVBS视频输出(BNCx1)
音频
双向音频(MIC IN×1,MIC OUT×1)
存储卡
支持TF卡,大128GB
功能
远程监控
IE浏览、CMS远程控制
网络协议
TCP/IP、UDP、DHCP、NTP、RTSP、PPPoE、DDNS、SMTP、FTP
接口协议
ONVIF、GB-T/28181-2011
存储
TF卡本地存储,网络远程存储
智能报警
火焰监测预警
PoE供电
支持
检测距离
30m
防水等级
IP66
其他
电源
DC12V/PoE
工作环境
-20℃ ~ 50℃,10% ~ 90%
四、产品运用
可部署于重要住宅、店铺、厂房、仓库等的AI智能分析摄像头将自动检测所有火焰事件,从而起到预防火灾的发生。
Ⅵ 视频会议中的宽音频协议有哪些
H.323协议
H.225协议
H.245协议
H.263协议
H.264协议
MPEG-4协议
等等。
详情可以登录广东群英网络视频会议网站查询。
Ⅶ 松下p2卡mxf文件被格式化,怎么恢复
太原某电视台松下机器拍摄的P2卡,误操作导致数据全部丢失,因为拍摄的节目需要播出,只能加班至此恢复数据,一般松下的格式化话或许删除之后数据直接清零的居多,客户运气还算较好,底层数据没被清除!
P2卡的音频以及视频是分别存储在不同目录的,但是在物理层面是连续存储在一个未分段的数据块内,因此统一对这些数据块进行提取,算是完成第一阶段的工作,然后,我们根据客户提供的样本进行了存储结构分析,发现存储有一定的存储规律,但是遗憾的是根据规律恢复的数据是失败的,因为提取出来的数据100%全部存在问题,出现花屏以及马赛克问题。因此进一对样本内的文件进行分析,根据mxf文件分析我们发现mxf的文件结构可以作为视频碎片提取的根据,但是这一方案提取恢复出来的视频均为小碎片,但是无奈客户对视频完整度要求极高这样的小碎片是无法满足需求的,因此放弃这一方案。
通过对mxf的音频以及视频的分析,由于视频和音频采用编码方式不同,音频采用的G711A编码,因此这给分离视频以及音频创造了可能,我们将视频进行32KB的簇大小切块,并且采用信息熵算法将数据块进行取值运算。
通过信息熵的算法,我们获取到了音频以及视频的存储边界信息,但是发现,部分音频信息量巨大,无法和视频明确分离,导致组合出来的碎片大概有30%左右的视频是会花屏的,因此我们根据G711编码特征,加入第二种统计算法,根据信息熵以及统计值进行二次运算,获取了更加准确的边界信息,将准确率提高到95%以上,另外5%由人工完成。
然后写个组合程序对生成的边界文件进行视频以及音频的分离提取,顺利完成整个工作。
恢复客户需要的音视频文件,46.9GB
视频文件播放无问题,完整度100%。
Ⅷ 如何在DM368平台下搭建 NFS 调试环境
硬件准备:一台基于ARM11的开发板,最好带显示屏的。 软件准备:linux操作系统,NFS网络文件,JTAG调试工具,arm-linux-gcc编译工具链,嵌入式linux操作系统(根据开发板和处理器配置并且编译),扩展库(比如GUI,如果有的话)。
Ⅸ VB编写能播放音频的程序。。。100分提供
我用vb编了一套播放器程序,有源代码,要的话发email我
[email protected]
下文为程序的参考资料(详)
MCI Command String总览
MCI Command String是多媒体设备的程序接口。通过它,我们可以打开一个多媒体文件,例如mp3,VCD文件,Mpeg4格式的文件等等,并对它进行播放,暂停,关闭等操作。现在小弟有幸给大家介绍一下MCI Command String的使用方法。
MCI Command String是通过mciExecute或mciSendString两个函数执行的。这两个函数的声明如下:
Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
这两个函数都有一个叫lpstrCommand的参数, 这个参数就是我们今天要介绍的MCI Command String。其中函数mciSendString还有三个参数,lpstrReturnString是一个字符串,它用来接收mciSendString函数返回的信息(例如,我们在lpstrCommand中的命令是让函数返回打开的文件的设备类型,那么函数就把设备类型的信息保存在这个参数中。);uReturnLength参数用来指定参数lpstrReturnString的长度;hwndCallback是接收”wait”、”notify”消息的窗口句柄,在Visual Basic中调用时该参数设为0即可。如果命令执行出错,函数mciExecute会直接弹出一个对话框,提示出错的原因。而mciSendString函数会返回一个ErrorCode (错误代码),该代码的具体含义您可以参考MSDN中的目录”Platform SDK\Graphics and Multimedia Services\Windows Multimedia\Multimedia Reference\Multimedia Constants\MCIERR Return Values”。您可以根据具体情况选择到底使用哪一个函数来执行MCI命令。例如,在调试的时候使用mciExecute,以便快速地获得错误原因,而在将要发布的程序中使用mciSendString函数,让程序中已设置的错误陷阱去处理错误,以避免频繁的错误提示而使用户觉得厌烦。
在熟悉了这两个函数后,我们就可以进入正题――MCI Command String了。
MCI Command String的命令格式是这样的:lpszCommand lpszDevice lpszCommandFlag lpazFlag
lpszCommand是mci命令,例如open,play,stop,close等等。
lpszDevice是设备名(或文件名)。例如,我们用以下的程序打开了我的文档中的Music01.dat文件,并用”alias”参数将其别名设为OpenFile:
Dim lReturn As long (1)
lReturn=mciExecute(“open C:\Mydocu~1\Music01.dat alias OpenFile type MPEGVideo”) (2)
那么,在以后的MCI Command String中lpszDevice参数必须指定为OpenFile。例如,关闭该文件的代码如下:
lReturn=mciExecute(“close OpenFile”) (3)
如果我们没有为打开的文件设定别名,则以后调用的MCI Command String中lpszDevice参数为DOS路径名加文件名。例子如下:
Dim lReturn As long(4)
lReturn=mciExecute(“open C:\Mydocu~1\Music01.dat type MPEGVideo”)(5)
lReturn=mciExecute(“close C:\Mydocu~1\Music01.dat type MPEGVideo”)(6)
从这里可以看出,设定别名的好处是减少了代码的输入。
LpszCommandFlag是mci命令的参数。如上代码(2),”alias OpenFile”以及”type MPEGVideo”就是命令”open”的参数。通常一个mci命令的参数少则几个多则几十个。LpazFlag可以为指定为”wait”或”notity”。如果为”wait”,那么mci命令执行完毕后会向父窗体发送MCI_WAIT消息,”notity”则发送MCI_NOTIFY消息。此参数在Visual Basic中无甚用处。
在此先声明一下,微软支持的多媒体设备的类型共有cdaudio,dat,digitalvideo,other,overlay,scanner,sequencer,vcr,videodisc,waveaudio十种(注意:微软不支持RealPlay格式的文件。您可以用以下代码获得已打开的文件的类型:lReturn=mciSendString(“capability lpszDevice device type”,sReturn,32,0) )。至于哪一类设备支持哪些参数,您可以在MSDN中查找关键字”MCI Command Strings”,选中所列出的命令,在其中的HTML帮助文档中通常会有一个表格告诉你哪些设备支持哪些参数或者在第一段中有信息告诉您哪些设备支持该命令。
好了,现在让我们对又繁索,又该死,又强大的mci命令参数作一个系统的介绍。(本文仅介绍open命令的常用参数,其它命令的参数有机会小弟再介绍给大家。)
open:
该命令用来打开一个多媒体文件。所有的设备都支持这个命令。在任何mci命令执行前,都必须先打开多媒体文件,以初始化设备。
该命令的几个参数意义如下:alias device_alias――指定欲打开文件的别名;shareable――是否以共享方式打开,如果不指定该参数,则以不共享的方式打开,也就是说,打开某一个多媒体文件后,其它程序不能再打开它,如果指定该参数,则以共享方式打开;type device_type――指定该文件在Windows中注册的多媒体文件名(注:Windows中注册的多媒体文件名与设备类型名并不相同,设备类型只有以上所说的十种类型,而Windows中注册的多媒体文件名请查看C:\Windows\win.ini文件的[mci extensions]小节。),如MPEGVideo,AVIVideo,waveaudio等,MPEGVideo、AVIVideo类型的文件其实都属于设备digitalvideo。
对于open命令,有几个须注意的方面。首先,用open命令打开一个文件时,文件的路径必须是DOS格式的短路径。您可以用API函数GetShortPathName返回某路径的该格式。对于参数type device_type,复合型设备的文件(如:MPEGVideo)mci设备会自动根据其在Windows中注册的扩展名 (要想获得某扩展名的文件在Windows中注册的类型名,请查看C:\Windows\win.ini文件的[mci extensions]小节。)设置该参数(所以对于C:\Windows\win.ini文件的[mci extensions]小节中已列的扩展名,不必指定该参数),但如果设备无法根据其扩展名获得文件的类型的话,就必须指定该参数,如果不指定则会提示:”这不是已注册的mci设备”,而简单型设备(如CD音轨设备,可编程控制的录放像机,可编程控制的镭射影碟机)则不必指定该参数。
如果该命令被成功执行,那么返回值为0。至此,您就可以用alias指定的别名执行各种各样的mci命令了。
Break:指定一个键来退出使用wait参数的当前mci命令。
Capability:获得已打开的设备的功能,比如能否播放,能否退出,能否记录等等。
Capture:将帧缓冲的数据拷贝到指定的文件中。
Close:关闭设备,释放内存。
Configure:显示一对话框,以设置设备的某些属性。
Copy:将数据拷贝至剪切板。
Cue:在播放或记录之前执行该命令可以加快播放或记录速度。
Cut:将工作区的数据剪切到剪切板。
Delete:从已打开的多媒体文件中删除数据段。
Freeze:终止视频输入或输出,禁止视频流从帧缓冲中获得数据。
Info:获得设备信息,例如算法,版权,所打开的文件,UPC等等。
List:返回视频和音频的数量和类型。
Load:用设备指定的格式打开一个文件。类似于open的功能。
Monitor:指定当前源,默认的当前源是当前工作区。
Paste:将剪切板的内容拷贝至工作区。
Pause:暂停播放或记录。
Play:呵呵,这个命令无须多说。
Put:决定显示源和显示目的窗口的区域。
Quality:自定义音频或视频的quality level和静态图像的压缩方式(例如BMP、JPG)。
Realize:自定义图像显示窗口的调色板。
Record:无须多说。
Reserve:为设备的工作区分配连续的磁盘空间。
Restore:将一静态图像从文件拷贝到帧缓冲中。
Resume:继续播放或记录。
Save:保存一个mci文件。
Seek:定位到指定的帧位置并等待。
Set:设置某些参数。(例如左声道,光驱开关,Time Format等等。)
Setaudio:设置音频参数。(例如低音,高音,左右声道)
Setvideo:设置视频回放或捕捉的参数。(例如亮度、对比度、伽马值等。)
Status:返回已打开的设备的状态信息。
Step:设置慢放时步进的帧数,负数即倒放,单位为帧/秒。
Stop:无须多说。
Undo:撤消最近一次、cut、delete和paste命令。
Unfreeze:Freeze的反操作。
Update:读取当前帧的数据,并显示在目标窗口或目标DC(设备场景)。
Where:获得Put命令指定的源或目标显示区域。
Window:设置播放的窗口。可以用它把播放窗口设置为其它窗口,取消默认的窗口。
channels channel_count:设置播放或记录的频道
clock time:将外部时间设为变量”time”。该变量为一无符号长整形数值
counter format:设置计数器格式
counter value:将VCR计数器设为指定的值
door closed:收回光盘托盘
door open:退出光盘
file format format:指定”save”或”capture”命令使用的时间格式。如果省略,则设备默认的格式会被使用。如果指定了一个与当前算法和”quality”相冲突的文件格式,则会使用默认的文件格式。以下都是以定义的文件格式:
avi:AVI格式;avss:AVSS格式;dib:DIB格式;jfif:JFIF格式;jpeg:JPEG格式;mpeg:MPEG格式;rdib:RLE DIB格式;rjpeg:RJPEG格式
format tag pcm:设置播放或记录的格式为PCM,文件即以该格式保存
format tag tag:设置播放或记录的格式,文件即以该格式保存
index timecode
index counter
index date
index time:设置VCR的当前显示
input integer:设置音频输入的频道
length ration:设置用户指定的VCR磁带长度
master midi:设置MIDI sequencer为同步源,同步数据以MIDI格式发送
master none:禁止MIDI sequencer发送同步数据
master smpte:设置MIDI sequencer为同步源,同步数据以SMPTE(Society of Motion Picture and Television Engineers电影与电视工程师协会)格式发送
offset time:设置SMPTE偏移。变量”time”的格式为:hh:mm:ss:ff;hh是小时,mm是分钟,ss是秒,ff是帧
output integer:设置音频输出的频道
pause timeout:设置”pause”命令的最大持续时间,单位为毫秒。0表示没有暂停
postroll ration ration:以当前时间格式设置执行一个”stop”或”pause”命令时用来中断VCR传输的时间长度
port mapper:将MIDI印射设置为接收MIDI消息的端口
port none:取消MIDI消息传送
port port_number: 将MIDI端口设置为接收MIDI消息
power on
power off:打开、关闭一个设备的电源
preroll ration ration:以当前时间格式设置用来稳定VCR输出的长度
record format SP
record format LP
record format EP:设置VCR记录模式,SP:正常播放;EP:外部播放;LP长播放
samplespersec integer:设置播放或记录的取样速度,文件即以该格式保存
seek exactly on
seek exactly off:设置两种定位模式。”seek exactly on”是指定位到指定的那一帧。”seek exactly off”是指定位到与指定帧最接近的关键帧。
slave file:设置MIDI sequencer使用文件数据作为同步源,这是默认设置
slave midi:设置MIDI sequencer使用输入的MIDI数据作为同步源。sequencer以MIDI格式识别数据
slave none:设置MIDI sequencer忽略同步源数据
slave smpte:设置MIDI sequencer使用输入的MIDI数据作为同步源。sequencer以SMPTE格式识别数据
speed factor:设置工作区音频视频回放的速度。”factor”为一比例值:1000表示正常速度播放,500表示以正常速度一半播放,2000表示以正常速度2倍播放。为0时表示在不丢音视频帧的情况下尽可能地快放
still file format format:设置”capture”命令使用的文件格式
tempo tempo_value:设置sequence速度,以当前时间格式
time format btyes:在PCM格式文件中,设置时间格式为bytes。所有的位置信息都将表示为bytes值
time format frames:设置时间格式为帧
time format hms:设置时间格式为小时,分钟,秒
time format milliseconds:设置时间格式为毫秒
time format msf:设置时间格式为分钟,秒,帧。其表示为:mm:ss:ff。mm为分钟,ss为秒,ff为帧
time format samples:设置时间格式为取样频率
time format smpte24
time format smpte25
time format smpte30:设置时间格式为SMPTE帧速度
time format smpte 30 drop:设置时间格式为SMPTE30降速(?)
time format song pointer:设置时间格式为歌曲指针
time format tmsf:设置时间格式为磁道、分钟、秒、帧形式。其表示为:tt:mm:ss:ff。tt为磁道,mm为分钟,ss为秒,ff为帧
time format track:设置位置格式为磁道
time mode counter:设置位置信息模式为使用VCR计数器
time mode detect:设置位置信息模式为基于探测磁带时间代码信息的格式
time mode timecode:设置磁带的位置信息模式为使用时间代码信息的格式
video off
video on:关闭、打开视频
Setaudio:设置音频参数(例如低音,高音,左右声道)。digital-video和VCR支持该命令。
algorithm algorithm:选择一个指定的音频压缩算法。该算法将用在”reserve”和”record”命令中。MCI定义”algorithm”为:”g711”“g721”“g722”“g728”“pcm”“cdxa”“adpcm”“adpcm4e”
alignment to integer:设置与waveform-audio设备的输入数据起始部份有关的数据块队列
bass to factor:设置音频低音值
bitspersample to bit_count:设置记录时每次取样的bit数量
bytespersec to integer:设置每秒记录的平均byte数量
clocktime:指定在”over”参数中使用的时间单位为毫秒
input:激活”bass”“treble”“volume”参数的设置。使之影响播放和记录信号。这是默认设置
left off
left on:关闭、打开左声道
left volume to factor:设置左声道的音量
monitor to type number number:控制哪个输入源会传递到VCR的输出而不改变记录源的选择。”type”可以是”output”或其它有效的输入源。如果”number”没有指定,则第一个此类型的输入会被选择
off
on:关闭、打开音频
output:激活”bass”“treble”“volume”参数的设置。使之影响播放信号,并不影响记录信号
over ration:指定如果使用”factor”变量的参数有所改变,将花多长时间。”ration”为当前时间格式,如果不指定该参数,参数变化会立即执行
quality descriptor:指定音频记录到一个文件时压缩的特征。所有设备都支持”low”“medium”“high”
record off:清除音频源选择,接下来的”record”命令不会记录音频数据
record on:打开音频数据记录选择。这是默认项
record track track_number off:清除”track_number”指定的音频源选择,接下来的”record”命令不会记录该音频数据
record track track_number on:打开”track_number”指定的音频源选择
right off
right on:关闭、打开音频右声道输出
right volume to factor:设置右声道的音量
samplespersec to integer:在”pcm”或”adpcm”算法下记录的取样频率,文件即以该格式保存
source to sourcename:设置音频输入源。”sourcename”可以”left”“right”“average”“stereo”,分别意为左,右,平均,立体声
source to type number number:选择将记录在磁带上的音频源。”type”必须”tuner”“line”“svideo”“aux”“generic”“mute”
stream to number:指定工作区回放的音频流。如果该参数没有指定,而且文件也没有定义一个默认值,则音频驱动器物理上第一遇到的音频流会被播放
track track_number off:关闭指定磁道
track track_number on:打开指定磁道
treble to factor:设置高音值
volume to factor:设置左右声道音量
据本人的经验,低音值,高音值,及音量在0至1000之间取值。关于音频还有一个重要的方面容易让人迷惑:有些朋友期望将左(右)声道关闭来禁止左(右)声道的声音,但这种结果是剩下的声道仍有些未被关闭的声道的声音。这是因为默认的音频源总是立体声的,而立体声即是在左(右)声道中掺入轻微的右(左)声道的声音,以达到立体效果。要想完全禁止某一声道的声音,请使用”source to sourcename”参数。
Setvideo:设置视频回放或捕捉的参数(例如亮度、对比度、伽马值等。)。digital-video设备支持该命令。
algorithm algorithm:指定下一个”reserve”或”record”命令使用的视频压缩算法。MCI已定义的有:”mpeg”“h261”,如果指定的算法与当前的文件格式冲突,则会使用文件默认的算法
bitsperpel to count:设置用”capture”或”record”保存数据时每像素bit数量
brightness to factor:设置视频亮度
clocktime:指定”over”参数使用的时间单位为毫秒
color to factor:设置视频饱和度(色彩)
contrast to factor:设置视频对比度
gamma to value:设置伽马修正值。”value”为2200表示伽马值为2.2,1000表示不做伽马修正,
halftone:使用halftone调色板代替默认的调色板
input:激活”brightness”“color”“contrast”“gamma”“sharpness”“tint”参数设置,使之影响输入信号和记录信号
key color to r:g:b:设置”key color”为一RGB值
key index to index:设置”key index”。”index”必须为一物理调色板的索引
monitor to type number number:控制哪个输入源会传递到VCR的输出而不改变记录源的选择。”type”
number of marks:返回最大的遮罩数量,0表示不支持遮罩
ouputs:返回输出设备的总数
seek accuracy:返回定位某帧的精确度,0表示精确定位,1表示与所要定位的帧的误差不大于1帧
slow play rate:返回慢放的播放速度,单位为帧每秒
uses files:如果复合设备使用的数据保存在文件中则返回真
uses palettes:如果设备使用调色板则返回真
windows:返回设备支持的可以同时显示的窗口数量
Capture:将帧缓冲的数据拷贝到指定的文件中。digital-video支持该命令。
at pathname:指定所捕捉的帧缓冲中的图像所要保存的路径和文件名
at rectangle:指定所捕捉的帧缓冲中的图像区域,默认为put命令的source参数指定的区域
注意:该命令可能会在播放的时候或者在需要资源的操作中失效。如果帧缓冲在实时地更新,则会暂停。
Close:关闭设备,释放内存。当一个MCI设备的所有实例或文件都关闭的时候,该MCI设备被卸载。所有设备支持该命令。
注意:如果要关闭所有的设备需如此:close all
Configure:显示一对话框,以设置设备的某些属性。digital-video支持该命令。
Copy:将数据拷贝至剪切板。digital-video支持该命令。
at rectangle:指定要拷贝的帧缓冲的区域,默认为整个帧缓冲
audio stream stream:指定该命令影响的当前工作组的音频流,如果使用了该参数,又想拷贝视频流,则必须指定”video stream”参数,默认为audio stream+video stream
from position:指定开始记录点,默认为当前位置
to position:指定终点,该位置的视音频流不被记录,默认为当前工作组的终点
video stream stream:指定该命令影响的工作组中的视频流,如果使用了该参数,又想拷贝音频流,则必须指定”audio stream”参数
Cue:在播放或记录之前执行该命令可以加快播放或记录速度。digital-video,VCR和waveform-audio支持该命令。
from position:指定起始点
input:准备记录。digital-video可以省略
noshow:准备播放,但不先显示。
output:准备播放,如果input和output都没指定,默认为output
preroll:预滚动到下一位置
reverse:指定为倒放
to position:指定终点
注意:如果设备正在播放、记录或暂停则该命令会失败。使用了”output”参数时,再使用”play”命令的”from”、”to”或”reverse”参数则会退出该命令,使用了”input”参数时,再使用”record”命令的”from”、”to”或”initialize”参数会退出该命令。
Cut:将工作区的数据剪切到剪切板。digital-video支持该命令。
at rectangle:指定每一帧的区域。默认为整个帧。当该参数被指定时,帧并不被删除,代替原图像信息的为黑色块
audio stream stream:指定该命令影响的当前工作组的指定音频流,如果使用了该参数,又想剪切视频流,则必须指定”video stream”参数,默认为audio stream+video stream
from position:指定开始剪切点,默认为当前位置
to position:指定终点,终点并不被剪切,默认为工作组终点
video stream stream:指定该命令影响的当前工作组的指定视频流,如果使用了该参数,又想剪切音频流,则必须指定”video stream”参数,默认为audio stream+video stream
注意:在没有调用”save”命令前,虽然播放的时候好像”cut”命令已经成功了,但只有当”save”命令被调用后该命令所作的删除才会被写入文件
Delete:从已打开的多媒体文件中删除数据段。digital-video和waveform-audio支持该命令。
at rectangle:指定每帧删除的区域。默认为整个帧。当该参数被指定时,帧并不被删除,代替原图像信息的为黑色块
audio stream stream:指定该命令影响的当前工作组的音频流。如果使用了该参数,又想删除视频流,则必须指定”video stream”参数,默认为audio stream+video stream
from position:指定开始位置,默认为当前位置
to position:指定终点,默认为工作组终点
video stream stream:指定该命令影响的当前工作组的视频流,如果使用了该参数,又想删除音频流,则必须指定”video stream”参数,默认为audio stream+video stream
注意:在执行任何使用position参数的命令前,你可以使用”set”命令的”time format”参数来设定媒体的时间格式,如毫秒,帧等
Escape:将设备指定的信息传送到某设备。videodisc设备支持该命令。
Freeze:终止视频输入或输出,禁止视频流从帧缓冲中获得数据。dgital-video、video-overlay和VCR支持该命令。
at rectangle:指定区域。对于digital-video设备,在指定区域中的像素会遮罩覆盖。rectangle的格式为X1 Y1 X2 Y2。X1 Y1为左上角坐标,X2 Y2指定宽度和长度
field:冻结指定的区域,该参数为默认的
frame:冻结整个帧
input:冻结输入图像的当前帧,不管当前正在播放还是暂停
output:冻结VCR的当前帧输出。如果VCR在播放的时候执行该命令,则当前帧被冻结且VCR被暂停。如果VCE已暂停则当前帧被冻结。如果input和output都没指定,则默认为output
outside:指定被冻结的为”at”参数所定义的区域外面部分
注意:要指定一个不规则区域,可以组合使用freeze和unfreeze命令。一些video-overlay设备会限制区域的复杂度
index:控制VCR设备实屏显示。仅VCR设备支持
off:关闭实屏显示
on:打开实屏显示。显示的项目为”set”命令的”index”参数指定的信息
Info:获得设备信息,例如算法,版权,所打开的文件,UPC等等。所有MCI设备都支持该命令。
audio algorithm:返回当前音频压缩算法的名称
audio quality;返回当前音频压缩质量的描述。如果将其quality设为某一值而未使用其指定值可能会返回unknown
right:返回MIDI文件的版权信息
file:返回复合设备使用的文件名。如果设备没有打开一个文件而且”load”命令也没被用过,那么返回一个空字符串
info identity:为CD产生一个唯一的序列号
info upc:产生CD的UPC(Universal proct Code全球产品码)
input:返回当前输入设备的描述
name:返回sequence名字
output:返回当前输出设备的描述
proct:返回该设备的描述。返回信息经常包括产品名称和型号。返回信息经常是31个字节或更小
still algorithm:返回当前静态图像压缩算法名称
still quality:返回当前静态图像压缩质量描述名。如果将其quality设为某一值而未使用其指定值可能会返回unknown
usage:返回工作组中视音频数据的使用限制描述
version:返回设备驱动或硬件的版本
video algorithm:返回当前视频压缩算法名称
video quality:返回当前视频压缩质量描述名如果将其quality设为某一值而未使用其指定值可能会返回unknown
window text:返回设备使用的窗口的标题
List:返回视频和音频的数量和类型。digital-video和VCR支持该命令。
audio algorithm:返回音频压缩算法名称
audio quality algorithm algorithm:返回”algorithm”指定的压缩质量级别。如果”algorit
Ⅹ G.711的基本信息
它是国际电信联盟ITU-T定制出来的一套语音压缩标准,它代表了对数PCM(logarithmic pulse-code molation)抽样标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。 起压缩率为1:2, 即把16位数据压缩成8位。G.711是主流的波形声音编解码器。
G.711 标准下主要有两种压缩算法。一种是µ-law algorithm (又称often u-law, ulaw, mu-law),主要运用于北美和日本;另一种是A-law algorithm,主要运用于欧洲和世界其他地区。其中,后者是特别设计用来方便计算机处理的。