首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >游戏优化之音频压缩

游戏优化之音频压缩

作者头像
陨石坠灭
发布于 2018-10-19 07:12:49
发布于 2018-10-19 07:12:49
1.5K00
代码可运行
举报
文章被收录于专栏:全栈之路全栈之路
运行总次数:0
代码可运行

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

来看一下效果:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg -i ${f} -vn -ar 22050 -ac 1 -ab 128 -f mp3 ${dst}

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

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

  1. 获取脚本当前路径或者上一级路径 curpath=$(cd "$(dirname "$0")/"; pwd) echo $curpath
  2. 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
  3. 获取字符串长度 len=${#str} echo $len
  4. 获取文件名称、目录及后缀 path="../a/b/c/d.png" file=${path##*/} #获取文件名称(去掉路径) filepre=${file%.*} #获取文件名称(去掉后缀,但有路径) dir=${path%/*} #获取文件目录 suffix= "${path#*.}" #获取文件后缀

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

上代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/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格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
audio.sh -s <音频源目录> -d <音频资源目录>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/09/14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
完美解决个人微信音频amr文件与mp3格式互转
完美解决个人微信音频amr文件与mp3格式互转 完美解决个人微信音频amr文件与mp3格式互转1、安装gcc ffmpeg wget http://downloads.sourceforge.net/lame/lame-3.100.tar.gz tar -zxvf lame-3.100.tar.gz cd lame-3.100 ./configure --prefix=/usr/local make && make install ln -s /usr/local/lib/libmp3lam
马士兵的朋友圈
2020/07/31
2.8K0
ffmpeg针对音视频常规命令整理
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
HI hero
2021/12/22
2.3K0
Shell脚本中的while getopts用法小结
getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数。getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后面跟着一个冒号,表明该字符选项需要一个参数,其参数需要以空格分隔。冒号和问号不能被用作选项字符。getopts每次被调用时,它会将下一个选项字符放置到变量中,OPTARG则可以拿到参数值;如果option前面加冒号,则代表忽略错误;
洗尽了浮华
2019/10/30
9.3K0
玩转音频、视频的利器:FFmpeg
腾讯云开发者社区
2017/06/13
6.6K0
脚本参数处理问题:脚本参数处理不当,导致功能异常
是山河呀
2025/02/07
1400
关于网页优化这档事
不知道大家有没有打开过浏览器的控制台,只需要 右键->检查/审查元素 就可以打开控制台,其中就能可以打印如下消息:
陨石坠灭
2020/01/21
7820
关于网页优化这档事
Linux 【Shell脚本经典案例】
===============Talk is cheap, show me the code,bye-bye================
IT茂茂
2020/09/17
3.4K0
Linux 【Shell脚本经典案例】
FFmpeg从入门到精通-云享读书会
FFmpeg是一款开源软件,用于生成处理多媒体数据的各类库和程序。FFmpeg可以转码、处理视频和图片(调整视频、图片大小,去噪等)、打包、传输及播放视频。作为最受欢迎的视频和图像处理软件,它被来自各行各业的不同公司所广泛使用。
DS小龙哥
2022/10/06
5.6K0
FFmpeg从入门到精通-云享读书会
Shell入门指南
背景 之前写了系列的shell实战的文章,得到了挺多小伙伴的关注,遇到有些对shell不太熟悉小伙伴,所以有个想法写一篇shell入门的文章。 时间流逝,再回头去看看过去的东西,才会发现哪些东西比较重要,故撰此文,记录我在过去学习和使用shell语言过程中我个人觉得比较重要的部分,做一个小总结和分享。 文章中使用到的代码位置:https://gitee.com/dhar/YTTInjectedContentKit/tree/master/DevPods/InjectedContentKit/Example
用户1263954
2018/06/22
1.2K0
FFmpeg推流命令总结
今天考虑一个mcu混合的实现,也就是接收多路过来的rtp流,然后转发出去一路的rtmp流,使用ffmpeg测试做的记录,刚开始一直通过ffmpeg推送的文件流不能满足要求,还是对参数配置不熟悉;
呱牛笔记
2023/05/02
7K0
FFmpeg推流命令总结
2023-03-30:用Go语言改写FFmpeg示例decode_audio.c,实现高效音频解码。
2023-03-30:用Go语言改写FFmpeg示例decode_audio.c,实现高效音频解码。
福大大架构师每日一题
2023/06/08
3300
2023-03-30:用Go语言改写FFmpeg示例decode_audio.c,实现高效音频解码。
1.ffmpeg、ffplay、ffprobe命令使用
ffmpeg命令- 用于转码的应用程序, 也可以从url/现场音频/视频源抓取输入源
诺谦
2020/05/18
2.7K0
1.ffmpeg、ffplay、ffprobe命令使用
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
福大大架构师每日一题
2023/06/08
4600
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
无惧FFmpeg的高冷美艳:8条音视频命令,让你变身短视频UP达人!
FFmpeg是一个世界著名的命令行工具,它提供跨平台的运行环境,用于流式传输、录制音频/视频数据,并将其转换为不同的媒体格式。
程序员小助手
2020/04/08
1.5K0
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
福大大架构师每日一题
2023/03/12
4480
2023-03-12:mp3音频解码为pcm,代码用go语言编写,调用moonfdd/ffmpeg-go库。
利用moviepy模块将图片转换为视频
前几天分享了如何将数据可视化,使数据动起来。最近又有对可视化有点着迷,想着让图片动起来,然后加上语音说明。然后经过搜索,通过moviepy模块可以实现。折腾了两天,终于搞定。
IT不难
2022/05/09
2K0
利用moviepy模块将图片转换为视频
【FFmpeg】ffmpeg 命令行参数 ③ ( ffmpeg 音频参数解析 | 设置音频帧数 | 设置音频码率 | 设置音频采样率 | 设置音频通道数 | 设置音频编解码器 | 设置音频过滤器 )
在 ffmpeg 命令中 , -aframes 参数用于设置 要输出的 音频帧 帧数 , 通过该参数 设置 一个 指定的 音频帧数 , 输出完 该 指定音频帧数 的 音频帧 之后 , ffmpeg 将会停止处理音频流 , 通过该参数 可以 精确控制音频输出长度 ;
韩曙亮
2024/02/29
5.4K0
【FFmpeg】ffmpeg 命令行参数 ③ ( ffmpeg 音频参数解析 | 设置音频帧数 | 设置音频码率 | 设置音频采样率 | 设置音频通道数 | 设置音频编解码器 | 设置音频过滤器 )
温故知新:ffmpeg操作《天空之城》。窗口党勿入,都是指令!
在本文中,我们将看到一些选项和示例,演示如何使用FFmpeg多媒体框架对音频和视频文件执行各种转换过程。
程序员小助手
2020/04/27
8480
温故知新:ffmpeg操作《天空之城》。窗口党勿入,都是指令!
如何用shell脚本闪回binlog呢
简介: 上篇推文 笔者介绍了如何用开源工具来闪回binlog,但有时候我们的机器无法安装这些开源工具。这时候我们可以使用shell脚本来闪回binlog,是不是觉得方便多了。
MySQL技术
2019/09/08
7190
shell编程:编程就是这么简单
A:shell编程就是通过语法将bash命令或外部命令整合起来,搭配正则表达式、管道命令与数据流定向等功能,来实现我们要完成的任务。最简单的shell script就是将多条命令写在一起,让用户可以一次性执行多条命令,同时每个命令及其输入参数得以在纯文本的shell脚本中保存。shell脚本运行较慢,使用CPU资源较多,是一个很好的项目管理工具,但一般不用于大数据处理(注:本文部分例子来自《鸟哥的Linux私房菜》)。
SYSU星空
2022/05/05
9450
shell编程:编程就是这么简单
推荐阅读
相关推荐
完美解决个人微信音频amr文件与mp3格式互转
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档