2017-08-10 189 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參數。