AMSMigrate 1.0.0

Suggested Alternatives

MediaMigrate

Additional Details

The updated package to use

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global AMSMigrate --version 1.0.0
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local AMSMigrate --version 1.0.0
This package contains a .NET tool you can call from the shell/command line.
#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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
1.4.4 223 7/11/2023
1.4.3 239 7/11/2023
1.4.2 200 7/11/2023
1.4.1 193 7/10/2023
1.4.0 203 7/8/2023
1.3.1 226 7/6/2023
1.3.0 217 7/4/2023
1.2.8 232 6/30/2023
1.2.7 207 6/30/2023
1.2.6 235 6/30/2023
1.2.5 231 6/29/2023
1.2.4 319 6/29/2023
1.2.3 292 6/28/2023
1.2.2 291 6/28/2023
1.2.0 257 6/23/2023
1.1.7 257 6/21/2023
1.1.6 242 6/21/2023
1.1.5 277 6/20/2023
1.1.4 263 6/20/2023
1.1.2 294 6/14/2023
1.1.1 236 6/13/2023
1.1.0 254 6/13/2023
1.0.16 228 6/9/2023
1.0.15 252 6/8/2023
1.0.14 273 6/5/2023
1.0.13 238 6/3/2023
1.0.12 226 6/2/2023
1.0.11 238 5/31/2023
1.0.10 259 5/26/2023
1.0.9 246 5/26/2023
1.0.8 241 5/26/2023
1.0.7 229 5/25/2023
1.0.6 258 5/24/2023
1.0.5 235 5/24/2023
1.0.4 272 5/23/2023
1.0.3 223 5/23/2023
1.0.2 223 5/20/2023
1.0.1 214 5/19/2023
1.0.0 175 5/19/2023