你好 首先,我正在开发一个程序,用于在廉价的低功耗处理器(例如Intel ATOM Z8350)上确定汽车编号。 在不使用神经网络的情况下,以良好的性能确定静态图片中的俄罗斯数字(高达97%)时,我们获得了相当不错的结果。 剩下的仅是很小的-使用IP摄像机即可工作。图1。
图1英特尔ATOM Z83II计算机和ATIS IP摄像机FFmpeg是一个用于创建视频应用程序甚至通用实用程序的库,该库承担了视频处理的所有艰苦工作,为您完成了所有解码,编码,多路复用和多路分解。
任务 :h.264标准的全高清IP摄像机传输RTSP流。 解压缩后的帧大小为1920x1080像素,频率为每秒25帧。 必须在RAM中接收解码的帧,并将每25帧保存到磁盘。
在此示例中,我们将以编程方式解码帧。 目的是学习如何使用FFmpeg,并进一步比较使用硬件解码获得的结果。 您将看到FFmpeg-这很容易!
安装FFmpeg :许多人建议为其硬件构建FFmpeg。 我建议使用
zeranoe builds ,它可以大大简化任务。
zeranoe组件包含对DXVA2的支持非常重要,
稍后将在硬件解码时为我们提供方便。
我们选择
https://ffmpeg.zeranoe.com/builds/网站并下载2个共享和开发档案,然后再选择32或64位。 开发档案库存储库(.lib)和包含。 共享存档包含必要的.dll,这些文件需要在以后的程序的文件夹中重写。
因此,在C:\驱动器上创建ffmpeg文件夹。 我们将文件从dev存档重写到其中。
将FFmpeg连接到Visual Studio 2017:创建一个新项目。 转到项目属性(“项目”-“属性”)。 接下来,使用C / C ++并选择“包含文件的其他目录”。 设置值:“ C:\ ffmpeg \ dev \ include;”。 之后,转到链接程序附加库目录,并将值设置为“ C:\ ffmpeg \ dev \ lib;”。 仅此而已。 FFmpeg已连接到我们的项目。
FFmpeg的第一个项目:软件视频解码,并将每25帧记录到磁盘上。 在图2的框图中介绍了在FFmpeg中使用视频文件的原理。
图2使用视频文件的框图。因为 我的IP摄像机的IP为192.168.1.168,则程序调用:
decode.exe rtsp://192.168.1.168
另外,此示例可以解码视频文件,足以表明其位置。
因此,在此示例中,我们学会了以编程方式解码视频文件并将接收到的帧保存到磁盘。 帧以.ppm格式保存。 您可以在Windows上使用IrfanView 64或GIMP打开这些文件。
结论: RTSP Full HD H.264流的软件解码最多需要两个Intel ATOM Z8350内核;此外,由于部分帧解码不正确,因此会定期发生数据包丢失。 该方法更适用于解码录制的视频文件,因为不需要实时操作。
在下一篇文章中,我将告诉您如何在硬件中解码RTSP流。与项目一起存档
工作程序FFmpeg资料的链接:
1.
有关使用FFmpeg的
教程,有点过时了。2.
有关FFmpeg的各种有用信息。3.
有关使用FFmpeg提供的各种库的信息。