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

     

  • 相关阅读:
    20200302 数据分析之numpy以及Jupyter
    20200228 scrapy高级使用及分布式
    20200226 请求库selenium
    20200224 爬虫-requests模块
    0219 请求上下文解析与g对象
    Matlab矩阵求导和求梯度有什么不同
    矩阵中范数的处理方式
    如何巧妙地使用递归
    遗传算法求最短路径
    nparray的维度和取值方式
  • 原文地址:https://www.cnblogs.com/superdo/p/4783380.html
Copyright © 2011-2022 走看看