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後加入隊列很好,但它並沒有幫助。音頻速率也沒有。我能做些什麼來修復這條管線?