1
votes

We have a number of powerpoint presentations that have been converted to 16:9 aspect ratio and then converted into mp4 "master videos" with an "apple TV" 720p profile. These powerpoint presentations are voice annotated. So in essence, we show a slide and then let the annotation sound play for a while, then go to the next slide, and so on. The resulting mp4 master video is somewhere around 900MB on average.

Here is an example of the master video

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.104.0
  Duration: 02:00:57.65, start: 0.000000, bitrate: 970 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 836 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : SoundHandler

We are trying to get these presentations to play on the web on as many devices/browsers as possible including some that don't do HTML5 (IE7/IE8). We have narrowed down our player of choice which is mediaElement and have extracted some "cue points" from the powerpoint presentation that mark where the slides are changing. We have also captured thumbnails for those cuepoints such that we now have a nice list of thumbnails for each slide and an associated cuepoint in the video where the particular slide begins.

Here comes the problem...due to the large size of the master video it is not practical for us to use the master video with our mediaElement player. We do need to transcode the master video to mp4 and ogv in order to get decent device/browser coverage.

We do not seem to be able to find a suitable transcoding strategy to reduce the size of the video. We have played with numerous ffmpeg settings and were able to reduce the size but when we do so we compromise the ability to jump to specific cue points.

It works well for browsers that do HTML5 video natively (Chrome and Firefox) but not for the flash fallback of mediaElement (IE7/IE8) which uses the mp4 file and seemingly is very tied to the number and frequency of key frames in the video in order to allow for clean seeking and skipping using the cue points.

Seeing that we are talking about a video that has only slides (practically ~90 static images per presentation) and some sound we imagine it must be possible to transcode as such that the keyframes fall at the cue points or near the cuepoints, and that the size of the video could be drastically reduced while still allowing for smooth seeking and skipping.

1

1 Answers

0
votes

Seeing that we are talking about a video that has only slides (practically ~90 static images per presentation)

If your "video" is basically a slideshow, yes, you can drastically reduce the filesize by reducing the frame rate

# each image will have a duration of 5 seconds
ffmpeg -f image2 -r 1/5 -i img%03d.png -i audio.m4a -c:v libx264 -r 30 master.mp4