Использование мультиплексора портит ввод из ALSA

Я пытаюсь создать простую программу GStreamer для объединения видео с камеры v4l2 и звука ALSA. Однако у меня много проблем с муксером. Вот команда, которую я использую:

$ gst-launch -e matroskamux name="muxer" ! filesink location=test.mkv v4l2src ! 
video/x-raw-yuv, framerate=10/1, format=\(fourcc\)YUY2, width=640, height=480 !
videorate ! ffmpegcolorspace ! x264enc ! muxer. alsasrc ! audioconvert ! 
lamemp3enc target=1 bitrate=64 cbr=true ! muxer.

Созданный файл имеет безупречное видео, но консоль выводит такие сообщения:

WARNING: from element /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: Can't record audio 
fast enough
Additional debug info:
gstbaseaudiosrc.c(840): gst_base_audio_src_create (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0:
Dropped 10584 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.

и видео молчит. Замена "alsasrc" на "audiotestsrc" создает файл с таким же прекрасным видео и тестовым тоном без ошибок. Если я использую "videotestsrc" вместо "v4l2src" и попытаюсь снова записать с alsasrc, я могу увидеть тестовое видео, но ошибки не выдаются, но звук поврежден; он играет по частям, прыгает наугад и часто молчит. Эти проблемы случаются, если я использую Avimux вместо Matroska, а также. В alsasrc нет ничего плохого, потому что я могу записывать звук с

 gst-launch -e alsasrc ! audioconvert ! lamemp3enc target=1 bitrate=64 cbr=true !
 filesink location=audio.mp3

Я попытался добавить очередь после alsasrc, но это не помогло. Аудиорат тоже нет. Что я могу сделать, чтобы исправить этот трубопровод?

1 ответ

Решение

Неважно, я исправил это, заменив alsasrc на pulsesrc.

Другие вопросы по тегам