通常为了便于市场推广和获得更高的下载量,产品安装包的体积是越小越好。那么问题来了,要如何才能做到使安装包的体积最小化呢。根据产品的组成成分,最终可以大概分为,代码,图片,视频,音频等这几部分,今天我们就以iOS平台为例从音频这块入手,看如何使安装包的体积最小化。

我们知道每个音频文件都是由两部分内容所构成:

[1].文件格式(或音频容器)

文件格式(或音频容器)是用于形容文件本身的格式。我们可以通过多种不同的方法为真正的音频数据编码。iPhone支持许多文件格式,包括MPEG-1(.mp3),MPEG-2 ADTS(.aac),AIFF,CAF以及WAVE。

[2]. (或音频编码) 

  • AAC:AAC是指“高级音频编码”,可以说它MP3格式的延续。你可能会想这种格式将压缩最初的声音而保存在磁盘中,所以会降低原先声音的质量。但是通常情况下我们很难注意到质量的降低,并且这主要是取决于我们所设置的比特率。实际上AAC的压缩做得比MP3好多了,特别是在比特率低于每秒128千比特的情况下。
  • HE-AAC:HE-AAC是AAC的超集,HE表示“高效率”。HE-AAC是对于低比特率音频(如流式音频)的优化。
  • AMR:AMR代表“自适应多速率”,是语音优化的另一种编码优化格式,能够突出极低比特率音频。
  • ALAC:同样也被称为“Apple Lossless”,它是一种可以不破坏质量而压缩音频的编码。实际上它大概会压缩原始数据的40-60%。再加上算法是经过精心设计的,所以我们可以以较快的速度解压数据,这非常适合像iPod或iPhone等设备。
  • iLBC:这是另一种优化语音的编码,有益于IP语音和流媒体格式。
  • IMA4:这是一种压缩格式,将对16位体的音频文件进行4:1的压缩。这是面向iPhone设备的一种重要编码。
  • 线性PCM:这是表示线性脉冲编码调制,主要是描写用于将模拟声音数据转换成数字格式的技术。简单地说也就是未压缩的数据。因为数据是未压缩的,所以我们便可以最快速地播放出音频,而如果空间不是问题的话这便是iPhone音频的优先代码选择。
  • μ-law和a-law:这是两种交替式编码,能够将模拟数据转换成数字格式,但是比起线性PCM拥有更强的语音优化效果。
  • MP3:这是我们最熟悉也是最喜欢的一种格式。这么多年以来MP3仍是最受欢迎的一种格式,而iPhone也支持这种格式。

这么多种文件格式,与数据格式我们该选择哪种呢?通常情况下我们都会选择CAF,因为它能够同时包含所有iPhone所支持的编码(数据格式),并且它也是iPhone中的优先文件格式选择。

现在我们产品中用的都是MP3,如何方便快速的全部转换为CAF,苹果真的是太人性化了,早就为我们准备了三个内置命令行工具:afplay,afconvert以及afinfo,我们要用到的就是afconvert。当然我们还可以用iTunes来转换但是太麻烦了.

iTunes 操作:

  [1].进入iTunes偏好设置

  

  [2].进入导入设置

  

  [3].选择编辑器(AAC),并按需求进行比特率选择

  

  [4].转换音频

  

 

命令行工具 afconvert:

# test.mp3转换成test.caf 了,并设置了比特率位 57623 (56kbps) 
afconvert -d aac -f caff -b 57623 /User/XXX/test.mp3   /User/XXX/test.caf

 

一个个文件转换太麻烦了,有没更方便的,如直接把某个目录下的所有mp3 转化成 caf? 有的这就为你奉上。

#!/bin/sh

function scandir() {
    local cur_dir parent_dir workdir
    workdir=$1
    cd ${workdir}
    if [ ${workdir} = "/" ]
    then
        cur_dir=""
    else
        cur_dir=$(pwd)
    fi

    for dirlist in $(ls ${cur_dir})
    do
        if test -d ${dirlist};then
            cd ${dirlist}
            scandir ${cur_dir}/${dirlist}
            cd ..
        else
        	file=${cur_dir}/${dirlist}
            # echo file
            filename=${file%.*}
            suffix=${file##*.}
			if [ "${file##*.}" = "mp3" ]
			then
				afconvert -d aac -f caff -b 57623 $file "$filename.caf"
                echo "${file}  --> caf 转换完成。。。"
                rm -rf "$file"
			else
			 	echo \'不是MP3文件\'
			fi
        fi
    done
}

if test -d $1
then
    scandir $1
elif test -f $1
then
    echo "请输入一个文件..."
    exit 1
else
    echo "该目录已经存在..."
    exit 1
fi

 

复制保存为xxx.sh,大功告成,只需在终端执行即可。

就这样子,一键无痛的将目录下地所有mp3 转换成 caf了。

 

 

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4783380.html

 

版权声明:本文为superdo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/superdo/p/4783380.html