2017-08-10 185 views
2

我正在编辑MATLAB中现有mp4视频的所有帧(在for循环中执行此操作)。 编辑完成后,我想将新的一组帧保存到一个新的输出视频文件,但在mp4而不是.avi(这似乎是默认值)。 我认为改变文件扩展名就够了,但显然不是。 任何想法?在MATLAB中保存为.mp4文件

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) 

回答

3

重命名文件是不够的。您还需要指定所需的编解码器。在你的情况下,你需要在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

+1

谢谢!我真的在看文档,但不清楚mpeg4到底在哪里。 – guyts

+0

@guyts没问题!我承认这有点令人困惑。我只是从经验中知道,你在上面做的是你需要做的:)。 – rayryeng

2

你需要传递一个profile参数给matlab的videowriter。

来自Matlab Help,VideoWriter(filename,profile)创建一个VideoWriter对象并应用一组适合特定文件格式(如'MPEG-4'或'未压缩的AVI')的属性。

在你的情况下,你需要将字符串MPEG-4传递给profile参数。