Advanced Search
Search Results
457 total results found
Implementing a thumbnail generator
Prerequisites Make sure you've read the previous page on implementing video transcoding with serverless code here. You will need the same setup in AWS Lambda to do this, and many of the concepts carry over. Generating thumbnails with ffmpeg The basic comman...
Head HTML
Head HTML for every page is loaded in two places: The core HeadHtml.php file, which loads the core libraries and CSS stylesheets needed for all pages, and inserts the CSRF token. Each page's own <head> tag, where page-specific content is loaded. In prod...
Media Submission Flow
Image Submissions When submitting an image, the following steps occur: User image is uploaded via flow.js to the webserver Image is uploaded to private S3 bucket, and upon successful upload, it is resized to 480p with a Lambda function, and this 480p prev...
Internal Credentials
Various development credentials are cached in the main cache server. A full list can be found in the Systems Manager -> Parameter Store console. When acquiring credentials, webservers first check the cache servers, and if the credential is not present there,...
Overview
Most cloud providers have some form of dedicated transcoding service that is specifically designed for that purpose. AWS has Elemental MediaConvert, which lets you run "jobs" to transcode videos to different sizes, and provides an absolute ton of options. Use...
Implementation: EventBridge & Lambda
Getting the result of the MediaConvert job Since creating the job command doesn't tell us anything about the result of the job, we need to use AWS EventBridge to notify us about the job results, and we need an AWS Lambda function to receive the notification a...
Configuring SNS
Moving S3 files after job completion
Beware that, if you use EventBridge to send a notification somewhere after a MediaConvert job completes (to e.g. invoke a Lambda function) - the notification may arrive before the finished files are actually accessible in S3. Attempting to copy the newly-tran...
Using a pre-built CDN image transcoding solution
When transcoding images, you have two options: use a prebuilt solution, or make one. Most CDN providers have services that will automatically resize images for you, to display them to your users, so that you don't have to code anything: you just add a query s...
Using a pre-built video transcoding solution
A lot of cloud providers, particularly CDN providers, offer some form of video streaming service, that takes care of transcoding and serving videos for you. These can seem like easy, convenient solutions - which to be fair, they are - but they have specific ad...
March 14
Hi all, hope you're doing well ^^ updates below! I'm still having a rough time atm, but trying to get stuff done, nonetheless. Gallery SQL fix: now includes reblogs from follows I realised the current stored procedure for retrieving galleries (a huge beast ...
JSON.stringify
Certain objects (like Maps) can't be stringified directly - you'll get an empty object as the result, as they don't have any properties. Example: let map = new Map(); map.set("key1", "value1"); // '{}' JSON.stringify(map); // '[["key1","value1"]]' JS...
Uploading videos to Bunny Stream
The Bunny Stream documentation is a little vague, so here are instructions for using the API in PHP. Create Video Before actually uploading a video, you need to create a video using the video_createvideo endpoint. In PHP the code to do so looks like this: $...
Creating and configuring a video library
To use Bunny Stream, you need to create a video library, and you'll want to configure various parts of it to work nicely. In the Bunny dashboard, go to Stream and create a new library. The API menu for the library you created has the API key you need to progr...
Bunny Stream webhooks
The Bunny stream webhooks do not have a set list of IPs they originate from, making it hard to utilise in a test environment unless your test environment is open to the internet. There is no specific authentication method; you can use a unique query string or...
hls.js
Homepage https://github.com/video-dev/hls.js What is it? A JavaScript library for enabling HLS video support in browsers. Why did we choose it? HLS (HTTP Live Streaming) videos aren't natively supported by a lot of browsers, but is the most common format ...
Bunny Stream
Homepage https://bunny.net/stream/ What is it? A service for uploading and managing videos to be sent to website users. Why did we choose it? Price and data privacy. Amazon Web Services has various separated services that would enable us to do this, but t...
Server-side loading
Text
Client-side loading and updating
Text
Lightsail IPv6 addresses
While Lightsail supports IPv6, you can't assign static IPv6 addresses. They'll remain the same for a given instance, even if you stop and start it, but if you delete an instance and recreate it for example, you'll have to use a new IPv6 address and change your...