WARNING: erroneous pipeline: no property "timeout" in element "filesink0"
时间: 2023-12-03 07:02:36 浏览: 165
非常抱歉,我的回答还是有误。在GStreamer中,`filesink`元素也没有`timeout`属性。要设置视频录制的时间限制,需要使用其他方式。
以下是一个使用GStreamer录制十秒H264格式视频的命令行示例,使用`timeout`命令和`pkill`命令实现自动停止录制:
```
timeout 10s gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! x264enc tune=zerolatency speed-preset=superfast ! h264parse ! mp4mux ! filesink location=output.mp4 & sleep 1 && pkill -f "gst-launch-1.0"
```
这个命令使用`timeout`命令来限制GStreamer录制视频的时间为10秒,如果录制超时,`timeout`命令将自动终止GStreamer进程。`pkill`命令用于在录制完成后手动停止GStreamer进程。
您可以根据需要更改命令行选项,例如更改视频的分辨率或帧速率。请注意,您需要安装GStreamer及其插件才能运行此命令。另外,请确保摄像头设备在/dev/video0路径上,如果不是,请更改命令中的device选项。
相关问题
WARNING: erroneous pipeline: no property "duration" in element "filesink0"
很抱歉,我的之前的回答有误。在 GStreamer 中,`filesink` 元素没有 `duration` 属性。如果您想要限制录制时间,有以下两种方法:
1. 使用 `timeout` 插件:可以使用 `timeout` 插件来设置录制时长。例如,以下命令可以录制 10 秒钟的视频,并在时间到达后自动停止录制:
```
gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-h264,width=640,height=480,framerate=30/1 ! h264parse ! mp4mux ! filesink location=test.mp4 async=false -e timeout=10000
```
其中,`timeout` 参数的单位是毫秒,这里设置为 10000 毫秒,即 10 秒钟。
2. 使用 `gst-launch-1.0` 的 `timeout` 命令:`timeout` 命令可以在指定的时间内运行 `gst-launch-1.0` 命令,并在时间到达后自动终止进程。例如,以下命令可以在 10 秒钟内录制视频:
```
timeout 10 gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-h264,width=640,height=480,framerate=30/1 ! h264parse ! mp4mux ! filesink location=test.mp4
```
这里使用了 `timeout` 命令来限制 `gst-launch-1.0` 命令的运行时间为 10 秒钟。
WARNING: erroneous pipeline: no property "max-size-time" in element "filesink0"
这个警告表明 `filesink` 元素不存在 `max-size-time` 属性。因此,在您的命令中,`max-size-time` 参数应该放在 `mp4mux` 元素上而不是 `filesink` 元素上。
以下是一个修正后的命令,用于捕获摄像头视频并将其保存为 `MP4` 文件,时长为十秒:
```
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=640, height=480, framerate=30/1 ! videoconvert ! x264enc ! mp4mux max-size-time=10000000000 ! filesink location=test.mp4 async=false sync=false
```
在这个命令中,`v4l2src` 元素捕获 `/dev/video0` 设备的视频流,`video/x-raw` 指定视频流的格式为原始格式,`width` 和 `height` 指定视频的宽度和高度,`framerate` 指定视频的帧率。接下来,`videoconvert` 元素将视频流转换为 `x264enc` 元素所需的格式。`x264enc` 元素将视频编码为 `H.264` 格式。最后,`mp4mux` 元素将视频流封装为 `MP4` 格式,并使用 `filesink` 元素将视频保存到文件中。
`max-size-time` 参数指定了输出文件的最大时长(以纳秒为单位)。在本例中,它被设置为十秒。`async` 和 `sync` 参数分别指定异步和同步处理模式。
您可以根据需要修改命令中的参数,例如更改视频的分辨率、帧率等。
阅读全文