- 点击跳转=>《导航贴》- Unity手册,系统实战学习
- 点击跳转=>《导航贴》- Android手册,重温移动开发
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单。
本文约2.8千字,新手阅读需要10分钟,复习需要3分钟 【收藏随时查阅不再迷路】
文章目录
- 👉关于作者
- 👉实践过程
- 👉其他
👉实践过程
//作用是个变声器。//理论上可以制作汤姆猫的变声功能。但是算法我不会就没写。
//设定音频数据的采样率方式和字节位数。获得出缓冲区尺寸。
//通过缓冲区尺寸新建播放器和录音器。
//开启播放器和录音器。
//循环从录音器中拿取录音数据。放入播放器中播放。
//也可以对录音数据进行处理,然后再播放。达到变声的效果。(这部分没做)importClass(android.media.MediaRecorder);
importClass(android.media.AudioRecord);
importClass(android.media.AudioManager);
importClass(android.media.AudioTrack);
importClass(android.media.AudioFormat);var sampleRateInHz = 44100;
var channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
var audioFormat = AudioFormat.ENCODING_PCM_8BIT;var bufferSizeInBytes = AudioTrack.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
var audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes, AudioTrack.MODE_STREAM);
audioTrack.play();var bufferSizeInBytes_ = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
var audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes_);
try {audioRecord.startRecording();
} catch (e) {toastLog("无录音权限\n已停止");exit();
};
events.on("exit", function() {log("结束运行");audioTrack.stop();audioTrack.release(); audioRecord.stop(); audioRecord.release(); //释放资源
});var audioData = new Mbyte(bufferSizeInBytes_);while (true) {var readSize = audioRecord.read(audioData, 0, audioData.length); if (AudioRecord.ERROR_INVALID_OPERATION != readSize) { //在这里处理录音数据。audioData byte PCM音频数据。audioTrack.write(audioData, 0, audioData.length); //play raw audio bytes};};function Mbyte(length) {return util.java.array("byte", length);
};
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。