使用 gstreamer 捕获分段的音频和视频

capture segmented audio and video with gstreamer

我正在尝试使用 gstreamer 将来自内部网络摄像头和麦克风的音频和视频录制到分段文件中。

它通过以下方式对单个文件起作用:

gst-launch-1.0 -e avfvideosrc ! 
video/x-raw ! vtenc_h264 ! h264parse ! queue ! 
mpegtsmux name=mux ! filesink location=test.mp4  osxaudiosrc !
decodebin ! audioconvert ! faac ! aacparse ! queue ! mux.

做的时候没用:

gst-launch-1.0 -e avfvideosrc !
video/x-raw ! vtenc_h264 ! h264parse ! queue !
splitmuxsink
 muxer=mpegtsmux
 location=test%04d.mp4
 max-size-time=1000000000
 name=mux  osxaudiosrc !
decodebin ! audioconvert ! faac ! aacparse ! queue ! mux.

erroneous pipeline: could not link queue1 to mux

我在 Mac OSX Sierra

上使用 gstreamer 1.12.3

注意:H264/AAC 编码对于我想要实现的目标来说不是必需的,所以如果有只适用于例如avimux,无论出于何种原因,都很好。

编辑: 我在 windows 机器上试过这个,但出现同样的错误。

gst-launch-1.0 -ev ksvideosrc ! video/x-raw !
videoconvert ! queue !
splitmuxsink max-size-time=1000000000 muxer=avimux name=mux
location=video%04d.avi  autoaudiosrc !
decodebin ! audioconvert ! queue ! mux.

就像在 Mac 上一样,用 avimux ! filesink 替换 splitmuxsink 是可行的。我确定我只是错过了一些 'pipeline' 逻辑,所以任何可以将我推向正确方向的澄清都会有所帮助。

我需要像这样将音频流发送到多路复用器的音轨:mux.audio_0

gst-launch-1.0 -ev ksvideosrc ! video/x-raw !
videoconvert ! queue !
splitmuxsink max-size-time=1000000000 muxer=avimux name=mux
location=video%04d.avi  autoaudiosrc !
decodebin ! audioconvert ! queue ! mux.audio_O

当文档应该清晰明了但您遗漏了一些关于如何解释它的基本知识时,就会发生这种情况。