We added seek functionality in playback mode for the (desktop) recording client delivered by embed code 2.0. This improves the playback experience by allowing the movement to a specific point in a recording by dragging across the progress bar or clicking the progress bar.
The seek functionality works on both desktop and mobile devices (when using the desktop recorder inline on iOS or Android). On mobile, it works by dragging or clicking across the entire lower half of the recorder.
On older Android devices, if our inline desktop recorder was configured to record at a high resolution (720p or higher), you’d get an “Unexpected error occurred” error in recent versions of Chrome when clicking the red record button.
This issue is now fixed.
On such devices, we’re now falling back to VP8 video encoding instead of the more resource-intensive H.264.
Previously, with the 2.0 HTML code, the recording client was inserted using a newly created <div> element with an id attribute matching the id of the <piperecorder> tag.
This was problematic because:
you ended up with 2 HTML elements with the same id on the page
any width/height properties on the initial <piperecorder> tag would take up space separate from the space occupied by the actual recording client. This made any effort to avoid layout shift impossible.
We are now inserting the recording client HTML code directly inside the <piperecorder> tag.
This is how the HTML structure looked previously after insertion:
The push to S3 integration has been updated to support a None ACL option. The new option is visible in the dashboard S3 storage section under Canned ACL.
New Amazon S3 buckets and Google Cloud Storage buckets now have ACLs disabled by default. For such buckets GCS needed the None option. Without it would throw the following error:
Cannot insert legacy ACL for an object when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access
le: None is now the value selected by default in the drop down.
Our desktop video recording client finally got a playback progress bar. The visual indication of the playback position should be useful especially for longer recordings. Until now, the only indication was the current/total time display. The playback bar is not interactive for now.
We added a new attribute called “capture” to the embed code 2.0.
The “capture” attribute provides control over which camera should be used by the user agent on startup of the recording client. This “capture” attribute is specific to the native mobile recording client.
For more information on how to work directly with the embed code and utilize the new “capture” attribute, please refer to the documentation. There are detailed instructions provided on implementing the new attribute in your native mobile recording client.
Chrome 114 introduced a change that explicitly limits how mime types need to be specified, which affected audio only recordings made by the Pipe recorder.
We’ve deployed a new build of pipe.js which addresses this change.
The 2.0 embed code and desktop recording client now support all CSS units for width, including relative units.
Embed code improvement: You can now specify the width of the desktop recorder using any CSS unit such as px, %, vm, etc. .
Desktop recording client improvement: support for absolute and relative units for width in the desktop recorder delivered by the 2.0 embed code. As a result, the 2.0 recording client is now responsive.
Improved positioning of elements: In the recorder window, all elements now have their independent style. This improvement ensures that these elements remain perfectly where they should be even when dealing with relative width values and across different screen sizes. Regardless of the width settings or the device used, the positioning of elements within the recorder window is consistent and visually pleasing.
The recently rolled-out unified subscription page will now show better information for cancelled subscriptions that have not yet expired including when you will be able to subscribe again.
We’ve caught the bug quickly and implemented a workaround in our code in pipe.js (embed code v1.0 and v2.0) to circumvent the issue until Chrome fixes it.
If you are using a self-hosted version of pipe.jswe strongly recommend that you update it, or better still, use the one delivered by Pipe to ensure you have access to the latest features and fixes soon as they are released.
We’ve just rolled out a new feature in the Beta phase that allows you to whitelist the hosts where the Pipe embed code can be added.
This is useful to prevent abuse from malicious users that could embed your generated Pipe embed code on other websites.
The whitelist can be set up at the environment level so that you can have specific whitelists for each of your environments that could be related to different websites.
Access the new Whitelisted hosts section by editing any of your environments and add the hosts you want to whitelist.
The list will be empty by default, meaning any host will be allowed.
For more information about this new feature, you can read the documentation.
Aligned the docs and simulator examples with the actual webhook data fired in production (added missing elements, removed excess elements, aligned data types, corrected lowercase/uppercase values)
Used real data instead of some placeholders for the webhook simulator & docs (md5 & sha-1 values, region, bucket name, etc.)
Clarified the moment when the video_recorded webhook is sent
Clarified that the video_converted webhook is not sent if the mp4 output is disabled in the Transcoding Engine
Clarified all the possible values for the type parameter that’s present in many webhooks
Removed cutToLength parameter from the video_converted webhook examples and parameters explanations (it does not exist in the actual webhook body)
The storedStatus parameter, part of video_copied_pipe_s3 webhook, is now covered in the docs
application/json is now the principal webhook type in the docs
We fixed a bug in the Pipe Account Dashboard’s Transcoding page that resulted in an error (500 HTTP status code) when an account with a Standard subscription made any changes to the settings available on the Transcoding page.
There are currently 2 settings available on the Transcoding page available to accounts with Standard subscriptions:
enable “Cut to length” (it is disabled by default)
disable “.jpg snapshot output” (it is enabled by default).
We fixed a bug that caused the webhook signature to be generated incorrectly by Pipe in cases where the custom payload parameter value contained a + character.
Our FTP implementation has been updated with support for Explicit FTP over SSL/TLS. The recording files can now be securely pushed to your storage through FTPS.
The object URLs for files pushed to your S3 storage will be available regardless of the canned ACL used in the upload process. These URLs are visible in the account dashboard’s s3_logs page and are sent with the videocopieds3 webhook.
We have aligned the FTP behavior between the FTP test and the actual FTP push attempts with various FTP folder values (empty string, /, or any other folder value).
As a result, we have stopped pushing the addpipe-ftp-test.test file with every group of recording files. The file was pushed in an attempt to test if the passive connection mode succeeded.
You can now test your SFTP connection and credentials from the Pipe Account Dashboard.
Now you will be able to test if the connection goes through, if the credentials are correct, if the folder provided exists and if the user has write permission.
The test will also print the timeout value and the working folder and warns you if the user has shell access.
The test will upload a file named addpipe-sftp-test.test.
For the SFTP test to succeed, the port 22 needs to be opened for our account dashboard IP (116.203.232.162).
We finally separated FTP and SFTP storage options. You will see the separation in the Pipe Account Dashboard (credentials and logs) and the documentation.
FTP (File Transfer Protocol) and SFTP (SSH File Transfer Protocol) are 2 diferent protocols.
Moving forward, we expect to deprecate FTP because it is inherently insecure. We plan to add support for FTPS (FTP over TLS). This separation will clear the way for that effort.
The embed code generated in the account dashboard now enforces HTTPS for the two main assets: pipe.js and pipe.css. Previously it inherited the protocol used to deliver the page in which the code was embedded.
Separately, the Pipe recording client also enforces HTTPS for POST communication and asset loading. Previously it inherited the protocol used to deliver the page in which the code was embedded. This is important for kiosk-like applications where the pages are usually delivered over HTTP/localhost.