Linux 系统中将 USB 摄像头的图像显示到fb0帧缓冲设备
要在 Linux 系统中将 USB 摄像头的图像显示到fb0帧缓冲设备(分辨率 240×240),可以使用ffmpeg或mplayer等工具来处理视频流并输出到帧缓冲设备。以下是具体步骤:
ffmpeg可以直接捕获 USB 摄像头视频流,进行格式转换和分辨率调整,然后输出到fb0。
确认摄像头设备
首先先确定 USB 摄像头的设备路径,通常是/dev/video0(可通过ls /dev/video*查看):
bash
ls /dev/video*
使用 ffmpeg 输出到 fb0
运行以下命令,将摄像头视频流转码为 240×240 分辨率并显示到fb0:
bash
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 \ -vf "scale=240:240" -pix_fmt rgb565 \ -f fbdev /dev/fb0
参数说明:
-f v4l2:指定输入格式为 Video4Linux2(摄像头常用格式)。
-video_size 640x480:摄像头的原始分辨率(可根据实际情况调整)。
-i /dev/video0:输入设备为 USB 摄像头。
-vf "scale=240:240":将视频缩放到 240×240 分辨率。
-pix_fmt rgb565:指定输出像素格式(需与fb0支持的格式匹配,可通过fbset查看)。
-f fbdev /dev/fb0:输出到帧缓冲设备fb0。
使用 transpose 滤镜可以将画面旋转90度的整数倍
顺时针旋转90度:
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vf "transpose=1" -pix_fmt rgb565 -f fbdev /dev/fb0
逆时针旋转90度:
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vf "transpose=2" -pix_fmt rgb565 -f fbdev /dev/fb0
旋转180度 (相当于上下颠倒+左右镜像):
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vf "transpose=1,transpose=1" -pix_fmt rgb565 -f fbdev /dev/fb0
水平或垂直翻转
使用 hflip (水平翻转) 或 vflip (垂直翻转) 滤镜来镜像画面。
左右镜像(水平翻转)
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vf "hflip" -pix_fmt rgb565 -f fbdev /dev/fb0
上下颠倒(垂直翻转):
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vf "vflip" -pix_fmt rgb565 -f fbdev /dev/fb0
组合滤镜(最常见场景)
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -vf "scale=240:240,transpose=1,transpose=1,hflip" -pix_fmt rgb565 -f fbdev /dev/fb0


支付宝打赏
微信打赏 
