gstreamer视频,720p和25/30 fps

时间:2014-10-22 09:01:21

标签: webcam embedded-linux gstreamer

我试图通过网络流式传输USB网络摄像头。我之前设法在1280x720以10 fps的速度完成这项工作,但由于相机不够强大,因此无法达到25或30 fps。 所以我买了一台新的USB摄像头(Logitech C920),能够以30fps的速度完成720p(正如文档所说)

问题是它仍然无法工作25或30fps

以下是我使用的gstreamer命令:

发信人:

gst-launch v4l2src device=/dev/video0 ! video/x-raw-yuv,width=1280,height=720,framerate=10/1 ! ffmpegcolorspace ! vpuenc codec=6 ! rtph264pay ! udpsink host=192.168.20.27 port=5000 

接收器:

gst-launch udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, payload=(int)96, encoding-name=(string)H264" ! rtph264depay ! ffdec_h264 ! xvimagesink

所以这是以10fps的速度运行。当我尝试更改为更多fps时,它失败并出现以下错误:

Setting pipeline to PAUSED ...                                                  
[INFO]  Product Info: i.MX6Q/D/S                                                
vpuenc versions :)                                                              
    plugin: 3.0.11                                                          
    wrapper: 1.0.46(VPUWRAPPER_ARM_LINUX Build on Sep 29 2014 16:56:55)     
    vpulib: 5.4.23                                                          
    firmware: 3.1.1.46056                                                   
ERROR: Pipeline doesn't want to pause.                                          
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not negotiate format                                                                      
Additional debug info:                                                          
/media/philippe/data/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer/0.10.36-r3/gstreamer-0.10.36/libs/gst/base/gstbasesrc.c(2830): gst_base_src_start (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:      
Check your filtered caps, if any                                                
Setting pipeline to NULL ...                                                    
Freeing pipeline ...        

如果我删除宽度参数,我最多可以达到15fps但不会更高。 正如错误所述,它无法协商格式。所以我相信我必须更改/添加/删除" video / x-raw-yuv,width = 1280,height = 720,framerate = 10/1"参数。但是我应该改变什么来使其有效?

PS:如果我将USB网络摄像头插入电脑,我设法用VLC记录720 @ 25fps而没有任何问题

编辑:当我在gst-launch命令之前添加GST_DEBUG = 3时,会出现一些警告。

这里是report

再次编辑:因为它似乎是一个格式问题,我尝试了这个列表中的每一个: YVU9 YV12 UYVY Y42B Y41B Y41P NV12 NV21 YUV9 I420

只有YUY2以10fps的速度运行(并且在25/30不起作用)

任何指针都会有很大的帮助;)

谢谢

1 个答案:

答案 0 :(得分:1)

我在imx社区委员会上提出了同样的问题,他们回答说这是因为USB读取速度限制在21Mbps,这是不够的,因为720p @ 30fps在未编码时需要30Mbps。

来源 https://community.freescale.com/message/353963#353963