AMSMigrate 1.0.0
The updated package to use
See the version list below for details.
dotnet tool install --global AMSMigrate --version 1.0.0
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local AMSMigrate --version 1.0.0
#tool dotnet:?package=AMSMigrate&version=1.0.0
nuke :add-package AMSMigrate --version 1.0.0
Azure Media Services Migration Tool
Overview
A rich and flexible command line tool to migrate your data from Azure Media Services. This tool helps you to migrate your media data from Azure Media Services (AMS). It can be used to just copy the data to other cloud storage like AWS S3 or GCS. Or can be packaged to be streamed directly from Azure storage without any service.
It has extensible support to migrate AMS assets to Azure storage or AWS S3 or GCS. Fairly easy to plugin another service (e.g mux.com or encoding.com) or another cloud storage if needed.
The tool supports both ffmpeg and shaka-packager to conver the videos to directly streamable format. The content is converted to CMAF format with both a DASH and HLS manifest to support a wide range of devices. The default is shaka packager because it can use pipes to reduce the temporary storage required but can changed via the command line.
Features
- Cross-Platform. Works on all platforms where .NET core is available.
- Simple command line interface. Intuitive and easy to use.
- Docker container to run anywhere or can be installed as a .NET tool.
- Support for packaging both VOD and live archive assets.
- Marks migrated assets and provides summary.
Open Issues
- More testing on AWS/GCP migration.
- Support to migrate AMS transforms to AWS Elemental Media Convert Job Specification.
- Support to convert AMS transforms to GCS Trancsode API Job templates.
- Support to migrate AMS Keys to AWS KMS or GCP Secret Manager.
How to Install
- Install .NET SDK for the platform you are runnig. Click here on how to download.
- Run the following command to install the tool
dotnet tool install -g amsmigrate
How to Run
Run the tool with -? to get more help
amsmigrate -?
A typical command is of the form
amsmigrate command [options]
Credentials used
The tools uses Azure Identity library for authentication. See here for various ways to authenticate and the settings needed. The identity used to migrate must have 'Contributor' role on the Azure Media Services account being migrated and 'Storage Blob Delegator' role on the storage account associated.
Types of Migration
The tool supports various types of migration depending on the asset format and the command line options.
- It can simply upload the files to the new storage account.
- For assets created by live events, it can convert to MP4 files and then upload.
- For direct streaming, it can convers the assets to CMAF files with a DASH and HLS manifest.
FFmpeg dependency
The tool uses ffmpeg for media format conversion. It doesn't ship a copy of FFmpeg itself but uses the one in the PATH.
- On Windows you can use winget or chocolatey to install ffmpeg.
winget install ffmpeg
- On Ubuntu/Debian Linux use apt to install ffmpeg
sudo apt install -y ffmpeg
- On RedHat Linux use dnf to install ffmpeg.
sudo dnf install ffmpeg
- On MacOs use brew to install ffmpeg
brew install ffmpeg
Temporary storage needed.
The tool uses temporary storage space for format conversion and the amount of storage needed is directly proportional to the size of the files in the asset.
Migrate to an Azure Storage Account.
Migrate to an AWS S3 account.
Migrate to a custom service.
- Clone the source code locally.
- Implement your custom migration.
- Build and Run the code locally. You can write your own custom migrator if needed
Running the tool in the Azure Cloud.
The tool is packaged as a docker container and is available to run in the cloud via Azure Container Instances or Azure Functions.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
This package has no dependencies.
Version | Downloads | Last updated | |
---|---|---|---|
1.4.4 | 261 | 7/11/2023 | |
1.4.3 | 272 | 7/11/2023 | |
1.4.2 | 235 | 7/11/2023 | |
1.4.1 | 229 | 7/10/2023 | |
1.4.0 | 246 | 7/8/2023 | |
1.3.1 | 264 | 7/6/2023 | |
1.3.0 | 261 | 7/4/2023 | |
1.2.8 | 277 | 6/30/2023 | |
1.2.7 | 237 | 6/30/2023 | |
1.2.6 | 273 | 6/30/2023 | |
1.2.5 | 262 | 6/29/2023 | |
1.2.4 | 353 | 6/29/2023 | |
1.2.3 | 333 | 6/28/2023 | |
1.2.2 | 340 | 6/28/2023 | |
1.2.0 | 301 | 6/23/2023 | |
1.1.7 | 297 | 6/21/2023 | |
1.1.6 | 307 | 6/21/2023 | |
1.1.5 | 331 | 6/20/2023 | |
1.1.4 | 313 | 6/20/2023 | |
1.1.2 | 339 | 6/14/2023 | |
1.1.1 | 279 | 6/13/2023 | |
1.1.0 | 296 | 6/13/2023 | |
1.0.16 | 267 | 6/9/2023 | |
1.0.15 | 298 | 6/8/2023 | |
1.0.14 | 326 | 6/5/2023 | |
1.0.13 | 276 | 6/3/2023 | |
1.0.12 | 287 | 6/2/2023 | |
1.0.11 | 286 | 5/31/2023 | |
1.0.10 | 297 | 5/26/2023 | |
1.0.9 | 298 | 5/26/2023 | |
1.0.8 | 288 | 5/26/2023 | |
1.0.7 | 278 | 5/25/2023 | |
1.0.6 | 305 | 5/24/2023 | |
1.0.5 | 276 | 5/24/2023 | |
1.0.4 | 319 | 5/23/2023 | |
1.0.3 | 263 | 5/23/2023 | |
1.0.2 | 268 | 5/20/2023 | |
1.0.1 | 238 | 5/19/2023 | |
1.0.0 | 198 | 5/19/2023 |