75 lines
2.0 KiB
Bash
75 lines
2.0 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
preview_mode="width=640,height=480,framerate=30/1"
|
||
|
|
vsnk="autovideosink"
|
||
|
|
|
||
|
|
export DISPLAY=:0.0
|
||
|
|
|
||
|
|
#----------------------------------------------------------
|
||
|
|
# selfpath
|
||
|
|
declare -a PreviewDevs=()
|
||
|
|
# mainpath
|
||
|
|
declare -a PictureDevs=()
|
||
|
|
# camera type
|
||
|
|
declare -a CameraTypes=()
|
||
|
|
|
||
|
|
# isp1
|
||
|
|
if [ -d /sys/class/video4linux/v4l-subdev2/device/video4linux/video1 -o \
|
||
|
|
-d /sys/class/video4linux/v4l-subdev5/device/video4linux/video1 ]; then
|
||
|
|
PreviewDevs+=("/dev/video1")
|
||
|
|
PictureDevs+=("/dev/video0")
|
||
|
|
CameraTypes+=("mipi")
|
||
|
|
fi
|
||
|
|
|
||
|
|
# isp2
|
||
|
|
if [ -d /sys/class/video4linux/v4l-subdev2/device/video4linux/video6 -o \
|
||
|
|
-d /sys/class/video4linux/v4l-subdev5/device/video4linux/video6 ]; then
|
||
|
|
PreviewDevs+=("/dev/video6")
|
||
|
|
PictureDevs+=("/dev/video5")
|
||
|
|
CameraTypes+=("mipi")
|
||
|
|
fi
|
||
|
|
|
||
|
|
# usb camera
|
||
|
|
if [ -f /sys/class/video4linux/video10/name ]; then
|
||
|
|
if [ "$( grep -i "UVC" /sys/class/video4linux/video8/name )" ]; then
|
||
|
|
PreviewDevs+=("/dev/video10")
|
||
|
|
PictureDevs+=("/dev/video10")
|
||
|
|
CameraTypes+=("usb")
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
killall gst-launch-1.0 2>&1 > /dev/null
|
||
|
|
sleep 1
|
||
|
|
|
||
|
|
for icam in 0 1
|
||
|
|
do
|
||
|
|
[ -c "${PreviewDevs[$icam]}" ] || break
|
||
|
|
|
||
|
|
echo "Start MIPI CSI Camera Preview ${PreviewDevs[$icam]} ..."
|
||
|
|
|
||
|
|
rkargs="device=${PreviewDevs[$icam]}"
|
||
|
|
if [ ${CameraTypes[$icam]} = "mipi" ]; then
|
||
|
|
CMD="gst-launch-1.0 rkisp ${rkargs} io-mode=1 \
|
||
|
|
! video/x-raw,format=NV12,${preview_mode} \
|
||
|
|
! ${vsnk}"
|
||
|
|
else
|
||
|
|
CMD="gst-launch-1.0 v4l2src ${rkargs} io-mode=4 \
|
||
|
|
! videoconvert ! video/x-raw,format=NV12,${preview_mode} \
|
||
|
|
! ${vsnk}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "===================================================="
|
||
|
|
echo "=== GStreamer 1.1 command:"
|
||
|
|
echo "=== $(echo $CMD | sed -e 's/\r//g')"
|
||
|
|
echo "===================================================="
|
||
|
|
|
||
|
|
if [ $vsnk = "kmssink" -o "$(id -un)" = "pi" ]; then
|
||
|
|
eval "${CMD}"&
|
||
|
|
else
|
||
|
|
su orangepi -c "${CMD}"&
|
||
|
|
fi
|
||
|
|
|
||
|
|
sleep 2
|
||
|
|
done
|
||
|
|
|