Отправка аудиоданных порциями в GStreamer с помощью Python3 - PullRequest
0 голосов
/ 26 июня 2019

Я очень недавно использую GStreamer, и у меня возникла следующая проблема.Я получаю webradio-stream и извлекаю метаданные и аудио-данные.Они поставляются в блоках по 8 или 16 кБ и кодируются как MP3 или AAC.Несколько блоков были получены каждую секунду.Я хочу пропустить первые блоки первых 20-40 секунд, в зависимости от того, сколько было отправлено до того, как данные «в реальном времени» (синхронно с FM-радио-сигналом).

Я сделал следующее:- проверяйте количество поступающих данных, пока я не увижу, что это «в реальном времени» - проанализируйте данные для формата и извлеките аудиоданные (например, MP3), начиная с 1-го полного MP3-кадра, а затем сохраните этот первый блок в массив -все последующие блоки будут добавлены в массив

Пока все хорошо.Это работает гладко.

Но тогда мне нужно сохранить все данные в файл на виртуальном диске и начать играть с GStreamer.Это также работает, но размер файла увеличивается со временем.Теперь у меня появилась идея отправить аудиоблоки напрямую в GStreamer и попросить GStreamer воспроизвести его.Использование файла не имеет большого значения, потому что я нашел примеры кода, делающие именно это.Но я не знаю, как отправить аудиоданные напрямую в GStreamer для обработки.Я прочитал несколько справочных документов о AppSink и думаю, что это может быть решением, но я не смог найти правильный подход.

У кого-нибудь есть подсказка, как это сделать?Это было бы очень полезно.

Заранее спасибо.

...