我试图将视频流(来自我的摄像头)存储到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
哇,真是不可思议!非常感谢! –