管道网络摄像头视频流数据进行处理

管道网络摄像头视频流数据进行处理

我发现在 Linux 中可以使用 video4linux2 和 ffmpeg 从 /dev/video0 读取数据并从网络摄像头获取视频。ffmpeg 将数据输出到视频文件,该文件的长度有限。我的问题是:

我可以将视频流传输到远程查看器和本地程序,以便我可以继续实时处理流数据吗?

谢谢。

答案1

这是可能的三通复用器. 修改后的文档示例:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a \
"archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"

请注意,流需要明确映射,这就是为什么-map是必须的。

另请参阅:

答案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);

之后,对于从输入源读取和解码的每一帧,您可以将其传递给显示器或其他自定义函数。

希望这对其他人有帮助。

相关内容