我需要使用我的 Linux PC 上的 USB 网络摄像头录制视频。我发现使用 h264 编码的 gstreamer 可以降低 CPU 百分比。但我对 gstreamer 还不熟悉,所以在运行某些 gstreamer 命令时会出错。所以,有人能告诉我该怎么做,并给我使用 h264 加速编码的 gstreamer 的正确命令吗?提前谢谢。
使用的命令:
gst-launch-1.0 -v v4l2src 设备=/dev/video1!omxh264enc!qtmux!filesink 位置=test.mp4
将管道设置为 PAUSED ... 管道处于活动状态,不需要 PREROLL ... 将管道设置为 PLAYING ... 错误:来自元素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:内部数据流错误。其他调试信息:gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:流式传输已停止,原因未协商 (-4) 执行在 0:00:00.000161565 后结束 将管道设置为 PAUSED ... 将管道设置为 READY ... 将管道设置为 NULL ... 释放管道...
相机规格:
相机名称: 3.0 USB摄像头(东莞市嘉威电子有限公司)
像素格式:YUYV422(30fps)、MJPG(压缩)(60fps)
驱动程序支持:uvcvide0
分辨率格式: 分辨率640x480
来自 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
答案1
我相信您缺少了 h264parse 元素,该元素应位于编码器之后、多路复用器之前。
gst-launch-1.0 -v v4l2src device=/dev/video1 ! omxh264enc ! h264parse ! qtmux ! filesink location=test.mp4
此外,您可能需要 v4l2src 和编码器元素之间的 videoconvert 元素。