メディアリンク
メディアリンク
Frame.ioは、プロジェクトにアップロードされたファイル(画像、動画、PDF など)を保存および処理します。APIを使用してファイルを取得する場合、基本応答にはファイル名、ステータス、Frame.ioアプリで開くためのview_urlなどのコアメタデータが含まれます。実際のファイルコンテンツ(オリジナル、プレビュー、または異なる品質のレンディション)にアクセスするには、includesを使用します。このガイドでは、List FilesおよびGet Fileエンドポイントで利用可能なメディアリンクインクルード、それぞれが返すもの、いつ使用するかについて説明します。
インクルードとは何ですか?
インクルードは、ファイル応答と一緒にリクエストできるオプションフィールドです。デフォルトでは、APIはコアファイルメタデータ(名前、ステータス、タイプ、タイムスタンプ、view_url)のみを返します。インクルードを使用すると、すべてが必要でない場合に応答を軽量に保ちながら、追加データをオプトインできます。
インクルードの追加方法
Get FileまたはList Filesリクエストで、インクルード名のカンマ区切りリストをincludeクエリパラメータとして渡します:
インクルードは、単一ファイルエンドポイントとリストエンドポイントの両方で同じように動作します。List Filesで使用する場合、インクルードは応答内のすべてのファイルに対して解決されます。
SDK例
リクエストされていないインクルードは、応答から完全に省略されます。
メディアリンクインクルード概要
アップロードされたオリジナルファイル(アップロード時とまったく同じ状態)
表示目的のPNGプレビュー画像
利用可能な最高品質の処理済みレンディション
低帯域幅のユースケース向けの最小サイズのレンディション
ストリーミングと再生用の低解像度180p H264動画トランスコード
スクラビングUIを作成するための動画フレームサムネイルのWebPスプライトシート
media_links.original
アップロードされた元のファイルそのままを指す署名付きURLを返します。処理やコンバージョンは行われません。
フィールド
使用する場合
ソースファイルが必要な場合にmedia_links.originalを使用します。例えば、ユーザーが元のMOV、MP4、MXF、AVI、PSD、PNG、またはTIFFをダウンロードできるようにする場合や、元のバイトを別のシステムに渡す場合などです。
リクエスト例
レスポンス例
これらのURLは一時的な署名付きS3 URLで、有効期限があります。キャッシュや保存は行わず、必要な時に毎回新しいURLをリクエストしてください。
media_links.thumbnail
アセットのPNGプレビュー画像を返します。高さは540pxに制限されます。これは処理済みレンディションで、元のファイルではありません。アカウント設定によっては透かしが適用される場合があります。
フィールド
使用する場面
media_links.thumbnailは、グリッドビュー、ギャラリー、ファイルピッカーなどでアセットの視覚的なプレビューを表示する必要がある場合に使用します。オリジナルよりも高速に読み込まれ、常にweb対応のPNG形式です。
リクエスト例
レスポンス例
media_links.high_quality
利用可能な最高品質の処理済みレンディションのダウンロードURLを返します。Frame.ioは最大2160pの解像度ラダーを通じてアップロードを処理します。APIはリクエスト時点で利用可能な最高のレンディションを返します。つまり、リクエスト時に540pレンディションのみが処理完了している場合、より高いレンディションが準備できるまでAPIは540pを返します。
フィールド
使用する場面
media_links.high_qualityは、ダウンストリーム処理用の高解像度レンディションの書き出しや、フル解像度プレビューの表示など、オリジナルを必要とせずに最高品質のバージョンが必要な場合に使用します。可能な限り最高の品質が必要な場合は、ファイルのstatusフィールドを確認し、ファイルがreadyになったらこのincludeをリクエストして、完全な解像度ラダーが処理されていることを確認してください。
リクエスト例
レスポンス例
media_links.efficient
利用可能な最小の処理済みレンディションのダウンロードURLを返します。これはhigh_qualityの反対です。Frame.ioは利用可能な最低解像度のレンディションを選択します。
フィールド
使用する場合
品質よりも帯域幅やファイルサイズが重要な場合にmedia_links.efficientを使用します。例えば、低帯域幅環境での素早いプレビュー生成や、フル解像度を必要としないサムネイルパイプラインへの供給などです。
リクエスト例
レスポンス例
media_links.video_h264_180
アセットの低解像度180p H264動画トランスコードのストリーミングおよびダウンロードURLを返します。
これはレガシーインクルードです。アセットに対して180pトランスコードが生成されなかった場合はnullになります。ほとんどのユースケースでは、特定のトランスコードの存在に依存するのではなく、利用可能な最適な低品質レンディションを選択するmedia_links.efficientを推奨します。
フィールド
使用する場合
具体的に保証された180p H264トランスコードが必要な場合にmedia_links.video_h264_180を使用します。例えば、この正確なフォーマットを必要とするレガシープレーヤーやパイプラインとの統合などです。特定のアセットにトランスコードが存在しない場合、両方のURLがnullになります。
video_h264_180ファイルにはオーディオは含まれていません。必要に応じて非常に効率的なプレビューに使用することを目的としています。
リクエストの例
応答の例
media_links.scrub_sheet
WebPスプライトシートを返します。これは、ビデオの長さ全体にわたって均等にサンプリングされたビデオフレームのサムネイルのグリッドを含む単一の画像です。これは、ユーザーがタイムライン上でドラッグするとプレーヤーがプレビューフレームを表示するビデオスクラビングUIの作成に使用されます。
スクラブシートはビデオアセットのみに対して生成されます。includeは画像、PDF、その他の非ビデオファイルに対してnull URLを返します。
フィールド
使用する場合
ユーザーがスクラブするときにプレビューサムネイルを表示する必要があるカスタムビデオプレーヤーやタイムライン UI を作成する場合は、media_links.scrub_sheet を使用します。各フレームに対して個別のリクエストを行うのではなく、スプライトシートはすべてのプレビューフレームを単一の画像ダウンロードにまとめます。
リクエストの例
レスポンスの例
スプライトシートからフレームを抽出する
スプライトシートは tile_x 列 × tile_y 行のグリッドです。指定されたフレームインデックス(ゼロベース)のサムネイルを表示するには、画像内での位置を計算します:
CSS background-position を使用して、スプライトシートから正しいタイルを表示できます:
再生位置(秒単位)をフレームインデックスにマッピングするには、ビデオの総再生時間とシート内のフレーム数を使用します:
metadata フィールドは実験的な API バージョンでのみ利用できます。安定版 v4 API では、scrub_sheet は download_url と url のみを返します。
複数のインクルードの組み合わせ
単一の API 呼び出しで複数のインクルードをリクエストできます:
適切なERPの選定
view_url — インクルードを必要とせずにすべてのファイル応答で利用可能 — は、Frame.io webアプリへの永続的なディープリンクです。これはメディアURLではありません。Frame.io UIを開き、有効期限はありません。プログラムでファイルを提供またはダウンロードする必要がある場合ではなく、ユーザーをFrame.ioで直接アセットをレビューまたはコメントするように誘導したい場合に使用してください。
インクルード可用性
メディアリンクインクルードは、Frame.ioがアップロードされたファイルの処理を完了した後にのみ入力されます。アップロード直後にインクルードをリクエストした場合、トランスコーディングが進行中の間、URLはnullになる可能性があります。ファイルオブジェクトのstatusフィールドを確認してください — ステータスがreadyになると、インクルードが利用可能になります。