问题描述
嗨,我一直在尝试使用 gstreamer 通过网络发送网络摄像头图像。以下命令失败。
./test-launch --gst-debug=3 '( v4l2src
device=/dev/video2 ! image/jpeg,width=800,height=600 ! jpegparse ! rtpjpegpay na
me=pay0 pt=96 )'
日志在这里:
stream ready at rtsp://127.0.0.1:8554/test
0:00:13.123646506 9837 0x7f8c02a190 FIXME default gstutils.c:3902:gst_pad_create_stream_id_internal:<appsrc0:src> Creating random stream-id,consider implementing a deterministic way of creating a stream-id
0:00:13.133301870 9837 0x7f94029540 WARN v4l2src gstv4l2src.c:560:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
0:00:21.022221867 9837 0x7f8c02a140 WARN v4l2bufferpool gstv4l2bufferpool.c:754:gst_v4l2_buffer_pool_start:<v4l2src0:pool:src> Uncertain or not enough buffers,enabling copy threshold
0:00:21.139717284 9837 0x55948cad40 FIXME rtspmedia rtsp-media.c:3581:gst_rtsp_media_suspend: suspend for dynamic pipelines needs fixing
0:00:21.153628638 9837 0x7f5c0145e0 FIXME default gstutils.c:3902:gst_pad_create_stream_id_internal:<appsrc1:src> Creating random stream-id,consider implementing a deterministic way of creating a stream-id
0:00:21.196879575 9837 0x7f94053f70 WARN v4l2src gstv4l2src.c:560:gst_v4l2src_query:<v4l2src1> Can't give latency since framerate isn't fixated !
0:00:41.142190037 9837 0x55948cad40 WARN rtspmedia rtsp-media.c:2728:wait_preroll: Failed to preroll pipeline
0:00:41.142313578 9837 0x55948cad40 WARN rtspmedia rtsp-media.c:3032:gst_rtsp_media_prepare: Failed to preroll pipeline
0:01:10.185500026 9837 0x7f5c014540 WARN default v4l2-utils.c:189:gst_v4l2_error:<v4l2src1> error: Device '/dev/video2' is busy
0:01:10.186375078 9837 0x7f5c014540 WARN default v4l2-utils.c:192:gst_v4l2_error:<v4l2src1> error: Call to S_FMT Failed for MJPG @ 800x600: Device or resource busy
0:01:10.188791380 9837 0x7f94053f70 WARN rtspmedia rtsp-media.c:2433:default_handle_message: 0x7f94042340: got error Device '/dev/video2' is busy (../../../gst-plugins-good-1.12.2/sys/v4l2/gstv4l2object.c(3595): gst_v4l2_object_set_format_full (): /GstPipeline:media-pipeline/GstBin:bin1/GstV4l2Src:v4l2src1:
Call to S_FMT Failed for MJPG @ 800x600: Device or resource busy)
"is busy (../../../gst-plugins-good-1.12.2/sys/v4l2/gstv4l2object.c(3595): gst_v4l2_object_set_format_full (): /GstPipeline:media-pipeline/GstBin:bin1/GstV4l2Src:v4l2src1:
Call to S_FMT Failed for MJPG @ 800x600: Device or resource busy)"
最后一行似乎是罪魁祸首。如果我执行v4l2-compliance VIdioC_S_FMT 是失败。
"/data # v4l2-compliance -d /dev/video2 | grep FAIL
test VIdioC_QUERY_EXT_CTRL/QUERYMENU: FAIL
test VIdioC_QUERYCTRL: FAIL
test VIdioC_G/S_PARM: FAIL
test VIdioC_TRY_FMT: FAIL
test VIdioC_S_FMT: FAIL
"
工作计算机的内核版本为:
PRO-WIFI:~/projects/gst-rtsp-server/examples$ cat /proc/version
Linux version 5.8.0-41-generic (buildd@lgw01-amd64-003) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0,GNU ld (GNU Binutils for Ubuntu) 2.34) #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021
非工作计算机的内核版本是
/ # cat /proc/version
Linux version 4.9.103 (oe-user@oe-host) (gcc version 6.4.0 (GCC) ) #1 SMP PREEMPT Tue Feb 9 22:25:36 UTC 2021
这是内核问题吗?我想缩小更多范围,但我被卡住了:(如果你能透露一些信息,我真的很感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)