Improving Video Uploads: Introducing The Bunny Stream Resumable & Pre-Signed API

Posted by: 
Dejan Grofelnik Pelzel
Dejan Grofelnik Pelzel Graeme Inglis
May 17th, 2022

We designed Bunny Stream to provide developers with a better way to deliver online video. Uploading a new video is as simple as calling a single API call or fetching from an existing URL. The uploaded file then gets automatically transcoded, processed, stored, and accelerated by our global CDN. Bunny Stream allows developers to integrate end-to-end video delivery in just a few minutes.

However, in many cases, it's not our users directly providing video content for Bunny Stream. In many cases, the end-user uploads content themselves. Up to this point, our customers needed to maintain their own uploading endpoints and had to worry about scalability, security, system maintenance, and ensure that the files ended up being successfully sent to our servers. Such a system creates many opportunities for failure and creates an unpleasant experience. We wanted to make this process much more simple, more reliable, and also faster.

Decreasing Development Complexity Through Pre-signed Upload Requests

To help developers reduce complexity and simplify uploading, we are excited to announce support for pre-signed video uploads. These allow our users to generate specially crafted headers that the end-users can then use to authenticate with the upload API directly. This removes the need for an intermediary API and allows for a much more efficient upload processing.

To pre-sign an upload, a simple SHA256 needs to be generated along with an expiration date and sent as the authentication details to the API.

Increasing Reliability With Resumable Uploads

Next, we wanted to improve the reliability of uploads. Uploading large video files is notoriously susceptible to network issues. With large 4k files that can take hours to upload, it's very easy for minor network issues to interrupt uploads and force users to start from scratch. While this doesn't affect server-to-server uploads as much due to high speeds, it can have severe consequences for end-user uploads from locations with less stable internet connections and, most importantly, for mobile uploads.

When switching from full-file uploads to chunk-based resumable uploading on the bunny.net panel, we saw upload issues reduced by over 90%. This offered a significantly improved experience for our users, and we immediately knew that we wanted to add the same ability to other developers that are building video platforms with Bunny Stream.

Today, we are excited to announce that our tus-based resumable video upload API is now open to everyone. The goal of the tus is to provide a simple, open upload standard to help developers easily upload videos and solve the issues with poor connections. Tus is an open protocol with existing libraries and implementations available for most popular programming languages, making the implementation an absolute breeze.

Improving Upload Speed Performance

Finally, we have also improved the performance of upload speeds. By moving the ingest points to the edge, the Bunny Stream upload API now sits closer to your users and allows them to quickly and efficiently upload files to the platform. They are then efficiently transferred over our internal network to Edge Storage and processed by the transcoding service.

Thanks to global distribution across 5+ datacenters, we have seen upload speeds improve up to 10X, especially in regions outside of Europe where the original API was based.

Start Uploading!

If you're eager to start uploading, check out our API documentation that will allow you to get started in just a few minutes.

Continuing to build a better way to deliver online video!

We started Bunny Stream with a mission of building a better way for developers to deliver online video, and we are just getting started. We have some exciting announcements ahead in the following weeks.

If you enjoy what we are doing and would like to join in building the best video platform that helps other developers build amazing products, please make sure to check out our careers page.