我正在创建一个以多种不同方式操作视频的C ++程序。操作是通过C ++中的system()
创建的,其中包含已安装的MP4Box
和FFMPEG
视频编辑库。我的一个程序是没有给我正确的结果,我需要帮助。
我有.mp4
格式的1080p质量视频,不包括音频。视频为1分钟或60秒长。我希望将此视频拆分为5秒部分。所以作为回报,我将有12个视频文件,持续时间为5秒。
到目前为止,我使用的是这个系统(我的代码):
#include <iostream>
#include <windows.h>
#include <list>
#include <string>
using namespace std;
int main()
{
int media_duration = 60;
for (int time = 0; time <= media_duration; time += 5)
{
system(("cd C:\\Users\\amans\\Documents\\video && ffmpeg -i 1080p.mp4 -ss " + to_string(time) + " -to " + to_string(time + 5) + " -c copy " + to_string((time + 5) / 5) + ".mp4").c_str());
}
cin.get();
return 0;
}
在上面的代码中,我创建了一个循环,它将1080p文件分成12个不同的文件,但它们不在5秒的持续时间内。某些文件的持续时间为1秒,而其他文件的持续时间为3或4秒。我使用FFMPEG
分割视频。
有人可以给我另一种方法或帮我修复当前的方法吗?请在下面评论。感谢