ストリーミング・プラットフォームが私たちのスクリーンを支配し、コンテンツの消費方法に革命をもたらし続ける中、堅牢で拡張性の高いストリーミング・サービスを構築することの重要性はかつてないほど高まっています。デバイスやプラットフォーム間の互換性を確保しつつ、コストを削減し、効率を最大化するにはどうすればよいのでしょうか?この記事では、ビデオのオンデマンド・トランスコーディングについて掘り下げます。
このチュートリアルでは、Linode Kubernetes Engineを使用してビデオトランスコーディングを設定し、トランスコーディングインフラ を需要に応じて拡張できるようにします。mp4ファイルをHLS(HTTP Live Streaming)に変換するプロセスを説明します。HLS はアダプティブ・ビットレート・ストリーミング機能を使用し、デバイスやネットワーク速度に関係なく、スムーズな再生と一貫した視聴体験を保証します。はじめに、mp4ファイル(すでにmp4としてお持ちのサンプル動画でもかまいません)を入力バケットにアップロードし、トランスコード・パートナーであるCapellaに送り、動画のトランスコード処理を依頼します。
Capella はアカマイのパートナーであり、Akamai Compute 上で実行可能なすぐに導入可能なソリューションを提供しています。Capella と提携したのは、当社のプラットフォーム上でエンコーダーを実行し、VOD アセットを Object Storageに保存し、アカマイの CDN で配信することができるからです。このパートナーシップにより、Kubernetes と Helm を使用したデプロイも可能になり、スケーリングがより簡単になりました。例えば、以下のチュートリアルでは、Capella のエンコーディング・マシンが自動的にスピンアップしてジョブ数に合わせてスケールアップし、ジョブが完了すると再びスケールダウンすることで、数千ドルのアイドル・コンピュート時間を節約しています。
前提条件
このチュートリアルを完了するには、 Linodeアカウントにサインアップする必要があります。登録は無料で、さらに100ドルのクレジットがもらえます!
- Linode APIトークン
- kubectlをインストールする
- ヘルメットの取り付け
- ここに記載されている外部Kubernetesツールをインストールする。
- カペラライセンス (無料ライセンスについてはsales@capellasystems.netにメールする)
ステップ1:Kubernetesクラスタの作成
最初のステップは、エンコーディングを行うKubernetesクラスターを作成することです。Akamai CloudのダッシュボードからKubernetesをクリックし、Create Clusterをクリックします。

次に、クラスタの設定をいくつか入力しよう。ここでは "transcoding-demo "と呼ぶことにしよう。ここで一番近いリージョンを選んでください。私の場合はロサンゼルスだ。また、Kubernetes Clusterで高可用性を有効にするために、High Availability Control Planeを有効にすることを推奨する。

Add Node Poolsセクションで、Dedicated 8GBプランから3ノードを追加します。この3つのノードは管理ノードで、1つは自動的にリーダーに選ばれ、残りの2つはマネージャーの冗長用です。

これらを追加すると、画面上部にCreate Clusterというボタンが表示される。これをクリックしてKubernetesクラスターを作成する。注:これには数分かかる場合があります。

これでKubernetes環境のセットアップは完了です。クラウドマネージャーのダッシュボードで、作成した3つのノードのステータスがRunningになっていることに注目してください。
次に、ダッシュボードから以下のリンクをクリックしてKubeconfigファイルをダウンロードしよう。ローカルマシンにダウンロードされます。ファイルは必ずKubernetesのディレクトリ(kubectlが設定されているのと同じ場所)に移動してください。

次に、Kubernetesダッシュボードのリンクをクリックして、Kubernetesダッシュボードを開きます。

このメッセージが表示されるので、先ほど作成したkubeconfigファイルでサインインするオプションをクリックします。

左のパネルからClusterをクリックすると、先ほど作成したノードが表示されます。

ステップ2: Helm設定ファイルの作成と編集
では、Cambria ClusterをKubernetes環境にデプロイするためのHelm Configuration Fileを作成・編集してみよう。Cambria Clusterは、大量の動画ファイルを処理するための、複数のCambria FTCワークステーションからなるスケーラブルなトランスコードネットワークだ。Cambria Cluster Managerは、ネットワーク全体でアクションをルーティングする。
まず、以下の2つのコマンドでCapella Cluster Configuration Files Archiveをダウンロードします:
curl -L -s -o capella-cluster.tgz
helm show values capella-cluster.tgz > capellaCambriaConfig.yaml
設定ファイルでは2つのフィールドを更新する必要があります: Capella License KeyとLinode API Tokenです。
ftcLicenseKeyフィールドに、(前提条件のセクションでsales@capellasystems.netにメールした後、カペラチームから)受け取ったライセンスキーを追加します。
次に、linodeAPITokenフィールドにLinode APIトークン(前提条件セクションのリンクを使って生成してください)を追加します。
ステップ 3: カンブリアクラスターのインストール
次に、Cambriaクラスタをインストールする必要がある。このクラスタは大量のビデオファイルを処理するために使用される。
helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml
ステータスがデプロイされた状態に変わっているのがわかるだろう。

この時点で、Kubernetes環境にデプロイされているコンポーネントがいくつかある。続行する前に、すべてがデプロイされるまで数分待つのがベストだ。
ステップ 4: Cambria Cluster Web UI を開く
Kubernetesダッシュボードの左パネルから、「サービス」をクリックする。次に、ミドルノードからIPアドレスをコピーする(ポート8161)。このポートはWeb UI専用です。

新しいタブで「https://」と入力し、IPアドレスを貼り付ける。(サイトを入力するためにAdvanced > Enter Siteをクリックする必要があるかもしれません)。Cambria Cluster Web UIが表示されます。capellaCambriaConfig.yamlファイルからWebUIの認証情報でログインします。(これらの認証情報を見つける方法の詳細については、こちらの8ページを確認してください)。

ステップ5:入力バケットと出力バケットを作成する。
mp4 動画を HLS フォーマットに変換していることを思い出してください。1つはソースと呼ばれるmp4ファイルの入力用、もう1つはアウトプットと呼ばれるHLSファイルの出力用です。
Akamai Cloud Manager にアクセスし、左のパネルからObject Storage をクリックします。そしてCreate Bucketをクリックします。これをcapellaと呼ぶことにしよう。上でKubernetesクラスターに選んだのと同じリージョンを選んでください。そしてCreate Bucketをクリックします。

バケツを作成したら、その場所をコピーして XML ファイルに貼り付けます。バケツの詳細ボタンをクリックし、バケツの位置の横にあるコピーボタンをクリックします。後で必要になるので、これをメモ帳に保存しておきましょう。

次に、バケツのアクセスキーを作成します。Access Keys をクリックし、Create Access Key をクリックします。

これをカペラ・アクセスと呼ぼう。

小さなポップアップが表示され、アクセスキーとシークレットキーが表示されます。後で必要になるので、これらをコピーしてメモ帳に貼り付けてください。保存したら、「I Have Saved My Secret Key」をクリックします。
オブジェクトストレージのバケットに、入力用と出力用の2つのフォルダを作成します。Bucketをクリックし、Create Folderをクリックします。入力フォルダを "source "とする。

出力フォルダも同じようにしよう。 これを「output」と呼ぶことにしよう。

ステップ 6: サンプル HLS ドキュメントのフィールドを編集します。
Capellaは、mp4からHLSへのトランスコード作業を行うためのサンプルファイルを送ってくれました。他にもサンプルファイルがあるので、メールするときにどれが欲しいか必ず聞いてください(上記の前提条件を確認してください)。必ずKubernetesフォルダに保存してください。
アクセスキーとシークレットキーをコピーし、XMLファイルの8行目と9行目にあるジョブ記述セクションに貼り付けます。

アップロード設定セクションの234行目と235行目に同じ値を追加します。

231 行目に、バケツのリージョンを貼り付けます。上のステップでメモ帳にコピーしたはずです。

次に、アップロード設定セクションで、バケツフィールドとロケーションフィールドを更新する必要がある。227行目でバケットフィールドを "capella "に、228行目でロケーションフィールドを "output "に更新する。(capellaというバケツを作成し、出力フォルダをoutputと呼ぶことを覚えておいてください)

ステップ 6: mp4ファイルを入力バケットにアップロードする
次に、入力バケツにmp4ファイルをアップロードしよう。愛犬の動画でもいいし、録画した料理動画でもいいし、どんなmp4ファイルでもいい。今回は flying5 という mp4 ファイルを使用します。Akamai Cloud Manager にアクセスして、ソースバケットに mp4 ファイルをアップロードします。

さて、XMLファイルに戻ろう。以下のように、347行目にソース・ファイルの場所を追加しよう。

ステップ7:トランスコードジョブの実行
さて、トランスコードする準備ができた!APIコールを使ってトランスコーディング・ジョブを実行します。以下のcurl のコマンドをいくつか置き換える必要がある。まず、Kubernetesダッシュボードに移動し、最初のノードからIPアドレスを取得する(ポート8650)。このポートはエンコーダージョブの通信に固有のものです。これをクリップボードにコピーし、どこかに貼り付けて保存します(.ipより前はすべて)。これはすぐに必要になります。

次に、capellaCambriaConfig.yaml ファイルから cambriaClusterAPIToken をコピーして保存します。curl 、usertokenの値をAPIトークンに置き換えてください。
次に、トランスコード・ジョブのxmlファイル名を追加します。私はmp4-hls-transcoding-job.xmlとして保存しました。
ターミナルからこのコマンドを実行してみよう。
curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml
ジョブが実行されていることを確認するために、Kubernetesダッシュボードを参照してみよう。Kubernetesのダッシュボードに移動し、ジョブリストのポートである8161番に対して以下のURLを開いてみよう。

ジョブが Cambria Cluster Manager に送信されると、Cambria の WebUI のジョブリストに表示されます。

これらのジョブは FTC エンコーディングマシンに配布され、実行されます。カンブリアクラスターマネージャーは、キューにジョブがない場合、自動的に新しいFTCマシンを起動します。キュー内のジョブ数が多い場合は、負荷に対応するために追加のFTCマシンが起動されます。
Akamai Linode Kubernetesのサマリーページから、新しいマシンがプロビジョニングされているのが見えます。マシンがプロビジョニングされると、KubernetesダッシュボードのNodesの下に表示され、Cluster Manager WebUIにも表示されます。利用可能になりクラスタに自動的に接続されると、ジョブは FTC マシンに配布されて実行されます。WebUIのJob Listで進捗を確認できます。

ジョブが完了すると、WebUI上でステータスが完了に変更されます。

異なるビデオタイプを含む3つの異なるビデオファイルが作成されます。アカマイのコンソールに戻ると、出力フォルダにいくつかのフォルダがある出力ファイルが表示されます。あるフォルダにはオーディオ、あるフォルダにはビデオ、そしてあるフォルダにはメタデータが入っています。

HLS対応のプレーヤー(ブラウザやサードパーティーのプラグインのようなもの)を使って再生することができる。
ビデオ・トランスコーディングは、現代のマルチメディア配信の重要な側面であり、このチュートリアルのステップに従うことで、この課題に簡単に取り組むことができるようになります!
まとめ
このビデオトランスコーディングの例は、Linode Kubernetes Engine(LKE)を使用した最新のマルチメディア配信の柔軟性とパワーを示しています。エンコーディングマシンはジョブの数に合わせて自動的にスピンアップし、ジョブが完了すると再びスケールダウンします。
ビデオのトランスコードに成功した後は、世界中に戦略的に分散されたアカマイのサーバーネットワークを活用して、HLS 形式のビデオを地理的な場所に関係なく視聴者に迅速かつシームレスに配信することができます。これにより、コンテンツ配信をアカマイの分散型エッジサーバーにオフロードすることで、オリジンサーバーの負荷を軽減することができます。これにより、ビデオ配信のパフォーマンスとスケーラビリティが向上するだけでなく、待ち時間やバッファリングが軽減され、全体的なユーザー体験が向上します。さらに、アカマイの CDN はアダプティブ・ビットレート・ストリーミングなどの高度な機能を提供しており、視聴者のネットワーク状況に応じてビデオ品質を自動的に調整することで、さまざまなデバイスや接続速度でスムーズな再生を実現します。これは特に、帯域幅の限られたモバイルデバイスや地域に高品質のビデオコンテンツを配信する上で非常に重要です。
参加するには
このチュートリアルでは、Akamai を使用して mp4 フォーマットのビデオを HLS フォーマットにトランスコードしました。この変換により、ストリーミング用の異なるデバイスとの互換性が保証されます。
ビデオ・トランスコーディングの実装方法についてもっとお知りになりたい方は、Twitterや LinkedInで私たちとつながるか、YouTubeチャンネルをご購読ください。
これらのテクニカルガイドに加えて、あなたやあなたの組織がビデオトランスコーディングとKubernetesソリューションの最適化を検討しているなら、サインアップして100ドルの無料クレジットを手に入れることで、Linodeのソリューションを試すことができます。
コメント