Shift in lines when creating videos using VideoWriter

I'm using VideoReader to read a mp4 video, insert a few shapes and annotations, then use VideoWriter to write a new video file. The script was working fine with matlab 2023a on an intel macbook pro. After I switch to matlab 2023b on a macbook with m3 chip, the script stop working. The video geneerated shows weird shift in lines below:
I did notice if I change the file type for VideoWriter from 'MPEG-4' to 'Uncompressed AVI", it can work. But the file size is gigantic.
Can someone help please? Thank you so much!

Answers (4)

Ensuring that the video frame dimensions (width and height) were multiples of 8 fixed the issue for me.

2 Comments

Mine is 1080x1080, but it still doesn't work. what are your dimensions?
Thanks so much for commenting this, fixed my issues. I just had to make sure that the video dimensions were integer numbers and then my video rendered correctly.

Sign in to comment.

I was also experiencing the same problem in r2023b running on macbook pro apple silicon. I fixed it randomly by adding text to the figure, even if it is just a blank string.
text(0.99*ax.XLim(2),0.99*ax.YLim(1),'','HorizontalAlignment','right','VerticalAlignment','bottom','FontSize',40,'FontName','Arial')
I believe all the options are unnecessary but just citing exactly what I did. Maybe this will help provide a temporary solution.
This is a known problem in R2023b for the Apple Silicon
Possibly it only happens when you only write a single frame to the movie; I am not sure about that.

2 Comments

Thanks for the answer. Any chance you might know when this known problem will be solved?
Sorry, I have no information as to when the problem will be solved.

Sign in to comment.

This issue also happens on my Apple silicon Macbook when the figure size is larger than the screen. It seems like when the figure is too large, it get compressed in size and results in the distortion.
TO FIX IT, chosing an appropriate size within the screen works for me.

1 Comment

or just turn off the resize function of the figure by
set(gcf,"Units","centimeters","Position",[5,5,25,40], 'Resize', 'off')

Sign in to comment.

Asked:

on 13 Mar 2024

Commented:

on 11 Mar 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!