2017-08-17 97 views
0

我需要從另一個應用程序中獲取一個mpeg4文件,從原始mpeg4視頻加載到matlab中並編輯(逐幀)。 要做到這一點,我嘗試使用VideoWriter,將質量設置爲100%:保存在MATLAB中的MPEG4質量

newVid = VideoWriter(outputfilename, 'MPEG-4'); 
newVid.FrameRate = fps; 
newVid.Quality = 100; 

但是,我得到的結果是非常差,如果原始未經編輯的視頻大小爲50MB〜,一個我得到在matlab中編輯後約爲20MB左右,我不知道如何保持質量和尺寸。 我也嘗試保存爲.avi並使用ffmpeg轉換爲mpeg4,但它給出了更差的結果。 任何想法?

+2

您是否知道在您的代碼中,您已將'Quality'屬性設置爲'30'? –

+0

對不起,這是一個較早的版本。它後來被固定爲100 – guyts

回答

0

MPEG-4是一種壓縮格式,因此在以此格式保存時會有信息丟失。質量是壓縮的質量,但不需要任何壓縮。爲了強制Matlab不使用壓縮,我的猜測是使用以下語句作爲默認設置:H.264

 

    newVid.VideoCompressionMethod = 'none' 

+0

文檔說,這個屬性是隻讀的。 – sascha

+0

然後我想,你將不得不使用另一種未壓縮的格式('未壓縮的AVI'),並像你嘗試的那樣在matlab之外進行轉換。看來,ffmpeg可以做無損的H.264通道(https://trac.ffmpeg.org/wiki/Encode/H.264) – MosGeo

+0

我不是一個人問,ffmpeg可以做任何事情;-)(和這部分的matlab似乎設計得很差) – sascha