Reputation: 819
I have an MP4 video that is variable bitrate, so the average bitrate doesn't necessarily stay consistent throughout the entire file. Because my video is a capture of a computer screen, some parts of the video are very low bitrate because nothing is happening, and other parts are a much higher bitrate because there's a lot of activity on the screen.
How does Chrome decide how much video to buffer for progressive download HTTP(S) videos? I'm running into a problem where Chrome tends to buffer too little, so playback stutters.
If there's no way of convincing Chrome to download a certain time of video (and I don't want to just preload the entire thing), can I author the MP4 some special way to solve the problem? I'm using FFmpeg and MP4Box. Maybe it's up to the HTTP server?
Upvotes: 3
Views: 1013
Reputation: 3050
If you want more control over the playback of the video, you should definitely check out MediaSourceExtensions
. They define a whole model for video playback, defining sourceBuffers
where you can put video data, etc.
Beware it is not a simple to use API still, and the information on how to use it is very fragmented.
In your case, if you go the MSE
route, you can either keep using h264
(which is probably the codec your mp4
is wrapping) or switch to webm
.
In case of going the MP4, h264
route, you'll need to generate a fragmented MP4 (fMP4
) and write some JavaScript
to control the way you work with the MP4 fragments (segments
in MSE parlance).
MP4Box has support for the -dash
protocol, which will segment an MP4 in a way that is suitable for consumption via MSE
. FFmpeg also has support for generating fragmented MP4.
Upvotes: 3