If you take an mp4 (mpeg-4) video and put it in a video editing program like Corel VideoStudio and then render the same video without any other assets (images, audio, other videos, etc), then you may find that the resulting video becomes out-of-sync with the audio. To fix this, you can use Avidemux as follows.
Open the mp4 file in Avidemux
In the Audio Output section, check the Shift checkbox and enter a value in the time field. Note that 1 second = 1000 ms. For me, I found that 500 ms works.
Hit the play button and update the time shift value until the audio and the video are in sync.
In the Output Format section, choose Mkv Muxer. This will produce an mkv file. If you choose mp4 muxer, then the output audio will be out of sync with the video again. You can upload mkv files to YouTube.