改变PCM音量的JAVA代码

  最近做一个声音文件,对方说是声音太小。找了个软件,也没看到哪里能够调整音量。怎么办?咱是程序员,写个程序吧。

  试了一下,其实原来的声音不小,只是设备限制,所以播放声音小。于是吾将声音变小,效果就出来了。

  放这里,供需要的程序员试试:

	private short getShort(byte[] src, int start)
	{	
		return (short)((src[start] & 0xFF) | (src[start+1] << 8));
	}
	
	short SHRT_MAX = (short) 0x7F00;
	short SHRT_MIN = (short)-0x7F00;
	
    /**
     * 调节PCM数据音量
     * src  : 
     * nLen :
     * dest : 
     * nBitsPerSample: 16/8
     * multiple: 放大倍数,如1.5
     */
	int amplifyPCMData(byte[] src, int nLen, byte[] dest, int nBitsPerSample, float multiple)   
	{   
	    int nCur = 0;   
	    if (16 == nBitsPerSample)   
	    {   
	        while (nCur < nLen)   
	        {   
	            short volum = getShort(src, nCur);
	            //Log.d(TAG, "volum="+volum);
	            volum = (short)(volum * multiple);   
	            if (volum < SHRT_MIN)
	            {
	            	volum = SHRT_MIN;
	            }
	            else if (volum > SHRT_MAX)//爆音的处理   
	            {   
	            	volum = SHRT_MAX;   
	            }   
	            
	            dest[nCur]   = (byte)( volum       & 0xFF);
	            dest[nCur+1] = (byte)((volum >> 8) & 0xFF);
	            nCur += 2;   
	        }   
	           
	    }   
	    /*else if (8 == nBitsPerSample)   
	    {   
	        while (nCur < nLen)   
	        {   
	            BYTE* volum = src + nCur;   
	            *volum = (*volum) * multiple;   
	            if (*volum > 255)//爆音的处理   
	            {   
	                *volum = 255;   
	            }   
	            *src  = *volum  ;   
	            nCur ++;   
	        }   
	           
	    }   */
	    return 0;   
	}

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值