有很多关于opencv + H.264的问题,但没有一个给出详细的解释。
我在visual studio中使用openh264(openh264-1.4.0-win32msvc.dll)和opencv 3.1(使用启用ffmpeg的cmake自定义构建),我想用H.264压缩将来自网络摄像头的视频保存为mp4格式
VideoWriter write = VideoWriter("D:/movie.mp4", CV_FOURCC('H', '2', '6', '4'), 10.0, cv::Size(192, 144), true);
在使用 openh264 之前,在控制台窗口中我看到一条警告消息“无法加载 openh264 库:openh264-1.4.0-win32msvc.dll 请检查您的环境和/或从此处下载: https ://github.com/cisco/ openh264/releases ”(也没有保存视频)
所以我下载了dll并保存在我的程序文件(exe)的文件夹中,当我运行程序时,我看到不同的错误“[OpenH264] this = 0x0DE312C0,警告:bEnabledFrameSkip = 0,比特率无法控制对于 RC_QUALITY_MODE 和 RC_TIMESTAMP_MODE 不启用跳帧”(现在视频已保存,但大小非常高!比特率约为 1200 Kbps)
对我来说,使用 h264 的唯一目的是减小文件大小。我想我可能必须自己构建 openh264 并进行一些更改才能消除此错误,有人可以指导我如何操作吗?或者告诉我是否有办法通过代码以某种方式降低比特率?
PS:我尝试给出 -1 而不是 CV_FOURCC(),系统中的“已安装编解码器”窗口出现了,即使我从这里安装了各种编解码器包和 h264,我也找不到 h264 或 x264 或 h264vfw
感谢和问候