Android 混合音频,评价算法
来源:互联网 发布:电影购票系统java 编辑:程序博客网 时间:2024/06/10 00:00
使用平均算法混合两路音频,两路音频必须采样率及单双声道都要相同。
//bMulRoadAudioes为数据源二位数组。public byte[] mixRawAudioBytes(byte[][] bMulRoadAudioes) { if (bMulRoadAudioes == null || bMulRoadAudioes.length == 0) return null; byte[] realMixAudio = bMulRoadAudioes[0]; if(bMulRoadAudioes.length == 1) return realMixAudio; for(int rw = 0 ; rw < bMulRoadAudioes.length ; ++rw){ if(bMulRoadAudioes[rw].length != realMixAudio.length){ Log.e("app", "column of the road of audio + " + rw +" is diffrent."); return null; } } int row = bMulRoadAudioes.length; int coloum = realMixAudio.length / 2; short[][] sMulRoadAudioes = new short[row][coloum]; for (int r = 0; r < row; ++r) { for (int c = 0; c < coloum; ++c) { sMulRoadAudioes[r][c] = (short) ((bMulRoadAudioes[r][c * 2] & 0xff) | (bMulRoadAudioes[r][c * 2 + 1] & 0xff) << 8); } } short[] sMixAudio = new short[coloum]; int mixVal; int sr = 0; for (int sc = 0; sc < coloum; ++sc) { mixVal = 0; sr = 0; for (; sr < row; ++sr) { mixVal += sMulRoadAudioes[sr][sc]; } sMixAudio[sc] = (short) (mixVal / row); } for (sr = 0; sr < coloum; ++sr) { realMixAudio[sr * 2] = (byte) (sMixAudio[sr] & 0x00FF); realMixAudio[sr * 2 + 1] = (byte) ((sMixAudio[sr] & 0xFF00) >> 8); } return realMixAudio; }
阅读全文
0 0
- Android 混合音频,评价算法
- Android音频开发之尝试音频混合
- android多个视频叠加,音频混合,视频字幕
- 音频混合的方法
- iOS 视频压缩、音视频混合、音频混合
- iOS开发 调节音频音量,音频混合
- 分类算法评价标准
- 算法性能评价
- 算法性能评价
- 分类算法评价标准
- 分类算法评价
- 分类算法评价
- 美学评价算法总结
- 分类算法评价
- Android硬编码——音频编码、视频编码及音视频混合
- Android硬编码——音频编码、视频编码及音视频混合
- Android硬编码——音频编码、视频编码及音视频混合
- Android硬编码——音频编码、视频编码及音视频混合
- mysql 查询结构统计
- netty(九)源码分析之Future和Promise
- 实时同步MongoDB Oplog开发指南
- 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但
- android 日历自定义控件 ,包含 阴历 和 阳历
- Android 混合音频,评价算法
- JavaSE 注解和多线程
- Android静默安装 root提权方式
- 1269 Intersecting Lines
- TCP协议相关
- hdu 6165(dfs or bfs or tarjan+topsort)
- 数组简单排序
- 【剑指offer】面试题 49:丑数
- lua 数组的索引可以是负数