我需要在基于 Linux 的电脑上使用 USB 网络摄像头录制视频。我发现使用 h264 编码的 gstreamer 可以降低 cpu 百分比。但是我是 gstreamer 的新手,所以我在运行一些 gstreamer 命令时遇到了错误。那么,谁能告诉我该怎么做,并给我使用 h264 加速编码的 gstreamer 的正确命令。提前致谢。
使用的命令:
gst-launch-1.0 -v v4l2src device=/dev/video1 ! omxh264enc!qtmux!文件接收器位置=test.mp4
将管道设置为 PAUSED ...管道处于活动状态,不需要 PREROLL ...将管道设置为 PLAYING ...错误:来自元素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:内部数据流错误。附加调试信息:gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: streaming stopped, reason not-negotiated (-4) Execution ended after 0:00:00.000161565 Setting pipeline to PAUSED ...将管道设置为 READY ... 将管道设置为 NULL ... 释放管道 ...
相机规格:
摄像头名称: 3.0 USB Camera(杰威电子(东莞)有限公司)
pixel_format: YUYV422 (30fps), MJPG (compressed) (60fps)
driver_support: uvcvide0
resolution_format: 640x480 , 1920x1080
来自 v4l2 的相机详细信息:
v4l2-ctl --info -d /dev/video2 --list-formats
驱动程序信息(不使用 libv4l2):
驱动名称:uvcvideo
Card type : 3.0 USB Camera
Bus info : usb-70090000.xusb-1.2
Driver version: 4.9.140
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
ioctl:VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Index : 1
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
我相信你错过了 h264parse 元素,它应该在编码器之后,在 muxer 之前。
此外,您可能需要 v4l2src 和编码器元素之间的 videoconvert 元素。