使用多路复用器会破坏ALSA的输入

时间:2014-02-16 23:28:44

标签: video gstreamer alsa matroska

我正在尝试制作一个简单的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.

视频无声。用“audiotestsrc”替换“alsasrc”会使文件具有相同的完美视频和测试音,没有错误。如果我使用“videotestsrc”代替“v4l2src”并尝试再次使用alsasrc进行录制,我可以看到测试视频并且没有给出错误,但声音已损坏;它起作用,随意跳跃,经常保持沉默。如果我使用avimux而不是Matroska,就会出现这些问题。 alsasrc没有任何问题,因为我可以用

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

我尝试在alsasrc之后添加一个队列,但它没有帮助。音频也没有。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

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