GStreamer - генерирует аудио сигнал из файла MP4 - PullRequest
0 голосов
/ 01 октября 2018

У меня есть вопрос из двух частей,

  • 1) У меня есть файл MP4, и я хочу сгенерировать его звуковую форму.

  • 2) У меня есть еще один файл MP4, который содержит звук на канале [0] и канале [1]
    , а также на видеодорожке. Я хочу генерировать сигналы для обоих каналов в виде отдельных изображений.

Как мне добиться того и другого с помощью GSteamer?

1 Ответ

0 голосов
/ 03 октября 2018

Является ли необработанный звук в 16-битном или 32-битном формате?Какова частота дискретизации (44100 Гц) и какова длительность?

В любом случае, предполагая 44,1 кГц при длительности 10 секунд ... поскольку вы не можете нарисовать 44 тысячи выборок с шириной пикселя, выберите окончательный размер экрана (например: ширина = 800 пикселей и высота = 600 пикселей) и выполните математические вычисления:

//# is (samplerate / duration) / width...
(44100 / 10) / 800 = 551;

После прочтения первых двух значений вы будете прыгать вперед на 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;

...