美文网首页
游戏优化之音频压缩

游戏优化之音频压缩

作者: 陨石坠灭 | 来源:发表于2018-09-14 07:57 被阅读29次

其实这个比较容易忽略掉,但是音频资源如果不压缩的话,可能会造成游戏加载速度慢,尤其是对于一些音频资源依赖较高的游戏。

来看一下效果:


34C92BD257739317A9A07A0803D9F012.png

好了,其实这里要介绍的是一条命令,它依赖于ffmpeg。
具体如下:

ffmpeg -i ${f} -vn -ar 22050 -ac 1 -ab 128 -f mp3 ${dst}

其中$f为源文件,$dst为目标文件

接下来介绍一下mac上的音频压缩脚本,但首先要注意一下几个非常有用的脚本片段:

  1. 获取脚本当前路径或者上一级路径
curpath=$(cd "$(dirname "$0")/"; pwd) 
echo $curpath
  1. shell读取短命令参数
    具体区别,请自行查看相关文章
a=""
b=""
c=false
 while getopts ":a:b:c" opt
do
    case $opt in 
        a ) a=$OPTARG;;
        b ) b=$OPTARG;;
        c ) c=true;;
        ? ) echo "invalid param"
            exit 1;;
    esac
done
  1. 获取字符串长度
len=${#str}
echo $len
  1. 获取文件名称、目录及后缀
path="../a/b/c/d.png"
file=${path##*/}  #获取文件名称(去掉路径)
filepre=${file%.*}  #获取文件名称(去掉后缀,但有路径)
dir=${path%/*} #获取文件目录
suffix= "${path#*.}" #获取文件后缀

拓展(多个后缀):../a/b/c/d.tar.gz
参考:Shell获取文件的文件名和扩展名的例子

上代码

#!/bin/bash
# http://ffmpeg.org/download.html to get binary distribution for ogg codex


usage()
{
    echo """
    Usage:
    Script to compress audio resource for distribution!

    -s <path to source dir>
    -d <path to dest dir>
    """
}

#跳转到上一级目录
curpath=$(cd "$(dirname "$0")/"; pwd) 

res_path=""
des_path=""
while getopts ":s::d:" opt
do
    case $opt in 
        s ) res_path=$OPTARG;;
        d ) des_path=$OPTARG;;
        ? ) echo "invalid param"
            exit 1;;
    esac
done

if [[ ${#res_path} -eq 0 ]]; then
    #statements
    usage
    exit 1
fi

if [[ ${#des_path} -eq 0 ]]; then
    des_path="mp3"
fi

if [[ ! -d ${des_path} ]];then
    mkdir ${des_path}
else
    echo "clean directory ${des_path}.."
    rm ${des_path}/*
    echo "clean done!~"
fi

CMD_MUSIC="$curpath/bin/ffmpeg -i"

echo "processing music..."
for f in `ls ${res_path}/*` 
do
    # dst="${des_path}/${f##[./0-9a-zA-Z_-]*/}"
    file="${f##[./0-9a-zA-Z_-]*/}"
    dst="${des_path}/${file%.*}.mp3"

    echo "convert ${f} to ${dst}..."
    # ${CMD_MUSIC} ${f} -vn -ar 44100 -ac 2 -ab 128000 -f mp3 ${dst}
    ${CMD_MUSIC} ${f} -vn -ar 22050 -ac 1 -ab 128 -f mp3 ${dst}
    if [[ $? -eq 0 ]]; then
        #statements
        echo "done!~"
    else
        echo "${f} failed!~"
    fi
done
echo "music done!~"

用法,格式将输出为mp3格式:

audio.sh -s <音频源目录> -d <音频资源目录>

相关文章

  • 游戏优化之音频压缩

    其实这个比较容易忽略掉,但是音频资源如果不压缩的话,可能会造成游戏加载速度慢,尤其是对于一些音频资源依赖较高的游戏...

  • web开发中的压缩、range范围请求

    压缩 Web服务器处理HTTP压缩之gzip、deflate压缩 【Web优化】Yslow优化法则(四)启用Gzi...

  • iOS 优化

    资源优化:对资源文件下手,压缩图片/音频,去除不必要的资源iOS项目瘦身,删除无用图片,批量压缩图片 编译优化:r...

  • 收集_Android源码文章

    一、Bitmap: Android bitmap压缩优化方案Android性能优化系列之Bitmap图片优化 二、...

  • iOS 做过哪些优化  

    资源优化:对资源文件下手,压缩图片/音频,去除不必要的资源 编译优化: release版应该选择Fastest, ...

  • 音频有损压缩技术

    音频压缩 音频压缩:音频编码,不进行压缩,每秒产生的数据大小是1M多,数据太大了 音频压缩2个极端 数据压缩越来越...

  • 音频优化之加载音频

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 艺术是一个非常主观的领域,由个人的意见和偏好所支配支持...

  • FFmpeg实践记录七:音频编码原理

    请注意以下命令/事例均基于Mac环境 音频压缩(音频编码说白了就是音频压缩) 有损压缩(消除冗余信息) 无损压缩 ...

  • CocosCreator和gulp-使用gulp-imagemi

    在游戏开发中,打包前进行图片压缩是必需工作,gulp内置了很多构建、优化插件,例如:图片压缩、js文件合并等等,这...

  • 音频优化之方法

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 了解了音频加载方式和音频格式后,如何来优化一下性能呢?...

网友评论

      本文标题:游戏优化之音频压缩

      本文链接:https://www.haomeiwen.com/subject/fdsngftx.html