GStreamer-从MP4文件生成音频波形

时间:2018-10-01 13:16:44

标签: audio command-line gstreamer mp4 audio-processing

我有一个两部分的问题,

  • 1)我有一个MP4文件,想要生成它的音频波形。

  • 2)我还有另一个MP4文件,该文件的通道[0]和通道[1]
    上都有音频,并且还有视频轨道,我想将两个通道的波形生成为单独的图像。

如何使用GSteamer实现以上两个目标?

1 个答案:

答案 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;