OpenCV:H.264编码视频的文件大小
OpenCV: File Size of H.264 encoded videos
我编写了一个程序,使用 OpenCV 从图像序列中创建视频文件。它运行良好并做了应有的事情,但我意识到了一些我无法解释的事情。我的视频作者看起来像这样:
VideoWriter video(name + ".avi", CV_FOURCC(FOURCC[0], FOURCC[1], FOURCC[2], FOURCC[3]), fps, cvSize((int)width, (int)height));
for (;;)
{
capture >> frame;
if (frame.empty())
break;
if (!frame.data)
{
cerr << "Could not retrieve frame.";
return -1;
}
video << frame;
}
对于压缩,我使用"MJPG","M4S2"(一些MPEG-4编解码器)或"X264"(H.264编解码器)。我通过用户输入获取"fps"值。一切正常,但我发现 X264 编码视频的输出文件与 fps 成比例,fps 越高,输出文件越小。对于其他 2 个,大小保持不变,只是视频的长度发生了变化(正如我所期望的那样,因为它应该具有相同的帧数,只是在另一个时间内)。谁能解释为什么在这里使用 X264 更改文件大小?
虽然有点晚了,但我想通了...似乎这只是OpenCV的一个错误。当我使用 OpenCV 方法使用 h.264 编码器时,视频文件已损坏。当我使用 FFmpeg 时,一切正常。
相关文章:
- 读取某些文件时出现分段错误,似乎与文件大小无关
- 构建挂起,即使是适度的文件大小
- 如何在Windows内核中获取文件大小
- 如何在 c++ 中通过 http 发送大型视频文件?
- 为什么 QFileSystemWatcher 会发出多个信号?而 QFileInfo 首次写入零文件大小
- 使用 C++ iOS::ate 获取错误的文件大小
- 相同的源代码,不同的可执行文件大小?
- 为什么未关闭的文件大小为 4 字节
- 媒体基础将音频流添加到视频文件
- 帧提取 使用OpenCV的视频文件开头只有几秒钟
- 使用 OpenCV C++ 每 1 分钟创建新的视频文件
- 读取二进制文件大小的短自上周以来停止工作
- 如何减小C++标准库libstdc++.so文件大小
- 文件大小和缓冲区过冲
- 如何检查给定文件是否是C++中的有效视频文件?
- 如何从范围 v3 的istream_range中检索文件大小?
- 如何使用直接IO编写一个带有扩展文件大小的小文件
- 如何使用文件系统库获取"true"文件大小?(C++17)
- 如何限制文件大小,以便我的程序在变大之后创建一个新文件?并编辑新创建的文件的名称
- OpenCV:H.264编码视频的文件大小