Использование мультиплексора портит ввод из 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, но это не помогло. Аудиорат тоже нет. Что я могу сделать, чтобы исправить этот трубопровод?