[ 
https://issues.apache.org/jira/browse/GUACAMOLE-250?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15963669#comment-15963669
 ] 

Michael Jumper commented on GUACAMOLE-250:
------------------------------------------

Looking into the need for seeking (automatic generation of keyframes based on 
recordings), we can't just take raw snapshots of client state, since that's 
uncompressed and would be enormous (100 keyframes could easily approach 1 GB 
for large screens), *but* compressing state would work (ie: save layers and 
buffers as PNG data). I've verified with a basic POC that encoding PNGs for 
visible layers at regular intervals while playing back a recording as fast as 
possible does not add too much overhead.

Overall approach:

# Add support to {{Guacamole.Client}} for (1) exporting its current state as an 
object and (2) importing its state from an object. This object will form the 
foundation of Guacamole's auto-generated keyframes, and will need to persist 
the contents of its layers in a compressed form (PNG).
# Implement a new object, {{Guacamole.Player}}, which downloads static files 
using normal {{XMLHttpRequest}}, feeding its own internal {{Guacamole.Client}} 
using an internal implementation of {{Guacamole.Tunnel}}. This particular 
client instance runs solely for the purpose of generating keyframes and decodes 
the stream as quickly as possible. Simultaneously, another {{Guacamole.Client}} 
(also contained within {{Guacamole.Player}}) will be used for playback, and 
will be fed data in realtime (delayed as necessary to match time with the sync 
instructions in the stream) through yet another internal {{Guacamole.Tunnel}}. 
When seeking needs to occur, the nearest keyframe to the desired point in time 
will be used to reinitialize the playback client, and instructions after the 
keyframe and up to the desired point in time will be fed to the playback 
client, followed by normal time playback of the remaining instructions.

> Implement support for in-browser playback of screen recordings
> --------------------------------------------------------------
>
>                 Key: GUACAMOLE-250
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-250
>             Project: Guacamole
>          Issue Type: New Feature
>            Reporter: yalinliu
>            Assignee: Michael Jumper
>            Priority: Minor
>
> Screen recordings of Guacamole sessions are simply dumps of the Guacamole 
> protocol data from one side of the connection. Currently, these recordings 
> are played back after being converted to video using {{guacenc}}, but they 
> could just as easily be played back directly by Guacamole itself. Direct 
> playback would remove the need to translate recordings to video (an expensive 
> operation) and would allow playback within any browser which Guacamole 
> already supports.
> Since the {{Guacamole.Client}} object accepts any implementation of the 
> {{Guacamole.Tunnel}} interface, implementing some sort of "playback tunnel" 
> which would parse Guacamole protocol from a static file (rather than connect 
> through a Guacamole server tunnel) might be easy.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to