6.7-打包并压缩

tar 命令非常好用的一个功能就是可以在打包时直接压缩,支持 gzip 压缩、bzip2 压缩和 xz 压缩

打包的同时使用 gzip 压缩
使用 -z 选项,可以压缩成 gzip 格式的文件

[root@evan-01 evan1]# ll
total 410420
-rw-r--r--. 1 root root 209715200 Aug 21 14:30 big2.txt
-rw-r--r--. 1 root root    203695 Aug 22 17:18 big2.txt.zip
-rw-r--r--. 1 root root 209715200 Aug 21 14:52 big3.txt
-rw-r--r--. 1 root root    611377 Aug 22 17:45 big3.zip
-rw-r--r--. 1 root root 209715200 Aug 22 17:07 big4.txt
-rw-r--r--. 1 root root       177 Aug 21 11:50 big.txt.bz2
drwxr-xr-x. 3 root root        33 Aug 22 17:48 testdir
drwxr-xr-x. 3 root root        37 Aug 22 17:54 testdir2
-rw-r--r--. 1 root root     10240 Sep  4 15:19 testdir.tar
[root@evan-01 evan1]# tar -zcvf testdir.tar.gz testdir big2.txt big3.txt
testdir/
testdir/one/
testdir/one/big3.txt
testdir/big4.txt
big2.txt
big3.txt
[root@evan-01 evan1]# du -sh testdir.tar.gz 
796K    testdir.tar.gz
[root@evan-01 evan1]# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
共分割为两个压缩文件,解压到一个目录后,执行合并bat文件,就会自动合并 ---------------------------------- 期待已久的EJB3.0最终规范已经发布了。虽然EJB3.0最终规范出来了一段时间,但对EJB3.0的应用还停留在介 绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现EJB3.0 的开发过程,希望对大家有所帮 助。 EJB3 最激动人心的是POJO 编程模型,我想对开发人员的影响将是非常大的,因为他降低了开发人员编写EJB 的 要求。EJB3 的bean类将更像常规的Java bean。不要求像过去那样实现特殊的回调界面或者扩展EJB类。所以它 将使EJB的开发更像常规的Java 开发。 作者对EJB3.0 接触的时间很短,所以一些新的概念和知识理解也难免有误,有些概念和语义把握的不是很准, 希望在这方面有经验和了解的朋友批评指正,欢迎多提意见。 因为 JBOSS EJB3.0产品常未成熟,本教程随着新产品的推出将有所改动,请密切关注! 1.1 本教程适合人群 本教程适合具有Java 语言基础的EJB初学者。有读者来邮件问需不需要先学EJB2.0,作者明确地告诉你不用 学了。随着EJB3的发展,EJB2 将会逐步成为历史。 ======================== 第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成环境中的WEB应用调用EJB.....10 第三章开发前的准备............10 3.1 熟悉JBOSS的目录结构10 3.2 JBOSS中的部署............. 11 3.3 如何进行EJB打包....... 11 3.4 如何进行WEB应用打包...........12 第四章会话 BEAN(SESSION BEAN).........13 4.1 STATELESS SESSION BEANS(无状态BEAN)开发........13 4.1.1 开发只存在Remote接口的无状态Session Bean 13 4.1.2 开发只存在Local接口的无状态Session Bean...16 4.1.3 开发存在Remote与Local接口的无状态Session Bean ...17 4.2 STATEFUL SESSION BEANS(有状态BEAN)开发20 4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...22 4.4 如何改变SESSION BEAN的JNDI 名称22 4.5 SESSION BEAN的生命周期..........23 4.6 拦截器(INTERCEPTOR) ...26 4.7 依赖注入(DEPENDENCY INJECTION).......29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置......36 6.2.1 MySql数据源的配置...........37 6.2.2 Ms Sql Server2000数据源的配置..37 6.3 实体 BEAN发布前的准备工作...38 6.4 单表映射的实体BEAN..38 6.5 持久化实体管理器ENTITYMANAGER..43 6.5.1 Entity获取find()....43 6.5.2 添加 persist().........43 6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 EJB3 QL操作createQuery() 44 6.6 关系/对象映射.45 6.6.1 映射的表名或列名与数据库保留字同名时的处理...........45 Jboss EJB3.0实例教程 版权所有:黎活明 6.6.2 一对多及多对一映射.........45 6.6.3 一对一映射...........53 6.6.4 多对多映射...........59 6.7 使用参数查询..65 6.7.1 命名参数查询.......65 6.7.2 位置参数查询.......66 6.8 EJB3 QL语言..66 6.8.1 大小写敏感性(Case Sensitivity) ....77 6.8.2 排序(order by) .......77 6.8.3 查询部分属性.......78 6.8.4 查询中使用构造器(Constructor)..78 6.8.5 聚合查询(Aggregation).......80 6.8.6 关联(join) 82 6.8.7 比较 Entity.............85 6.8.8 批量更新(Batch Update).....86 6.8.9 批量删除(Batch Remove)....86 6.8.10 使用操作符NOT87 6.8.11 使用操作符BETWEEN....88 6.8.12 使用操作符IN....88 6.8.13 使用操作符LIKE .............89 6.8.14 使用操作符IS NULL........90 6.8.15 使用操作符IS EMPTY.....90 6.8.16 使用操作符EXISTS..........91 6.8.17 字符串函数.........92 6.8.18 计算函数...
文件格式为azw3,文字版本,可以用kindle阅读,PC端可以用calibre,可以转成epub所有手机阅读软件都支持,对手机的排版支持还不错. 内容目录 第1天 文本操作指令 1.1 ar 指令:创建、修改或从档案文件中提取文件 1.2 aspell指令:检查文件的错误 1.3 bunzip2指令:解压缩.bz2类型的文件 1.4 bye指令:中断FTP连接 1.5 bzip2指令:压缩成.bz2类型的文件 1.6 bzip2recover指令:损坏.bz2文件的修复 1.7 cat指令:连接并输出文件内容 1.8 chattr指令:改变文件的属性 1.9 chgrp 指令:改变文件或者目录所属的用户组 1.10 chmod指令:改变文件或者目录的权限 1.11 chown指令:改变文件的拥有者或用户组 1.12 cksum指令:文件的CRC校验 1.13 cmp指令:比较文件差异 1.14 cp指令:复制 1.15 cpio指令:备份文件 1.16 csplit指令:分割文件 1.17 cut指令:剪切文件 1.18 diff指令:生成差异信息 1.19 diffstat指令:diff结果的统计信息 1.20 dump指令:文件系统备份 1.21 file指令:辨识文件类型 1.22 find指令:查找目录或者文件 1.23 fsck指令:检查并尝试修改文件系统错误 1.24 fsck.ext2指令:检查ext2文件系统并尝试修改错误 1.25 fsck.ext3指令:检查ext3文件系统并尝试修改错误 1.26 fsck.minix指令:检查文件系统并尝试修复错误 1.27 ftp指令:文件传输协议 1.28 ftpcount指令:显示ftp登录用户数 1.29 ftpshut指令:定时关闭ftp服务器 1.30 ftpwho指令:显示登录ftp用户信息 1.31 gunzip指令:解压缩文件 1.32 gzexe指令:压缩可执行文件 1.33 gzip指令:压缩文件 1.34 indent指令:调整C原始代码文件的格式 1.35 less指令:一次显示一页文本 1.36 lha指令:压缩或解压缩文件 1.37 ln指令:链接文件或目录 1.38 locate指令:查找文件 1.39 lpd指令:打印管理程序 1.40 lpq 指令:查看打印机列表中未完成的工作 1.41 lpr指令:输入打印文件 1.42 lprm 指令:将任务从打印机队列中移除 1.43 lsattr指令:显示文件属性 1.44 mattrib指令:变更或显示MS-DOS文件的属性 1.45 mc指令:菜单式文件管理程序 1.46 mcopy指令:复制MS-DOS文件 1.47 mdel指令:删除MS-DOS文件 1.48 mdir指令:显示MS-DOS目录 1.49 mkdir指令:建立目录 1.50 mktemp指令:建立暂存文件 1.51 more指令:显示文件信息 1.52 mmove指令:移动或重命名MS-DOS文件 1.53 mread指令:复制MS-DOS文件 1.54 mren指令:移动或重命名MS-DOS文件 1.55 mshowfat指令:显示MS-DOS文件的记录 1.56 mtools 指令:显示 mtools 支持的指令 1.57 mtoolstest 指令:测试同时显示mtools的相关设置 1.58 mv 指令:移动或更名现有的文件或目录 1.59 ncftp指令:文件传输 1.60 ncftpget指令:下载文件 1.61 ncftpput指令:上传文件 1.62 od指令:输出文件内容 1.63 paste指令:合并文件的列 1.64 patch指令:修补文件 1.65 rcp指令:远程复制文件或目录 1.66 rhmask指令:产生加密文件 1.67 rm指令:删除文件或目录 1.68 tac指令:反序输出文件 1.69 tar指令:打包同时压缩/解压缩文件 1.70 tee 指令:从标准输入读取数据到标准输出,同时保存为文件 1.71 tftp指令:传输文件 1.72 tmpwatch指令:删除临时文件 1.73 touch指令:更改文件/目录时间 1.74 umask指令:指定在建立文件时权限掩码 1.75 umount指令:卸除文件系统 1.76 unarj指令:解压缩文件 1.77 uncompress指令:解压缩.z文件 1.78 unzip指令:解压缩.zip文件 1.79 uucico指令:.uucp文件传输 1.80 uucp指令:在系统之间传送文件 1.81 uupick指令:处理接收文件 1.82 uuto指令:文件传送到远端主机 1.83 whereis指令:查找文件 1.84 which指令:查找文件 1.85 zip指令:压缩文件 1.86 zipinfo指令:显示压缩文件的信息 第2天 文本编辑指令 2.1 col指令:过滤控制字符 2.2 colrm指令:删除指定的列 2.3 comm指令:比较排序文件 2.4 ed指令:文本编辑器 2.5 egrep指令:输出匹配某种模式的行 2.6 emacs指令:文本编辑器 2.7 ex指令:在Ex模式下启动vim文本编辑器 2.8 expr指令:简单计算器 2.9 fgrep指令:匹配字符串 2.10 fmt指令:编排文本文件 2.11 fold指令:限制文件列宽 2.12 grep指令:匹配搜索 2.13 ispell指令:拼字检查程序 2.14 jed指令:编辑文本文件 2.15 joe指令:编辑文本文件 2.16 join指令:连接两个指定的文件 2.17 look指令:单字查询 2.18 mtype指令:显示MS-DOS文件的内容 2.19 pico指令:编辑文本文件 2.20 rgrep指令:递归查找 2.21 sed指令:利用script命令处理文本文件 2.22 sort指令:将文本文件内容加以排序 2.23 spell指令:拼字检查程序 2.24 tr指令:转换文件中的字符 2.25 uniq指令:检查文件中重复出现的行 2.26 vi指令:文字编辑器 2.27 vim指令:增强型vi文件编辑器 2.28 wc指令:计算字数 第3天 磁盘操作指令 3.1 automount指令:为auto文件系统配置挂载点 3.2 badblocks指令:检查磁盘坏道 3.3 cd指令:切换目录 3.4 cfdisk指令:磁盘分区 3.5 dd指令:转换复制文件 3.6 df指令:磁盘信息 3.7 dirs指令:显示目录信息 3.8 du指令:显示目录或文件所占的磁盘空间 3.9 edquota 指令:编辑用户或用户组的quota 3.10 eject指令:退出抽取式设备 3.11 e2fsck指令:检查ext2文件系统 3.12 fdformat指令:软盘格式化 3.13 fdisk指令:Linux磁盘分区 3.14 fsck 指令:检查文件系统并修复分区错误 3.15 fsck.ext2指令:检查ext2文件系统 3.16 fsconf指令:设置文件系统相关功能 3.17 hdparm指令:显示和设定硬盘参数 3.18 lndir指令:连接目录内容 3.19 losetup指令:设置循环设备 3.20 ls指令:列出目录内容 3.21 mbadblocks 指令:检查 MS-DOS文件系统的磁盘是否有损坏的磁区 3.22 mcd指令:在MS-DOS文件系统中切换工作目录 3.23 mdeltree指令:删除MS-DOS 目录/文件 3.24 mdu指令:显示MS-DOS目录所占用的磁盘空间 3.25 mformat指令:对MS-DOS文件系统的磁盘进行格式化 3.26 mkbootdisk指令:建立目前系统的启动盘 3.27 mkdir指令:建立目录 3.28 mkdosfs指令:建立MS-DOS文件系统 3.29 mke2fs指令:建立ext2文件系统 3.30 mkfs指令:建立各种文件系统 3.31 mkfs.ext2指令:建立ext2文件系统 3.32 mkfs.msdos 指令:建立 MS-DOS文件系统 3.33 mkinitrd指令:建立要载入ramdisk的映像文件 3.34 mkisofts指令:建立iso 9660映像文件 3.35 mkswap指令:设置交换区 3.36 mlabel 指令:显示/设置 MS-DOS磁盘驱动器的标签名称 3.37 mmd 指令:在MS-DOS 文件系统中建立目录 3.38 mmount指令:挂载MS-DOS文件系统 3.39 mount指令:挂载文件系统 3.40 mpartition指令:建立/删除MS-DOS的分区 3.41 mrd指令:删除MS-DOS文件系统中的目录 3.42 pwd指令:显示工作目录 3.43 quota指令:显示磁盘已使用的空间与限制 3.44 quotacheck 指令:检查磁盘的使用空间与限制 3.45 quotaoff指令:关闭磁盘空间限制 3.46 quotaon指令:开启磁盘空间限制 3.47 repquota指令:检查磁盘空间限制的状态 3.48 restore指令:还原dump操作备份文件 3.49 rmdir指令:删除目录 3.50 sfdisk指令:硬盘分区工具程序 3.51 stat指令:显示inode内容 3.52 swapoff指令:关闭系统交换分区 3.53 swapon指令:启动系统交换分区 3.54 symlinks指令:维护符号链接的工具程序 3.55 symlinks 指令:维护符号链接的工具程序 3.56 tree指令:以树状图显示目录内容 3.57 umount指令:卸除文件系统 第4天 网络通信指令 4.1 apachectl指令:apache HTTP服务器控制接口 4.2 arp指令:地址转换协议 4.3 arping指令:ARP请求报文 4.4 arpwatch指令:监听ARP记录 4.5 arptables指令:管理系统的ARP表 4.6 cu指令:主机间通信 4.7 dip指令:IP拨号连接 4.8 dnsconf指令:设置DNS服务器组态 4.9 efax指令:收发传真 4.10 getty指令:设置终端配置 4.11 httpd指令:apache http服务器程序 4.12 ifconfig指令:显示或者配置网络设备 4.13 mesg指令:控制终端的写入 4.14 minicom指令:调制解调器通信程序 4.15 nc指令:设置路由器 4.16 netstat指令:显示网络状态 4.17 newaliases指令:重建别名数据库 4.18 pine指令:处理电子邮件和新闻组 4.19 ping指令:检测主机 4.20 ppp-off指令:关闭ppp连线 4.21 pppsetup指令:设置ppp连线 4.22 pppstats指令:显示ppp连线状态 4.23 samba指令:控制Samba服务端 4.24 sendmail指令:邮件服务器程序 4.25 setserial指令:设置或显示串口的相关信息 4.26 smbclient指令:可存取SMB/CIFS服务器的用户端程序 4.27 smbd指令:Samba服务端 4.28 ssh指令:加密的远程登录工具 4.29 statserial指令:samba服务器程序 4.30 talk指令:与其他用户交谈 4.31 tcpdump指令:倾倒网络传输数据 4.32 telnet指令:远程登录 4.33 testparm 指令:测试 Samba 配置文件 4.34 traceroute指令:显示数据包到主机间的路径 4.35 tty指令:显示标准输入设备名称 4.36 uucp 指令:将特定文件复制到另一个特定系统 4.37 uulog指令:显示uucp记录信息 4.38 uuname指令:显示uucp远端主机 4.39 uustat指令:显示uucp状态 4.40 uux指令:在远端的uucp主机上运行指令 4.41 wall指令:发送信息 4.42 write指令:传送信息 4.43 ytalk指令:与其他用户交谈 第5天 系统管理指令 5.1 adduser指令:增加一个系统用户 5.2 arch指令:输出主机的体系结构 5.3 batch指令:执行批处理指令 5.4 bg指令:将程序放在后台执行 5.5 chfn指令:设置finger信息 5.6 chsh指令:改变登录系统时的shell 5.7 clear指令:清除屏幕信息 5.8 date指令:显示或设置系统时间 5.9 echo指令:字符串输出 5.10 exit指令:退出shell 5.11 finger指令:查找并显示用户信息 5.12 free指令:显示内存信息 5.13 fwhois指令:显示用户的信息 5.14 gitps指令:显示程序情况 5.15 groupadd指令:创建一个新群组 5.16 groupdel指令:删除一个群组 5.17 groupmod 指令:改变系统群组的属性 5.18 groups指令:查看用户属于哪个组 5.19 halt指令:关闭系统 5.20 help指令:显示shell内建指令的帮助信息 5.21 history指令:显示历史指令 5.22 id 指令:显示用户的ID 以及所属群组的ID 5.23 init指令:开关机设置 5.24 ipcs指令:显示进程间通信的信息 5.25 jobs指令:显示所有后台程序 5.26 kill指令:杀死执行中的进程 5.27 last指令:显示所有登录系统的用户相关信息 5.28 lastb 指令:显示登录系统失败的用户信息 5.29 login指令:登录系统 5.30 logname指令:显示登录账号 5.31 logout指令:退出系统 5.32 logrotate指令:管理log文件 5.33 man指令:帮助手册 5.34 nice指令:设置优先级 5.35 procinfo指令:显示系统状态 5.36 ps指令:报告程序状况 5.37 pstree指令:以树状图显示程序 5.38 reboot指令:重新启动 5.39 renice指令:调整优先级 5.40 rlogin指令:远端登录 5.41 rsh指令:远端登录的shell 5.42 rwho指令:查看系统用户 5.43 screen指令:多重视窗管理程序 5.44 shutdown指令:系统关机 5.45 skill指令:工作行程资讯与管理 5.46 sleep指令:休眠 5.47 su指令:变更用户身份 5.48 sudo指令:以其他身份来执行 5.49 suspend指令:暂停执行shell 5.50 swatch指令:系统监控程序 5.51 tload指令:显示系统负载 5.52 top指令:显示进程信息 5.53 uname指令:显示系统信息 5.54 useradd指令:建立用户账号 5.55 userconf指令:设置用户账号 5.56 userdel指令:删除用户账号 5.57 usermod指令:修改用户账号 5.58 vlock指令:锁定终端 5.59 w指令:显示登录系统的用户信息 5.60 who指令:显示系统用户信息 5.61 whoami指令:显示用户名 5.62 whois指令:查找用户/域名信息 第6天 系统设置指令 6.1 alias指令:设置指令的别名 6.2 apmd指令:高级电源管理 6.3 aumix指令:设置音效设备 6.4 bind指令:显示或者设置按键组合 6.5 chkconfig指令:设置系统的应用程序 6.6 chroot指令:改变根目录 6.7 clock指令:系统RTC时间设置 6.8 crontab指令:设置计时器 6.9 declare指令:声明 shell 变量 6.10 depmod指令:模块关系 6.11 dircolors指令:ls指令对应的显示颜色设置 6.12 dmesg指令:显示内核信息 6.13 enable指令:激活或关闭shell内建指令 6.14 eval指令:执行多个指令 6.15 export指令:设置或显示环境变量 6.16 fbset指令:设置帧缓冲区 6.17 grpconv指令:开启群组的投影密码 6.18 grpunconv 指令:关闭群组的投影密码 6.19 hwclock指令:显示与设定硬件时钟(rtc) 6.20 insmod指令:载入模块 6.21 kbdconfig指令:设置键盘类型 6.22 lilo指令:引导安装程序 6.23 liloconfig指令:设置程序的载入 6.24 lsmod 指令:显示Linux内核的模块信息 6.25 minfo指令:显示MS-DOS文件系统的各项参数 6.26 mkkickstart 指令:建立安装的组态文件 6.27 modinfo指令:显示内核信息 6.28 modprobe 指令:自动处理可载入模块 6.29 moouseconfig指令:设置鼠标相关参数 6.30 ntsysv指令:设置系统的各种服务 6.31 passwd指令:设置密码 6.32 pwconv指令:开启用户的投影密码 6.33 pwunconv 指令:关闭用户的投影密码 6.34 rdate 指令:显示其他主机的日期与时间 6.35 reset指令:设置终端机状态 6.36 resize指令:设置终端机视窗的大小 6.37 rmmod指令:删除模块 6.38 rpm指令:管理RPM包 6.39 set指令:设置shell 6.40 setconsole指令:设置系统终端 6.41 setenv指令:查询或显示环境变量 6.42 setup指令:设置公用程序 6.43 sndconfig指令:设置声卡 6.44 timeconfig指令:设置时区 6.45 ulimit指令:控制shell程序的资源 6.46 unalias指令:删除别名 6.47 unset指令:删除变量或函数 6.48 up2date指令:更新Linux系统 6.49 vmstat指令:显示虚拟内存空间 第7天 其他常见指令 7.1 as指令:标准GNU汇编程序 7.2 autoconf指令:产生配置脚本 7.3 autoheader指令:为configure产生模板头文件 7.4 autoreconf指令:更新已经生成的配置文件 7.5 autoscan指令:生成configure.in模板文件 7.6 autoupdate 指令:更新 configure.in文件 7.7 gcc指令:GNU的C和C++编译器 7.8 gdb指令:GNU调试器 7.9 gdbserver指令:远端GNU服务器 7.10 ld指令:链接目标文件和库文件 7.11 make指令:编译内核或模块 7.12 nm指令:显示目标文件中的符号 7.13 startx指令:启动x-Windows图形界面 7.14 xhost指令:设置X服务器的访问权限 7.15 xinit指令:启动x-Windows 7.16 xlsclients 指令:显示正在运行的 X程序 7.17 xlsfonts指令:显示目前X服务器可使用的字体 7.18 xset指令:设置x-Windows
AMR在IP域中的编码(rfc3267,4867) 缩写解释 SID Silence Descriptor (Comfort Noise Frame) 1 AMR编码介绍 AMR编码是一种自适应多速率编码,根据传输信道的实际情况,调整编码模式、速率和纠错码位数来保证语音质量,在数据压缩和容错上面取得平衡。一般语音质量越高抗干扰能力越弱。在GSM网络,基站、基站控制器可根据网络质量和信号质量情况动态调整语音编码模式以提高不同网络状况下的语音质量。现在手机终端基本上都支持AMR编码,Nokia从2004年开始提供支持AMR的终端,目前所有的新型号终端都支持AMR。 AMR在IP域中的编码(rfc3267,4867) AMR算法 参考文档 (1) 3GPP TS26.190, AMR Wideband speech codec; Transcoding functions(Release 5). (2) 3GPP TS 26.194, Voice Activity Detection (VAD). (3) 3GPP TS 26.174, AMR wideband speech codec; Test sequences. (4) 3GPP TS 26.194, Frame Structure. 2 AMR在IP域中的净荷格式 RFC3267/4867协议描述AMR编码在RTP中的载荷格式,是其在IP域的存在形式。 对于每个RTP会话,AMR净荷有两种模式,分别为节省带宽模式和字节对齐模式,具体采用那种模式,由信令协商决定;采用后一模式可以后可以引入鲁棒排序、帧交叉编码和CRC校验等方式提高语音传输的质量。 以下三种场景分别为1IP域的终端进行会话、2非IP域终端通过网关和3IP域终端会话以及非IP域终端之间的通信场景,各个场景的特点见协议描述。 AMR和AMR-WB净荷格式 二者格式区别,a.帧类型;b.前者的采样频率为8KHZ,后者为16KH;c.模式不一样 净荷结构如下,包括净荷头,内容表和语音数据: +----------------+-------------------+---------------- | payload header | table of contents | speech data ... +----------------+-------------------+---------------- Payloads containing more than one speech frame-block are called compound payloads. 节省带宽模式Bandwidth-Efficient Mode a. 净荷头格式: 0 1 2 3 +-+-+-+-+ | CMR | +-+-+-+-+ CMR(codec mode request)编码模式请求,由发送者向接受者的请求发送者编码器将来的编码速率模式,保存帧类型索引,如果是AMR,取值范围为0-7,表示8种速率模式,如果为AMR-WB,取值范围为0-8,表示9种速率。取值15意味着当前是没有指定哪个模式的请求。 模式选定后,由于采样频率恒定,具体包的打包时长还是不变,不同速率只是净荷长度不一样,例如对于AMR模式0,其速率是4.75Kbit/s,净荷中包含的语音数据为95bits。 AMR的8种速率索引表,见[1] AMR在IP域中的编码(rfc3267,4867) AMR-WB的9种速率索引表,见[2] AMR在IP域中的编码(rfc3267,4867) b. 净荷内容表ToC(table of contents),第一项表示一个语音帧 0 1 2 3 4 5 +-+-+-+-+-+-+ |F| FT |Q| +-+-+-+-+-+-+ F:用于标志是否最后一个帧,0表示最后1帧.如果是多帧复用才有Toc才会有多项,否则只有1项。 FT:标志对音帧语音编码模式或舒适噪志的模式,取值范围同CMR取值,FT=14 (SPEECH_LOST, only available for AMR-WB) and FT=15 (NO_DATA),FT=15表示没有当前帧没有净荷;取值10-13该帧要丢弃。 Q:指示帧质量,为0表示对应帧被破坏,1表示未被破坏;如果该帧已被破坏,那么可以通过直接丢弃该帧来处理。 净荷内容表就是对帧内容的数据格式说明, c. 语音数据speech data 语音数据即为真正的语音帧或舒适噪声帧的数据,每帧数据的描述和ToC每一项对应起来,数据长度取决于对应模式ToC项中的FT标识的模式。 示例: 单通道单帧 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CMR=15|0| FT=4 |1|d(0) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | d(147)|P|P| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 单通道多帧 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CMR=1 |1| FT=0 |1|1| FT=9 |1|1| FT=15 |1|0| FT=1 |1|d(0) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | d(131)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |g(0) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | g(39)|h(0) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | h(176)|P|P|P|P|P|P|P| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 多通道多帧,见协议 字节对齐模式Octet-aligned Mode a. 净荷头格式 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+- - - - - - - - | CMR |R|R|R|R| ILL | ILP | +-+-+-+-+-+-+-+-+- - - - - - - - CMR:同上; R:保留位,区分节省带宽模式,这些保留位作用之一就是字节对齐; ILL:可选,指示交错长度(取值为L,交错长度即为L+1); ILP:可选,交错块的索引,取值范围为0到ILL,超过这个范围,该帧块应被丢弃。 b. ToC +---------------------+ | list of ToC entries | +---------------------+ | list of frame CRCs | (optional) - - - - - - - - - - - Note, for ToC entries with FT=14 or 15, there will be no corresponding speech frame or frame CRC present in the payload. 组成同节省带宽模式 ToC项:在该模式下,6位ToC也需要2位补齐。 CRC:CRC校验位可选,如果带外信令协商需要校验,则每项对应每个语音数据进行8位长度的校验。 语音数据 同节省带宽模式,只是要求每帧必须补0对齐;对于多帧的净荷,可以和节省模式一样,一帧顺序排,也可以所有帧以字节为单位交错排序,尽量把各个帧错误敏感位排前面。 示例: 单通道多帧 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CMR=6 |R|R|R|R|1|FT#1=5 |Q|P|P|0|FT#2=5 |Q|P|P| f1(0..7) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | f1(8..15) | f1(16..23) | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : ... : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... |f1(152..158) |P| f2(0..7) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | f2(8..15) | f2(16..23) | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : ... : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... |f2(152..158) |P| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 多通道 3 AMR语音帧结构 AMR和AMR-WB的语音数据结构分别详见TS 26.101,26.201描述,这里介绍AMR-NB的语音数据编码结构。 语音数据位根据重要性分成类,A、B、C类,其对错误的敏感性和重要性依次为A>B>C,如下,4.75Kb模式的总的位数为95位,A类42位,B类53位。 AMR在IP域中的编码(rfc3267,4867) AMR净荷数据把重要的数据位放在前面,不重要的放在后面,为了把语音数据中重要的数据位放置A类,需要对编码器编出的比特位进行重排序,26.101把编码后数据位的位置和重排序的位置对应起来形成一张表供查询, - for j = 0 to K-1 //第0位到第K-1位全部重排 - d(j) := s(tablem(j)+1); //查对应模式的表找到重排后相应位置 例如下表6.7kb模式的排序表,共134位,第82位数据位排序后对应18位 AMR在IP域中的编码(rfc3267,4867) 上节节省带宽模式和字节对齐模式,d(i)均是排序后的数据。 下图示例相比上一节还加了8位CRC校验码。 4 AMR NB/WB信令协商参数 AMR常用如下 octet-align,是节省带宽模式还是字节对节模式,一般取值为1表示字节对齐,为0或不带默认表示为节省带宽模式; mode-set,一旦请求带了模式集,之后AMR媒体流只选择属于这个模式集的模式来发送; mode-change-period,模式改变周期; maxptime,最大支持的打包时长(ms); crc,净荷是否进行CRC校验,一般为1表示需要,媒体流会携带校验位; robust-sorting,是否进行鲁棒排序; interleaving,定义交错帧块数; ptime,指包时长; channels,音频通道数,例如采用左右通道数值则为2; AMR-WB常用参数同上 4 多帧复用 为了降低带宽,减少网络传输的RTP包数,把多帧的数据打包在1个RTP包里面进行传输。净荷里面用ToC表来管理多帧数据,说明模式等内容,这样也可根据网络状况灵活改变多帧的速率,例如,多帧中每个帧的速率不一定要一样。 采用多帧复用要注意关注RTP包的大小、时戳是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值