您当前的位置: 首页 >  qt

令狐掌门

暂无认证

  • 1浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt FFmpeg视频播放器开发(六):FFmpeg视频音量调节

令狐掌门 发布时间:2020-01-01 03:51:30 ,浏览量:1

       在声音物理学中,音量的变化是对数关系,在代码里,暂时我没有这样处理,简单的用线性关系表示,在主进程进行设置,解码时设置进pcm数据,再用声卡播放。

       这段代码的实现也是参考了别人的,代码如下:

/*
* @Func   : SetVolume
* @brief  : 音量调节
* @author : linghuzhangmen
* @[in]   : buf 为需要调节音量的音频数据块首地址指针
* @[in]   : size为长度
* @[in]   : uRepeat为重复次数,通常设为1
* @[in]   : vol为增益倍数,可以小于1
*/
void MyFFmpeg::SetVolume(char* buf, UINT32 size, UINT32 uRepeat, double vol)
{
	if (!size)
	{
		return;
	}
	for (int i = 0; i < size; i += 2)
	{
		short wData;
		wData = MAKEWORD(buf[i], buf[i + 1]);
		long dwData = wData;
		for (int j = 0; j < uRepeat; j++)
		{
			dwData = dwData * vol;
			if (dwData < -0x8000)
			{
				dwData = -0x8000;
			}
			else if (dwData > 0x7FFF)
			{
				dwData = 0x7FFF;
			}
		}
		wData = LOWORD(dwData);
		buf[i] = LOBYTE(wData);
		buf[i + 1] 
关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0759s