We watch videos every day, whether at home or in our workplace. These days, we are even sharing more videos at work, such as online meeting recordings, training videos, and courses, as more teams switch to remote work options.
There are different ways for sharing videos online. Within your workplace though, it might not be suitable to put work-related videos on Youtube, and using 3rd party apps would still present an issue on how you can embed such videos in your company's Confluence instance.
So, the easiest solution would be to create a page on Confluence and attach the video and call it a day, right?
But what if there's an easy solution embedded in your workplace Confluence instance that lets you upload a video easily, invite others to watch it, and get detailed engagement analytics up to every second from the people who watched your videos. And it's all inside Confluence.
And what if you are a content creator and you want to create videos that have high value, but you are worried that someone can easily download them and share them externally? Well, you can also easily use Digital Rights Management Technologies (it's what Hollywood uses) to encrypt the video, and only the allowed player will be able to decrypt it and play it back.
Atlas+ is designed to simplify delivering videos-on-demand and give you all the options you require to upload, share, and analyze videos within your Confluence Spaces.
What it does
Atlas+ delivers a solution for uploading and streaming videos within your Confluence Cloud instance.
- Easy video upload in any Space. The app accepts (.mp4, .mov) video formats and will convert them to MPEG-DASH format for streaming stored in an S3 bucket.
- Embed the video using a macro on any page. The macro renders our video player that can play the video stream.
- Invite others to watch the video.
- Detailed Analytics on your video statistics, including watch rate, completion rate, and engagement. Know which parts of the video most people watched or skipped.
- Optionally protect the video with Digital Rights Management (DRM) technologies that will protect this video from being played elsewhere.
- Optionally generate auto subtitles for your videos. Currently, the auto subtitle feature supports only the English language.
[Extra Info] What is Digital Rights Management (DRM)?
Digital Rights Management (DRM) is a digital license system that allows content creators control who can use their content, and how they can use it. When a video is uploaded, it is encrypted with a media key, then if a user wants to watch this video, the system authenticates the user and then decides whether to provide a digital license to allow video playback. It's similar to what Netflix and Spotify utilize to protect their content and issue licenses only to subscribed users. With Atlas+, for example, your uploaded video will be encrypted and will only be allowed to playback on our video player that is integrated on your confluence page. Downloading the video using any stream capture extension, for example, will not work as other players can't request a license token to decrypt the video file.
How we built it
The app backend is a NodeJS app, and the frontend is built in React, but it also extends to different AWS services.
After a video is uploaded, we use AWS Mediaconvert to run the encoding jobs, and we store the output in S3 buckets. For Digital Rights Management, Mediaconvert will also encode the video after requesting an encryption license from a third-party provider that we've integrated with as our proxy for DRM licenses (for Widevine and PlayReady licenses). For subtitle generation, we use AWS Transcribe to generate text from the audio file, and then we convert the output to a suitable subtitle file using a serverless function.
The video player is built with the open-source Shaka Player, and we utilize websockets to capture the video events. We've built our own event management system for the analytics, and we calculate the data to create the charts and metrics.
Challenges we ran into
For DRM protected videos, we ran into the challenge of allowing the player to play within the same tab of the Confluence page. Since connect apps are rendered within an iframe, the iframe policy set by Confluence didn't allow access to encrypted-media. To mitigate this, we created an external player and we allowed the macro to open a new tab using the same JWT token generated by confluence to identify the user session and create the analytics.
I believe if this app goes to production, we would see if Atlassian can lift the iframe policy limitation.
Accomplishments that we are proud of
We are proud of the accomplishment of managing to integrate all these small components such as uploader, converter, DRM encoder, analytics into a full breathing app that provides unique value to Confluence cloud in terms of Digital Rights Management and built-in analytics dashboard. We are proud that we managed to do it. :)
What we learned
We are both software developers so there was a huge learning opportunity for us in understanding part of the domain of video engineering and the inner workings of what streaming media companies build, and how Digital Rights Management work. There was a ton of new terminology to know and understand, and there's still a lot. This project has been a huge learning opportunity.
What's next for Atlas+: Video Solutions For Confluence Cloud
This app is a prototype and was just built a week ago for this hackathon. We are going to look into ways to have this running on production soon.
To make it an all-round production-ready app, there's still some work to be done in ensuring full browser compatibility for the player especially for DRM protected videos. We've only integrated for Widevine licenses (which work on Chrome/Firefox) but we still need to request resources to have it integrated with Apple devices/browsers.
In terms of features, we've explored (even spiked some of them) some of the features that will be included in a potential version 1.0 of this app and they include:
- Organize the videos in playlists (or courses), and view analytics on the whole playlist.
- Add watermark to videos.
- Allow users to upload their own subtitles or edit the auto generated subtitles.
- Allow users to add jump marks on their videos.
- Extend the app to support Jira too.