gstreamer 使用 h264 编码,视频尺寸较小

gstreamer 使用 h264 编码,视频尺寸较小

我需要使用我的 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 元素。

相关内容