Commit Graph

1041 Commits

Author SHA1 Message Date
Calvin Walton
3d78745dd4 RaP: Don't error on pencil drawings with 0 dataPoints
In some cases, we get DRAW_END events for pencil shapes from the
html5 client that have no dataPoints. The only thing we can really
do here is detect the issue and ignore the shape.

In some cases, this may result in the shape's intermediate drawing
updates being shown, but it'll disappear when the end event happens.
2018-06-22 15:33:30 -04:00
Calvin Walton
7da493e23f RaP: Convert aspect ratio numbers to int before checking value
The checks for 0 numerator or denominator were failing due to
type mismatch
2018-06-22 10:06:34 -04:00
Calvin Walton
67758e1cc9 RaP: Store rendered audio temp file in target directory, not archive_dir
The archive_dir can by the raw recording directory in some recording
formats - including, hopefully, presentation at some point (to avoid the
extra copy)
2018-06-20 16:29:49 -04:00
Calvin Walton
c97f0cb33a RaP: Calculate video area sizes using aspect ratio
The previous calculation used the video size in pixels, which might lead
to stretched/squashed videos in rare cases where the video has non-square
pixels. The new calculation is correct for all video sizes.
2018-06-13 11:18:54 -04:00
Calvin Walton
9c3faf2830 RaP: Fix video start_time checking
The video_info function returns the start time already in milliseconds,
so compare against 1ms instead of 1/1000.
2018-06-13 11:18:54 -04:00
Calvin Walton
6388e55209 RaP: Support ffmpeg 4.0 in video processing scripts
The ffprobe command in ffmpeg 4.0 now omits the aspect ratio fields in the
json output when indeterminate, instead of returning an invalid value with
0 in the numerator or denominator. Handle this correctly.
2018-06-13 11:18:54 -04:00
Calvin Walton
4554e3eac7 RaP: Workaround broken seeking in flv after red5 update.
Since the update to the newer red5, seeking in flv files (webcams in
particular are noticable) has been broken, resulting in cameras
appearing to "hang" any time there is a cut in the generated video -
which happens when start/stop button is pushed, or when cameras are
added or removed.

We can detect the problematic video files because the timestamp of the
first frame is large (old red5 versions always set first frame
timestamp to 0.001 seconds). If we see a file like this, having ffmpeg
remux the file - rewriting the timestamps and index - works around the
problem.
2018-05-30 11:41:45 -04:00
Calvin Walton
7d643f9bf8 RaP sanity: Don't delete .ser file unless repair succeeded 2018-05-23 12:03:20 -04:00
Calvin Walton
9cdafbdfe7 RaP: Merge the sanity script from master branch
Due to improvements in the recording scripts, most of the stuff the sanity
script was checking for is no longer needed (missing/corrupt video files
are handled by the processing scripts). The version of this script in
master has been cleaned up so that the only things it does are:

- Check that the events.xml exists and is properly formatted xml
- Rebuild flv files from red5 .flv.ser/.flv.info files

The script from master is compatible with the 2.0 code, so just use it
as-is.

This fixes a problem where following the recent red5 upgrade in 2.0 branch,
an flv file is never written for webcam streams where no frames were
received, despite there being recording events.
2018-05-23 11:18:04 -04:00
Calvin Walton
36a6b0f5ac RaP: Scale to a square when generating slide images for pres. format
This improves the quality of portrait documents, before they were
1200px when landscape documents got 1600px.

Switching to scaling to a square means that we can use the "-scale-to"
option on pdftocaio, which means that it generates images directly
at the desired size. This can save quite a bit of time (and memory)
if a document was uploaded with extremely large page size.
2018-05-16 11:54:35 -04:00
Calvin Walton
18d472e3a3 RaP: Improve check for record events in archive, sanity scripts
There's some cases where you can get 0-duration recordings due to
recording event placement (e.g. a single recording event is the last
event in the events.xml). Detect these cases, and treat them like
no recording marks in the archive script (it will stop the recording
from being automatically processed).

I've also adjusted the sanity script to detect these cases and error
out. The recording processing scripts cannot handle 0-length recordings,
you have to manually edit the events. I've added a message to the
sanity log about this.
2018-05-16 11:32:29 -04:00
Calvin Walton
32ff8b9f24 RnP: Fix bitrate in screenshare.yml
I forgot to include the 'K' multiplier on the bitrate values, so they
were all 1000 times too low.
2018-05-11 11:58:54 -04:00
Fred Dixon
76296b95df
Merge pull request #5429 from kepstin/screenshare-video-rec
New "screenshare" recording format
2018-04-27 16:41:51 -04:00
Calvin Walton
eb04276897 Minor fixups from testing 2018-04-27 15:25:36 -04:00
Calvin Walton
ca198ee9ce
Merge pull request #5385 from lfzawacki/html5-video-recording
HTML5 recording of cameras and screenshare
2018-04-26 19:11:36 -04:00
Calvin Walton
21bd4b2673 Screenshare-focused video recording format. 2018-04-26 17:00:30 -04:00
Fred Dixon
c3c9aacf9e
Merge pull request #5417 from kepstin/podcast
Podcast recording format
2018-04-26 16:01:45 -04:00
Calvin Walton
60b828bea1 Fix some syntax issues 2018-04-26 15:24:16 -04:00
Calvin Walton
56baecdf9c Podcast recording format
Generates a single .ogg file containing the meeting audio
2018-04-26 15:06:52 -04:00
Felipe Cecagno
77d620a721 Fix recording events when there's screenshare AND webcams together 2018-04-26 01:24:41 +00:00
Lucas Fialho Zawacki
80562ac25c Merge branch 'webrtc-webcams' of https://github.com/kepstin/bigbluebutton into html5-video-recording 2018-04-25 20:02:45 +00:00
Calvin Walton
bfcaa5aaa3 Check for new webrtc deskshare event in presentation slide code 2018-04-25 16:00:13 -04:00
Calvin Walton
954ee4fc18 Events code doesn't know where archive dir is 2018-04-25 15:08:35 -04:00
Calvin Walton
9ada59d1c4 Fix more variable references in screenshare events 2018-04-25 15:04:01 -04:00
Lucas Fialho Zawacki
419adcf926 Merge branch 'webrtc-webcams' of https://github.com/kepstin/bigbluebutton into html5-video-recording 2018-04-25 18:30:43 +00:00
Calvin Walton
cd3e28a08c Fix some errors in screenshare archive/sanity 2018-04-25 14:28:37 -04:00
Lucas Fialho Zawacki
c0b3003918 Merge branch 'webrtc-webcams' of https://github.com/kepstin/bigbluebutton into html5-video-recording 2018-04-25 16:02:30 +00:00
Calvin Walton
ca0156d423 Support WebRTC screenshare in get events functions 2018-04-25 11:55:02 -04:00
Calvin Walton
39e981a7f2 Include webrtc screenshare streams in edl for video rendering 2018-04-25 11:44:23 -04:00
Calvin Walton
9f528e37fe Archive kurento screenshare streams 2018-04-25 11:35:36 -04:00
Fred Dixon
7f0d8db451
Merge pull request #5392 from kepstin/recording-webcam-fix
Fix handling webcam videos that end early in recording processing
2018-04-24 17:01:47 -04:00
Calvin Walton
8e0a79014f Fix handling webcam videos that end early in recording processing
In some cases (due to network issues), the webcam video can be shorter
than the time between the start/stop events. Pad the input video with a
blank video to make sure that there's input to the video tiling filters,
to fix a problem where the video won't render correctly with ffmpeg v3.4
and later.
2018-04-24 16:58:14 -04:00
Calvin Walton
ce84c5517b Include webrtc webcams in recording processing 2018-04-24 15:20:35 -04:00
Calvin Walton
c45fa74da0 Archive the webcam files from kurento webcam sharing 2018-04-24 15:18:02 -04:00
Calvin Walton
e30d5e3940 Rework audio processing to avoid seeking past end of file
In some cases when there is a slight mismatch between audio file
duration and event timestamp difference, and we have a record
status or chapter break event in a certain location, it could
trigger a seek past the end of an audio file. Detect this
condition and just render silence instead.

Also adjust the thresholds for the audio length scaling - they
were being triggered on short recordings that should be correct.
2018-02-12 16:33:37 -05:00
Calvin Walton
0701bf87a8 Workaround video sync issue due to red5 timestamp offset
Red5 sometimes writes webcam video files with a large offset in the
video frame offsets, sometimes up to 30 or even 60 seconds. However,
the start event in the events.xml file corresponds to the time at
which red5 received the first keyframe (recorded frame) in the video.

The end result is that the video will sometimes appear to be
delayed (out of sync) in the processed recording.

The correction is simple: We're already reading video metadata,
including the timestamp of the first frame, so we just have to apply
a correction during video processing to undo the frame timestamp
offsets in the video file.
2018-02-12 11:54:18 -05:00
Calvin Walton
7362eb1eaf Update gems for security fixes, remove some unused. 2017-11-17 14:36:24 -05:00
Calvin Walton
b2f8c80202 Handle out of order inserts at the start of a caption stream.
If you're inserting at position 0 (and there was no previous deleted text
from that position), you can't use the timestamp from the previous character
position, since there's no previous character. Use the timestamp of the
following character instead.
2017-10-12 14:16:34 -04:00
Calvin Walton
e37db34eb4 Correctly handle a recording start being the last event in a recording.
In some unusual cases, the recording start can be the last event in the
events file, or at least have the same timestamp as such.

Add some code to check the array bounds and break if needed, so we
don't check the timestamp on the (non-existant) event after the last
event.
2017-10-02 12:31:31 -04:00
Calvin Walton
3307fab99c Don't crash playback if text is not available for a slide.
This happens when the slide is a plain image, for example.
Fixes #4425
2017-09-28 14:34:19 -04:00
Calvin Walton
3f1fb1dc31 Handle recordings that have an unmatched DeskshareStartedEvent
The previous code looked for stop events and tried to find their
associated start event. This obviously doesn't work if there was
no stop event. But if there was a start event, we need to show the
deskshare… so rework to code to try to find the matching stop to each
start instead, and use the end of the meeting if no matching stop was
found.
2017-09-13 17:17:17 -04:00
Calvin Walton
399b1cb543 RnP: Don't fail processing if an image can't be converted to png 2017-09-05 11:21:16 -04:00
Calvin Walton
b810939643 RnP: Fix parsing poll fields as numbers rather than text 2017-08-30 14:51:52 -04:00
Calvin Walton
e81d77a318 RnP: Fix shape type name for poll shapes 2017-08-30 14:42:29 -04:00
Calvin Walton
2d19cd7b7b Make the fallback slide images transparent, so the logo is visible 2017-08-25 16:05:46 -04:00
Calvin Walton
195b499e06 RnP: Fix square/circle rendering
Different parts of the code were using symbol vs string keys, so
the circle/square code never got applied. Use symbols everywhere for
consistency.
2017-08-25 15:46:03 -04:00
Calvin Walton
a3a530553a RnP: Force re-encoding text from textfiles into UTF-8
Some old recordings might have invalid or legacy encoding stuff
in the text files. To allow processing to continue, just re-encode int
UTF-8 with the invalid option set to replace, to remove the invalid
characters.
2017-08-25 14:02:09 -04:00
Calvin Walton
dba121e6f4 Merge pull request #3998 from kepstin/caption-fixes
Update caption track generation based on feedback
2017-08-25 12:04:59 -04:00
Calvin Walton
0d91b9444e RnP: Some shapes in BBB 2.0 now have sharp corners 2017-08-25 11:39:00 -04:00
Calvin Walton
243afcd90c RnP: Make 'presentation_props' a global var so it can be accessed in functions 2017-08-23 12:22:46 -04:00