Я пытаюсь создать простую программу GStreamer для мультиплексирования видео с камеры v4l2 и звука ALSA. Однако у меня много проблем с мультиплеером. Вот команда, я использую:Использование muxer corruptts input от 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, но это не помогло. Аудитора тоже не было. Что я могу сделать, чтобы исправить этот конвейер?