Skip to main content

Hosting 360 Degree Videos and Images in a CORS Supported Server

Why: If you have been playing with 360 degree videos and images like me in the recent past (specially with the awesome release of Mozilla aframe.io) then probably you are looking for an inexpensive or preferable free place to host your images/videos since most of the free places where we can upload them don't support CORS.

How: 

Using AWS to Host 360° Virtual Reality Panoramas & 360° Video


AWS S3 has no inode limit and works especially well with multi-res panorama. AWS S3 also works well for large streaming 360° Video Files.

Create an AWS S3 Account

If you do not already have an AWS S3 account, sign up for a Free Amazon Web Services Trial Account, see the following video for details

Create a Bucket

Once you have created your account you will need to create at least one Bucket, see the following video for simple instructions if you are not already familiar with basics of using AWS S3

Set permissions for your bucket

use the AWS web interface to set AWS Bucket Policy & CORS Configuration, setting these as below will automatically set public read access permissions for all files in that bucket, otherwise you will have to set permission per file and may have trouble viewing your panoramas


AWS S3 Bucket Permissions: Bucket Policy and CORS Configuration

Go to your "All Buckets" list on your S3 page, click on the "Properties" button in the upper right, select your bucket, and click on the "Permissions" option, and set the following -

Edit Bucket Policy -

Replace MY_BUCKET_NAME with the name of the bucket you are editing

{
"Version": "2008-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "readonly policy",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::MY_BUCKET_NAME/*"
}
]
}

Add CORS Configuration

<CORSRule>
        <AllowedOrigin>http://*
        <AllowedOrigin>https://*
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Uploading Panoramas

You can upload your panoramas to AWS S3 either using the web interface, or with ftp clients such as Cyberduck or Transmit, and many others

Comments

Popular posts from this blog

Curious case of Cisco AnyConnect and WSL2

One thing Covid has taught me is the importance of VPN. Also one other thing COVID has taught me while I work from home  is that your Windows Machine can be brilliant  as long as you have WSL2 configured in it. So imagine my dismay when I realized I cannot access my University resources while being inside the University provided VPN client. Both of the institutions I have affiliation with, requires me to use VPN software which messes up WSL2 configuration (which of course I realized at 1:30 AM). Don't get me wrong, I have faced this multiple times last two years (when I was stuck in India), and mostly I have been lazy and bypassed the actual problem by side-stepping with my not-so-noble  alternatives, which mostly include one of the following: Connect to a physical machine exposed to the internet and do an ssh tunnel from there (not so reliable since this is my actual box sitting at lab desk, also not secure enough) Create a poor man's socks proxy in that same box to have...

Deep Dive into the Google Agent Development Kit (ADK): Features and Code Examples

In our previous overview, we introduced the Google Agent Development Kit (ADK) as a powerful Python framework for building sophisticated AI agents. Now, let's dive deeper into some of the specific features that make ADK a compelling choice for developers looking to create agents that can reason, plan, use tools, and interact effectively with the world. 1. The Core: Configuring the `LlmAgent` The heart of most ADK applications is the LlmAgent (aliased as Agent for convenience). This agent uses a Large Language Model (LLM) for its core reasoning and decision-making. Configuring it effectively is key: name (str): A unique identifier for your agent within the application. model (str | BaseLlm): Specify the LLM to use. You can provide a model name string (like 'gemini-1.5-flash') or an instance of a model class (e.g., Gemini() ). ADK resolves string names using its registry. instruction (str | Callable): This is crucial for guiding the agent's be...

Build Smarter AI Agents Faster: Introducing the Google Agent Development Kit (ADK)

The world is buzzing about AI agents – intelligent entities that can understand goals, make plans, use tools, and interact with the world to get things done. But building truly capable agents that go beyond simple chatbots can be complex. You need to handle Large Language Model (LLM) interactions, manage conversation state, give the agent access to tools (like APIs or code execution), orchestrate complex workflows, and much more. Introducing the Google Agent Development Kit (ADK) , a comprehensive Python framework from Google designed to significantly simplify the process of building, testing, deploying, and managing sophisticated AI agents. Whether you're building a customer service assistant that interacts with your internal APIs, a research agent that can browse the web and summarize findings, or a home automation hub, ADK provides the building blocks you need. Core Concepts: What Makes ADK Tick? ADK is built around several key concepts that make agent development more s...