我試圖將視頻流(來自我的攝像頭)存儲到MKV和FLV文件中。這意味着我必須在h264編碼之後拆分視頻和音頻流水線,並用不同的複用器複用每條路徑。GStreamer三通(多路複用器)
這是我想象它應該工作:
|->queue->matroskamux->filesink
v4l2src->videorate->videoscale->x264enc->tee-|
|->queue->flvmux->filesink
這是假設是正確的?所有的隊列都在正確的地方嗎?這樣的GStreamer命令如何看起來像?我對「Tees」的概念特別麻煩。在一個命令中如何/在哪裏啓動它們以及如何操作不同的Tee路徑。我在GStreamer文檔中查找了「Tee」,但我仍然遇到了應用它們的麻煩。
在此先感謝!
編輯:好吧,感謝mreithub我知道它爲視頻工作。這是命令怎麼看起來像現在:
gst-launch-0.10 -v -m v4l2src ! videorate ! videoscale ! ffmpegcolorspace ! x264enc ! tee name=muxtee ! queue2 ! matroskamux name=mkvmux ! filesink location=file1.mkv muxtee. ! queue ! flvmux name=flvmux ! filesink location=file1.flv
這是我試圖讓聲音運行:
gst-launch-0.10 -v -m v4l2src ! videorate ! videoscale ! ffmpegcolorspace ! x264enc ! tee name=muxtee ! queue2 ! matroskamux name=mkvmux pulsesrc ! ffenc_aac ! filesink location=file1.mkv muxtee. ! queue ! flvmux name=flvmux pulsesrc ! ffenc_aac ! filesink location=file1.flv
這不起作用(命令執行,但會立即停止 - 沒有錯誤消息)。但是,我也無法確定放置音頻編碼的位置。在我嘗試的解決方案中,我在每個Tee-Pipeline中編碼音頻(對吧?)。但是,我只想對音頻編碼一次,然後將其複用到兩個流水線路徑中。
這裏的另一種嘗試:將音頻編碼後,我用T恤,並將其分配給mkvmuxer和flvmuxer分裂pipleine:
gst-launch-0.10 -v -m v4l2src ! videorate ! videoscale ! ffmpegcolorspace ! x264enc ! tee name=muxtee ! queue2 ! matroskamux name=mkvmux ! filesink location=file1.mkv muxtee. ! queue ! flvmux name=flvmux ! filesink location=file1.flv pulsesrc ! ffenc_aac ! tee name=t2 ! queue ! mkvmux. t2. ! queue ! flvmux.
但是這一個我收到以下錯誤信息:
could not link queue1 to flvmux
謝謝!
謝謝mreithub!在你的幫助下,我設法讓視頻運行,但我試圖將音頻集成到它中。我遇到了麻煩,正如我編輯的文章中所述。你有一個想法如何有效地融入? –
@ user1595257我剛剛重寫了我的完整答案,以包括音頻支持(希望你喜歡這張圖片)) – mreithub
哇,真是不可思議!非常感謝! –