diff --git a/record-and-playback/core/lib/recordandplayback/edl/video.rb b/record-and-playback/core/lib/recordandplayback/edl/video.rb
index 8faa73814638225dce8f5d014e35557c0b3b8d8f..35a0fc152dc61c92070279a7c66df8a3333f6f5b 100644
--- a/record-and-playback/core/lib/recordandplayback/edl/video.rb
+++ b/record-and-playback/core/lib/recordandplayback/edl/video.rb
@@ -403,8 +403,8 @@ module BigBlueButton
             else
               # Webcam videos are variable, low fps; it might be that there's
               # no frame until some time after the seek point. Start decoding
-              # 30s before the desired point to avoid this issue.
-              seek = video[:timestamp] - 30000
+              # 10s before the desired point to avoid this issue.
+              seek = video[:timestamp] - 10000
               seek = 0 if seek < 0
             end
 
@@ -443,10 +443,18 @@ module BigBlueButton
             ffmpeg_filter << ",fps=#{FFMPEG_WF_FRAMERATE}:start_time=#{ms_to_s(video[:timestamp])}"
             # Reset the timestamps to start at 0 so that everything is synced
             # for the video tiling, and scale to the desired size.
-            ffmpeg_filter << ",setpts=PTS-STARTPTS,scale=#{scale_width}:#{scale_height}"
+            ffmpeg_filter << ",setpts=PTS-STARTPTS,scale=#{scale_width}:#{scale_height},setsar=1"
             # And finally, pad the video to the desired aspect ratio
             ffmpeg_filter << ",pad=w=#{tile_width}:h=#{tile_height}:x=#{offset_x}:y=#{offset_y}:color=white"
-            ffmpeg_filter << "[#{pad_name}];"
+            ffmpeg_filter << "[#{pad_name}_movie];"
+
+            # In case the video was shorter than expected, we might have to pad
+            # it to length. do that by concatenating a video generated by the
+            # color filter. (It would be nice to repeat the last frame instead,
+            # but there's no easy way to do that.)
+            ffmpeg_filter << "color=c=white:s=#{tile_width}x#{tile_height}:r=#{FFMPEG_WF_FRAMERATE}"
+            ffmpeg_filter << "[#{pad_name}_pad];"
+            ffmpeg_filter << "[#{pad_name}_movie][#{pad_name}_pad]concat=n=2:v=1:a=0[#{pad_name}];"
 
             tile_x += 1
             if tile_x >= tiles_h