我有一个两部分的问题,
1)我有一个MP4文件,想要生成它的音频波形。
2)我还有另一个MP4文件,该文件的通道[0]和通道[1]
上都有音频,并且还有视频轨道,我想将两个通道的波形生成为单独的图像。
如何使用GSteamer实现以上两个目标?
答案 0 :(得分:0)
原始音频是16位还是32位格式?采样率(44100 Hz)是多少?持续时间是多少?
无论如何都假设在10秒的持续时间为44.1khz ...由于您不能绘制44,000个样本作为像素宽度,因此请选择最终的显示尺寸(例如:width = 800px和height = 600px)并进行数学运算:
//# is (samplerate / duration) / width...
(44100 / 10) / 800 = 551;
读取前2个值后,您将向前跳551个字节并重复直到总计(。
因此,您的原始数据从pos = 0;
开始...
1)检查该样本和下一个样本,然后将它们的值相乘(sample[pos] x sample[pos+1]
)。
2)将结果除以65335(最大值为16位或2个字节)。
这是第一个样本或点的最终值。
3)画一条线以适合图像高度(例如: 600px),因此如果sample = 0.83
则:
line_height = (600 x 0.83); //# gives 498 as line height
line_count += 1; //# add plus 1 to line count (stop when it reaches 800)
4)从位置[pos]
向前跳过 +551 个字节,然后重复步骤(1),直到line_count == 800;