2014-02-16 52 views
2

我正在試圖製作一個簡單的GStreamer程序,用於將來自v4l2相機和ALSA音頻的視頻複合在一起。但是,我在混合器方面遇到了很多問題。下面是我使用的命令:使用複用器破壞來自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

沒關係,我通過用pulsesrc替換alsasrc來解決它。