その中でもMediaConvertは、動画/音楽メディアのエンコードを担当するサービス。Transcoderの上位互換サービスという扱いになっている。動画や音楽をエンコードするだけならコンテナとffmpegで自前で実装するのも柔軟かつ安いので良いが、「権利関係の問題に安心が置ける/エンコード自体が安定してて楽...」という理由から弊社ではそれなりに使用頻度が高い。このMediaConvertを使っている中で悩まされたパターンを備忘的にメモ。(Output)Heightなどサイズに関わる設定項目は、基本的に出力コーデック問わず奇数ピクセルでの設定ができない。APIを叩いた時点でエラーが起きる。するなりして偶数にしましょう。クロッピングや出力ポジショニングは「縁ぴったりの値」に弱いMediaConvertは動画ソースの一部だけを切り取って、出力する動画の任意の地点に任意の大きさで表示する機能がある。この機能を使って、動画の黒帯(レターボックス/ピラーボックス)などを消すクロップ処理を書くケースがあった。クロップすべき領域があろうがなかろうが共通でCrop指定をjob実行命令に付与していたが、「ソースのサイズと同じサイズのクロッピング」はそもそもできなかった。[1].これはjobのput自体は成功するが、実行後にエラーとなる。対策としては単純に、「ソースのサイズと同じサイズのクロッピング」では該当箇所をnullにして送ること。StepFunctionsのTaskのdoneを叩く....という機構を書いていた。ActivityのTokenは1kbくらいあり、この長すぎるTokenは1つのuserMetadataのvalueとしては乗らず、結構困ってしまった。対策としては、(1)大人しくS3やDynamo等にTokenの実体を移し、userMetadataでは参照だけ保持する(2)複数のuserMetadataにtokenを分割して載せる、みたいな闇の実装を書くあたりを検討した。自体の使用を一時取りやめることになったので特には問題ならなくなった。同じような機構を書くときには(1)を採用するかも。(StepFunctionsとBatchやMediaConvertの連携の構成がもっと綺麗に定義できるといいなあ)動画の結合とクロッピングを同時に行うとエラー3動画の結合とソースクロッピングを1回のエンコードで済まそうとしたときに、Elementalのjobがずっと実行状態になり、中断もできないというエラーがあった。(これは問い合わせもしたので、現在は対応されている可能性がある)以上、使っていく上で色々あったが、なにかあるたびにたまに追記する。行ってきましたathena、Digdag、Embulkを使って予算消化済みの広告配信を停止するVueのコンテキストを侵しつつTypeScriptの型を効かせるGo言語を学習し始めて、簡単なCRUDアプリをクリーンアーキテクチャで作成するまで3Go言語を学習し始めて、簡単なCRUDアプリをクリーンアーキテクチャで作成するまで2Go言語を学習し始めて、簡単なCRUDアプリをクリーンアーキテクチャで作成するまで1AboutWanoグループのエンジニアやデザイナーが使っている技術、興味のある技術、(色んな意味で)はまっている技術などをお伝えしていきます。