使用 GStreamer 将摄像头和麦克风的音频和视频保存到一个文件中

使用 GStreamer 将摄像头和麦克风的音频和视频保存到一个文件中

我需要一种方法来同时录制来自我的相机的视频和来自我的麦克风的音频,以便将它们保存在一个文件中。

目前,我知道如何录制视频......

gst-launch-1.0 -e autovideosrc ! videoconvert ! matroskamux ! filesink location=recording.mkv

和音频...

gst-launch-1.0 -e autoaudiosrc ! audioconvert ! wavenc ! filesink location=recording.wav

...分别地。

我需要的是一个包含来自的视频recording.mkv和来自的音频的文件recording.wav


我发现了一个只要稍微调整一下就能起作用的东西。

gst-launch-1.0 -e autovideosrc ! queue ! videoconvert ! mkv. autoaudiosrc ! queue ! audioconvert ! mkv. matroskamux name=mkv ! filesink location=test.mkv sync=false

它只能录制视频,不能录制音频,不过正如我所说,我认为只需要稍微调整一下就可以录制音频。

答案1

这里是:

gst-launch-1.0 -e autovideosrc ! queue ! videoconvert ! mkv. autoaudiosrc ! queue ! audioconvert ! mkv. matroskamux name=mkv ! filesink location=test.mkv sync=false

工作原理如下:

  1. 我们使用 从网络摄像头获取视频源autovideosrc
  2. 接下来,我们将该 feed 输出到它自己的线程中queue
  3. 视频源queue转到videoconvert转换地点(我不确定这一步是否必要)。
  4. 最后,视频源进入名为 的元素mkv,其类型为matroskamux。此元素将视频源转换为 Matroska。
  5. 之后我们使用获取音频反馈autoaudiosrc
  6. autoaudiosrc我们使用 在另一个线程中放置 feed queue
  7. queue音频到audioconvert转换的地方(也不确定是否有必要)。
  8. 转换后的音频进入同一matroskamux元素mkv。此处音频源被转换为 Matroska。
  9. 由于音频和视频源都发往同一元素,因此它们被合并为一个 Matroska 源。
  10. 最后,使用 将该 Matroska 源保存到文件中。如果您的计算机不是一台强大的计算机,filesink您可能需要进行设置。sync=false

就是这样。另外,如果有人想知道为什么我在问题中写道此命令不录制音频,那是因为我忘了打开麦克风。

相关内容