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

b33tle

我正在尝试使用 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 我确定我只是错过了一些“管道”逻辑,因此任何可以将我推向正确方向的澄清都会有所帮助。

b33tle

我需要像这样将音频流发送到复用器的音轨: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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章