linux音量存在哪个文件,在Linux中导出音频文件音量dB级别

您可以使用

BASS library(非商业免费)并使用

BASS_ChannelGetLevel().

以下是获取级别并将其输出到STDOUT的代码:

#include

#include

#include

#include "bass.h"

int main(int argc, char **argv)

{

BASS_Init(0 /* "NO SOUND" device */, 44100, 0, 0, NULL);

if ( argc == 3 )

{

int block = atoi( argv[2] ); // take levels every argv[2] ms

if ( block < 20 )

block = 20;

HSTREAM chan = BASS_StreamCreateFile(FALSE, argv[1], 0, 0, BASS_STREAM_DECODE);

if ( chan )

{

// BASS_ChannelGetLevel takes 20ms from the channel

QWORD len = BASS_ChannelSeconds2Bytes(chan, (float)block / (float)1000 - (float)0.02);

char data[len];

DWORD level, left, right;

while ( -1 != (level = BASS_ChannelGetLevel(chan) ) ) // takes 20ms

{

left=LOWORD(level); // the left level

right=HIWORD(level); // the right level

printf("%i, %i\n", left, right);

BASS_ChannelGetData(chan, data, len); // get data away from the channel

}

BASS_StreamFree( chan );

}

}

BASS_Free();

return 0;

}

从bass24-linux.zip存档中提取bass.h和libbass.so并使用以下命令构建cpp文件:

g++ levels.cpp -o levels -lbass

如何执行:levels filename milliseconds(20minimum)

./levels 1.mp3 5000 >levels.txt

这是levels.txt,每5秒采取一次水平(左声道,右声道):

1, 2

23235, 20363

22704, 20601

27203, 22476

10384, 12082

12059, 13387

9600, 10063

14590, 12261

16428, 14745

17569, 14723

29628, 27913

20799, 23554

24056, 20564

20344, 21242

21318, 22888

25389, 29050

27185, 23924

25469, 22540

28453, 29037

19669, 19797

16497, 16086

12081, 11843

20030, 20050

20512, 19537

19347, 14610

27673, 26563

26414, 24696

19775, 22869

24137, 25127

22093, 23184

26563, 24422

27718, 23791

24456, 26598

29353, 22647

562, 508

该级别从0(静音)到32768(最大)线性范围.

时间为6mb mp3文件,100ms周期:

# time ./levels 1.mp3 100 >levels.txt

real 0m0.981s

user 0m0.972s

sys 0m0.008s

大约一秒钟产生22Kb levels.txt文件,周期为100ms.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值