Я получаю ошибки, когда запускаю Gstreamer audio RTP на BeagleBone Black .
Вот команда Gstreamer TX :
# gst-launch-1.0 -v filesrc location="test.wav" ! decodebin ! audioconvert ! rtpL16pay ! queue ! udpsink host=224.0.0.10 auto-multicast=true port=5555 --gst-debug-level=3
Установка конвейера на PAUSED ... Трубопровод ОБОРОТАЕТ ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src:
заглавные буквы = аудио / x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src:
caps = NULL 0: 00: 00.300210292 23288 0x75490 FIXME
дефолт
gstutils.c: 3648: gst_pad_create_stream_id_printf_valist:
Создание случайного идентификатора потока, рассмотрите возможность реализации детерминированного способа
создания идентификатора потока
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src:
caps = audio / x-raw, формат = (строка) S16LE, макет = (строка) с чередованием,
channel = (int) 2, channel-mask = (bitmask) 0x0000000000000003,
Скорость = (целое) 48000
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps
= аудио / x-raw, макет = (строка) с чередованием, скорость = (int) 48000, формат = (строка) S16BE, каналы = (int) 2,
Канал-маска = (битовая маска) 0x0000000000000003
/GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0.GstPad:src: caps =
application / x-rtp, media = (string) audio, тактовая частота = (int) 48000,
имя-кодировки = (строка) L16, параметры-кодировки = (строка) 2, каналы = (int) 2,
полезная нагрузка = (int) 96, ssrc = (uint) 3613934853,
timestamp-offset = (uint) 2678744220, seqnum-offset = (uint) 28780
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps =
application / x-rtp, media = (string) audio, тактовая частота = (int) 48000,
имя-кодировки = (строка) L16, параметры-кодировки = (строка) 2, каналы = (int) 2,
полезная нагрузка = (int) 96, ssrc = (uint) 3613934853,
timestamp-offset = (uint) 2678744220, seqnum-offset = (uint) 28780
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps =
application / x-rtp, media = (string) audio, тактовая частота = (int) 48000,
имя-кодировки = (строка) L16, параметры-кодировки = (строка) 2, каналы = (int) 2,
полезная нагрузка = (int) 96, ssrc = (uint) 3613934853,
timestamp-offset = (uint) 2678744220, seqnum-offset = (uint) 28780
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps =
application / x-rtp, media = (string) audio, тактовая частота = (int) 48000,
имя-кодировки = (строка) L16, параметры-кодировки = (строка) 2, каналы = (int) 2,
полезная нагрузка = (int) 96, ssrc = (uint) 3613934853,
timestamp-offset = (uint) 2678744220, seqnum-offset = (uint) 28780
/GstPipeline:pipeline0/GstRtpL16Pay:rtpl16pay0.GstPad:sink: caps =
аудио / x-raw, макет = (строка) с чередованием, скорость = (int) 48000,
формат = (строка) S16BE, каналы = (int) 2,
Канал-маска = (битовая маска) 0x0000000000000003
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps
= аудио / x-raw, формат = (строка) S16LE, макет = (строка) с чередованием, каналы = (int) 2, маска канала = (битовая маска) 0x0000000000000003,
Скорость = (целое) 48000
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad1:
caps = audio / x-raw, формат = (строка) S16LE, макет = (строка) с чередованием,
channel = (int) 2, channel-mask = (bitmask) 0x0000000000000003,
rate = (int) 48000 / GstPipeline: pipe0 / GstRtpL16Pay: rtpl16pay0:
отметка времени = 2678744220 / GstPipeline: pipe0 / GstRtpL16Pay: rtpl16pay0:
seqnum = 28780 Трубопровод ПРЕРОЛИРОВАН ... Настройка конвейера на ИГРА
... Новые часы: GstSystemClock
И Gstreamer RX Команда:
# gst-launch-1.0 -v udpsrc multicast-group=224.0.0.10 auto-multicast=true port=5555 caps='application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)2, channels=(int)2, payload=(int)96' ! rtpL16depay ! audioconvert ! alsasink --gst-debug-level=3
Установка конвейера на PAUSED ... Трубопровод работает и не нуждается
PREROLL ... Настройка конвейера на PLAYING ... Новые часы: GstSystemClock
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps =
application / x-rtp, media = (string) audio, тактовая частота = (int) 48000,
имя-кодировки = (строка) L16, параметры-кодировки = (строка) 2, каналы = (int) 2,
Полезная нагрузка = (INT) 96
/GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0.GstPad:src: caps =
аудио / x-raw, формат = (строка) S16BE, макет = (строка) с чередованием,
скорость = (int) 48000, каналы = (int) 2,
маска канала = (битовая маска) 0x0000000000000003 0: 00: 00.357371500 23249
0xefb20 WARN alsa conf.c: 4694: snd_config_expand:
ошибка alsalib: неизвестные параметры {AES0 0x02 AES1 0x82 AES2 0x00 AES3
0x02} 0: 00: 00.358214833 23249 0xefb20 WARN alsa
pcm.c: 2239: snd_pcm_open_noupdate: ошибка alsalib: неизвестный PCM
по умолчанию: {AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps
= аудио / x-raw, макет = (строка) с чередованием, скорость = (int) 48000, формат = (строка) S16LE, каналы = (int) 2,
Канал-маска = (битовая маска) 0x0000000000000003
/GstPipeline:pipeline0/GstAlsaSink:alsasink0.GstPad:sink: caps =
аудио / x-raw, макет = (строка) с чередованием, скорость = (int) 48000,
формат = (строка) S16LE, каналы = (int) 2,
Канал-маска = (битовая маска) 0x0000000000000003
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps
= аудио / x-raw, формат = (строка) S16BE, макет = (строка) с чередованием, скорость = (int) 48000, каналы = (int) 2,
Канал-маска = (битовая маска) 0x0000000000000003
/GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0.GstPad:sink: caps =
application / x-rtp, media = (string) audio, тактовая частота = (int) 48000,
имя-кодировки = (строка) L16, параметры-кодировки = (строка) 2, каналы = (int) 2,
полезная нагрузка = (int) 96 0: 00: 08.472125917 23249 0xefb20 WARN
audiobasesink
gstaudiobasesink.c: 1593: gst_audio_base_sink_get_alignment:
Неожиданный разрыв звуковых меток времени +0: 00: 00.010583333,
повторное синхронизирование 0: 00: 51.970270047 23249 0xefb20 WARN
audiobasesink
gstaudiobasesink.c: 1593: gst_audio_base_sink_get_alignment:
Неожиданный разрыв звуковых меток времени +0: 00: 00.002729166,
повторное синхронизирование 0: 00: 51.982288589 23249 0xefb20 WARN
audiobasesink
gstaudiobasesink.c: 1593: gst_audio_base_sink_get_alignment:
Неожиданный разрыв звуковых меток времени +0: 00: 00.010437500,
повторное синхронизирование 0: 00: 52.010382256 23249 0xefb20 WARN
audiobasesink
gstaudiobasesink.c: 1593: gst_audio_base_sink_get_alignment:
Неожиданный разрыв звуковых меток времени +0: 00: 00.006937500,
повторное синхронизирование 0: 00: 52.029231922 23249 0xefb20 WARN
audiobasesink
gstaudiobasesink.c: 1593: gst_audio_base_sink_get_alignment:
Неожиданный разрыв звуковых меток времени +0: 00: 00.003535166,
RESYNCING
Как вы можете видеть выше, предупреждения выводятся на консоль, а звук трещит и шумит:
аудиобазинк
Есть идеи решить эту проблему?
Спасибо за чтение.
Обратите внимание, что обе команды Gstreamer работают на одном компьютере. на самом деле он действует как локальная звуковая петля.