2017-08-17 90 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