I'm trying to encode an animation as a video, using MATLAB 2017b. The frames of my animation are in struct F, which is produced earlier with getframe inside a loop.
The documentation for VideoWriter says, under the quality property,
Video quality, specified as an integer in the range, [0,100]. Higher quality numbers result in higher video quality and larger file sizes. Lower quality numbers result in lower video quality and smaller file sizes.
Quality is available only for objects associated with the MPEG-4 or Motion JPEG AVI profile. After you call open, you cannot change the Quality value.
Fair enough. This is what I'm trying:
V = VideoWriter(myfilename, 'MPEG-4');
V.FrameRate = 5;
V.Quality = 85;
However, regardless of what value I set V.Quality to, it produces exactly the same (heavily compressed) video with exactly the same filesize. This setting seems to be ignored.
Is this a bug? If not, then what am I doing wrong? Either way, how can I produce a higher-quality compressed video? (ideally using mp4/H.264, not M-JPEG etc, as I want it to be widely playable)