使用复用器会破坏来自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之后添加一个队列,但它没有帮助。 音频速率也没有。 我能做些什么来修复这条管线?


没关系,我通过用pulsesrc替换alsasrc来修复它。

链接地址: http://www.djcxy.com/p/43937.html

上一篇: Using a muxer corrupts input from ALSA

下一篇: Gstreamer raw video AVI does not play in Media Player