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

时间:2017-12-01 12:43:33

标签: gstreamer gstreamer-1.0

我正在尝试将内部网络摄像头和麦克风的音频和视频录制到带有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上一样,将splitmuxsink替换为avimux ! filesink也可以。我确信我只是错过了一些“管道”逻辑,所以任何可以推动我朝着正确方向发展的澄清都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我需要将音频流发送到多路复用器的音轨,如下所示: 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

当文档清晰但你错过了一些关于如何解释文档的基本知识时会发生这种情况。