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