差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
digi:arm-embedded:ccmp2:mipiwifi [2025/07/06 17:56] – 创建 robindigi:arm-embedded:ccmp2:mipiwifi [2025/07/08 09:02] (当前版本) robin
行 1: 行 1:
 ====MIPI WiFi camera 测试==== ====MIPI WiFi camera 测试====
 使用镜像 ccmp25-rtsp 使用镜像 ccmp25-rtsp
 +
 **deyaio-manifest的rtsp分支,用rtsp.xml,使用meta-custom的rtsp分支** **deyaio-manifest的rtsp分支,用rtsp.xml,使用meta-custom的rtsp分支**
 ===DEY 5.0 r1 测试=== ===DEY 5.0 r1 测试===
行 8: 行 9:
 => setenv overlays ccmp25-dvk_g101evn010-lvds.dtbo => setenv overlays ccmp25-dvk_g101evn010-lvds.dtbo
 => saveenv => saveenv
 +</code>
 +
 +一、使用原来的demo程序,增加对mipi摄像头的支持
 +
 +测试镜像支持多种web服务方式,比如httpd,thttpd等,支持web服务器功能的demo程序会自动关闭不用的Web服务,如果需手动测试并使用80端口,你可以手动关闭默认的thttpd程序。
 +<code>
 +systemctl stop thttpd
 </code> </code>
  
行 24: 行 32:
  
 其它设备是硬件codec之类的,也可能未来有用。 其它设备是硬件codec之类的,也可能未来有用。
-v4l2-ctl -d /dev/video7 --list-formats-ext  #查看摄像头支持的输出格式,视新只支持MJPG或YUYV,都是800X800,帧率为5~30fps,低端窄带的小模块,可以用5~15fps来节约带宽,最高设置为30fps。+v4l2-ctl -d /dev/video2 --list-formats-ext  #查看摄像头支持的输出格式,视新只支持MJPG或YUYV,都是800X800,帧率为5~30fps,低端窄带的小模块,可以用5~15fps来节约带宽,最高设置为30fps。
  
-v4l2-ctl -d /dev/video7 --get-fmt-video  #查看当前输出 ,也可简写为v4l2-ctl -d /dev/video7 -V +v4l2-ctl -d /dev/video2 --get-fmt-video  #查看当前输出 ,也可简写为v4l2-ctl -d /dev/video2 -V 
-v4l2-ctl -d /dev/video7 --get-parm  #查看当前帧率,默认30fps+v4l2-ctl -d /dev/video2 --set-fmt-video=width=640,height=480,pixelformat=YUYV
  
-v4l2-ctl -d /dev/video7 --set-fmt-video=width=800,height=800,pixelformat=MJPG   #设置输出格式,请根据摄像头支持来修改,客户的工装摄像头默认是800X800@30fps,所以也可不用修改使用默认值,其它摄像头需要根据支持格式修改+   #设置输出格式,请根据摄像头输出的支持格式来修改,不知道MJPG就YUYV转码 
 +    
 +   测试 
 +   <code>
  
 +root@ccmp25-dvk:~# mjpg_streamer -i "input_v4l2.so -d /dev/video2 -r 640x480 -f 0" -o "output_http.so"
 +MJPG Streamer Version: git rev: 75715018f4e38930c368cae71cc1b2c93d5c13ba
 +Failed to initialize any supported format
 +input_init() return value signals to exit
 +</code>
 +结果显示,买的摄像头不支持MJPG输出,转码程序未调好,原来的demo程序还需进一步调整以适配新的mipi摄像头
 +
 +二、使用gstreamer来实现
 +
 +1、使用视频发送端和客户端的方式
 +
 +直接使用摄像头 JPEG 输出,利用摄像头内置的 JPEG 编码功能,可以完全避免转码延迟,大幅降低 CPU 占用。
 +
 +发送端管道 (ConnectCore 板)
 +<code>
 +gst-launch-1.0 v4l2src device=/dev/video2 io-mode=dmabuf !  image/jpeg,width=1280,height=720,framerate=30/1 !  jpegparse !  rtpjpegpay !  udpsink host=<客户端IP> port=5000 sync=false
 +</code>
 +其中如果发给本机:gst-launch-1.0 v4l2src device=/dev/video2 io-mode=dmabuf !  image/jpeg,width=1280,height=720,framerate=30/1 !  jpegparse !  rtpjpegpay !  udpsink host=127.0.0.1 port=5000 sync=false
 +
 +2.
 +备选方案:使用 WebRTC 实现超低延迟
 +
 +<code>
 +gst-launch-1.0 v4l2src device=/dev/video2 !  image/jpeg,width=1280,height=720 !  jpegparse ! rtpjpegpay !  webrtcbin name=webrtc  stun-server=stun://stun.l.google.com:19302  ! udpsink host=<客户端IP> port=5000
 +</code>
 +
 +3. 备选方案:YUYV 转 H.264(仅当需要高压缩率时
 +</code>
 +gst-launch-1.0 v4l2src device=/dev/video2 !  video/x-raw,format=YUYV !  nvvidconv ! 'video/x-raw(memory:NVMM)' !  nvv4l2h264enc bitrate=4000000 !  rtph264pay ! udpsink host=192.168.46.100 port=5000
 +</code>
 +
 +
 +*************调试相关
 +
 +<code>
 +gst-launch-1.0 v4l2src device=/dev/video2 io-mode=dmabuf ! image/jpeg,width=640,height=480 !  jpegparse ! jpegdec !  videoconvert !  autovideosink
 +
 +gst-launch-1.0 v4l2src device=/dev/video2 io-mode=mmap !  image/jpeg,width=640,height=480 !  jpegparse ! jpegdec !  videoconvert ! autovideosink
 +
 +gst-launch-1.0 v4l2src device=/dev/video2 !  image/jpeg,width=640,height=480 !  queue max-size-buffers=2 leaky=downstream !  jpegparse ! jpegdec !  videoconvert !    autovideosink
 +
 +上面不行,JPEG可能是为了静态抓图,而不是mjpg, 设置回YUYV
 +
 +gst-launch-1.0 v4l2src device=/dev/video2 !  "video/x-raw,format=YUYV,width=640,height=480" !  videoconvert !  video/x-raw,format=I420 !  autovideosink
 +
 +gst-launch-1.0 v4l2src device=/dev/video2 ! capsfilter caps="video/x-raw,format=YUYV,width=640,height=480" !  videoconvert !  autovideosink
 +
 +尝试mjpg,还是要设置回jpeg
 +gst-launch-1.0 v4l2src device=/dev/video2 !  image/jpeg,width=640,height=480 !  jpegdec !  videoconvert !  autovideosink
 +
 +</code>
 +  上面不行,就用专用转换方案
 + <code>
 +gst-launch-1.0 v4l2src device=/dev/video2 !  v4l2convert !  video/x-raw,format=YUYV,width=640,height=480 !  videoconvert !  autovideosink
 +</code>
 +
 +********旧资料
 gst-launch-1.0 v4l2src device=/dev/video2 ! autovideoconvert ! autovideosink  #注意,如果想简单测试一下在显示屏上输出摄像头的视频,可用这个,但它会占用设备,不可再用web共享,因此为了web共享,用下面这个办法,先创建web的流,再用相同的流本地显示  gst-launch-1.0 v4l2src device=/dev/video2 ! autovideoconvert ! autovideosink  #注意,如果想简单测试一下在显示屏上输出摄像头的视频,可用这个,但它会占用设备,不可再用web共享,因此为了web共享,用下面这个办法,先创建web的流,再用相同的流本地显示 
  
  
 </code> </code>
 +手动测试通过web或本地显示摄像mipi头的视频,先停thttpd,再停mj
 +
  
-通过web或本地显示usb摄像头的视频 
 <code> <code>
 1、创建ip直接访问所需页面 1、创建ip直接访问所需页面