我正在用MATLAB编辑现有MP4视频的所有帧(在for循环中做)。
完成编辑后,我想将新的帧集保存到一个新的输出视频文件中,但使用mp4而不是.avi(这似乎是默认设置)。
我认为更改文件扩展名就足够了,但显然不是。
有什么想法吗?

newVid = VideoWriter(outputfilename);
newVid.FrameRate = fps;
newVid.Quality = 100;
open(newVid)
for...
writeVideo(newVid,imgs{i})%within the for loop saving one frame at a time
end
close(newVid)

最佳答案

仅重命名文件是不够的您还需要指定所需的编解码器在您的例子中,您需要在VideoWriter构造函数中包含一个附加参数,该构造函数由您要用作MATLAB的编解码器组成
弦对于您的情况,请指定'MPEG-4'

newVid = VideoWriter(outputfilename, 'MPEG-4'); % New
newVid.FrameRate = fps;
newVid.Quality = 100;
open(newVid);
for ...
% Rest of your code here

顺便说一句,看看将来的文档它清楚地显示了如果要保存为新格式,而不是AVI:https://www.mathworks.com/help/matlab/ref/videowriter.html#input_argument_d0e1094625

09-17 23:11