zoukankan      html  css  js  c++  java
  • [工具推荐]_iOS音频批量转换

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

     

  • 相关阅读:
    什么是 bean 的自动装配?
    什么是 Spring 的内部 bean?
    什么是 Spring 的 MVC 框架?
    Spring AOP and AspectJ AOP 有什么区别?
    解释 JDBC 抽象和 DAO 模块?
    volatile 类型变量提供什么保证?
    一个 Spring Bean 定义 包含什么?
    什么是 Spring MVC 框架的控制器?
    使用 Spring 访问 Hibernate 的方法有哪些?
    什么是 Callable 和 Future?
  • 原文地址:https://www.cnblogs.com/superdo/p/4783380.html
Copyright © 2011-2022 走看看