我试图找到一个在 C 或 C++ 中使用 V4L2 的清晰小示例,了解如何直接从磁盘上的 h264 视频文件读取。
或者,我如何将解析的全帧 h264 块/数据包传递到开放的 V4L2 解码设备。
有谁知道这是否可以完成或者是否有任何工作示例?
(顺便说一句,我知道 gstreamer、ffmpeg/avcodec,但我正在尝试为 v4l2 解决这个问题)
干杯!
答案1
我认为您正在寻找的是 v4l2loopback 设备,它基本上为您提供了一个虚拟/dev/videoX
设备,该设备显示为您可能正在使用的工具的相机。
要使用它,您需要安装v4l2loopback-dkms
发行版的软件包,并使用以下命令加载模块modprobe v4l2loopback
要将视频流式传输到该虚拟摄像机,请运行:
ffmpeg -re -i input.mp4 -map 0:v -f v4l2 /dev/video0
,其中input.mp4
是您的输入视频文件,并且/dev/video0
对应于 v4l2loopback 创建的虚拟设备(使用 检查哪一个是正确的v4l2-ctl --list-devices
)。