我发现在 Linux 中可以使用 video4linux2 和 ffmpeg 从 /dev/video0 读取数据并从网络摄像头获取视频。ffmpeg 将数据输出到视频文件,该文件的长度有限。我的问题是:
我可以将视频流传输到远程查看器和本地程序,以便我可以继续实时处理流数据吗?
谢谢。
答案1
答案2
我找到了答案此链接将网络摄像头作为视频的输入(使用库)。您只需要在函数 avformat_open_input() 中定义参数即可。
首先,设备注册导入:
avdevice_register_all();
然后定义输入格式:
AVInputFormat *inputFormat =av_find_input_format("v4l2");
可以设置其他选项:
AVDictionary *options = NULL;
av_dict_set(&options, "framerate", "25", 0);
最后:
avformat_open_input(&pFormatCtx, "/dev/video0", inputFormat, &options);
之后,对于从输入源读取和解码的每一帧,您可以将其传递给显示器或其他自定义函数。
希望这对其他人有帮助。