[ 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)