メディアアプリケーションの基本

Derek Herman
Derek Herman
Joe Medley
Joe Medley

メディアを操作するには、多くの場合、メディア ファイルの特性を変更する必要があります。 たとえばビットレートや解像度などです簡単に使い始められる方法を見つけると、 とても厄介ですこのページでは、Google Cloud で使用するツールと 簡単にインストールできます。

まず、2 つの一般的なコマンドライン メディア ユーティリティの基本的な使用方法を説明します。 Shaka PackagerFFmpeg を使用して、ツールを迅速にインストールできます。 2 つのアプリケーションをカバーする理由どちらも強力で便利ですが ウェブ用のメディアを準備するために必要なものもすべて揃っていません。また、 メディア変換メディア暗号化 これらの 2 つのアプリケーションでの一般的なオペレーションを多数紹介しています。

ファイル操作タスクに使用できるオプションは これらのアプリケーションだけではありません 最も一般的で強力な方法です。その他のオプションには MiroHandBrakeVLC などのアプリケーションを開発しました。エンコードやコード変換もあります。 サービス(ZencoderAmazon Elastic EncoderGoogle Transcoder API など)で利用できます。

Shaka Packager

Shaka Packager は、無料のメディア パッケージ SDK です。メディア プレーヤーを使っていた場合 Shaka Packager を使用してファイルを準備します。これは、 は、最も一般的な 2 つの動画ストリーミング プロトコルの変換をサポートしています。 HTTP(DASH)または HTTP Live Streaming(HLS)を介したアダプティブ ストリーミング。シャカ Packager は主要なセキュリティ機能(一般的な暗号化、Widevine Digital)をサポート 。また、ライブ ストリーミングとビデオ オンデマンドにも対応しています。

パッケージに記載されている内容にもかかわらず、このユーティリティは C++ 開発できます。メディア ソフトウェアを作成するためのライブラリとしてだけでなく、 ウェブ再生用のメディア ファイルを準備するためのコマンドライン ユーティリティ。こちらの 後者の方が有用です実際 ウェブメディアクリエイターにとって Shaka Packager を使用すると、一部のタスクに費用をかけずに 高価な商用アプリケーションには 最適です

Shaka Packager コマンドの基本的なパターンは次のとおりです。

packager stream_descriptor [stream_descriptor-2 [stream_descriptor-n]] [flags]

packager -help」と入力しても、このような結果は期待できません。この例は、 例が反映されています。これは、 Shaka Packager のドキュメントstream_descriptor は複数あります。 パターンに含まれるアイテムです。ここには示していませんが、ユーザーが動画を操作することは可能です 音声ストリームを 1 つのコマンドで 個別に表示できます

この基本的なパターンを、ファイルの特徴を示す簡単な使用方法と比較してみましょう。 この例では、同等の部分を並べています。

packager stream_descriptor [stream_descriptor-n] [flags]

packager input=glocken.mp4                       --dump_stream_info

このコマンドの出力内容は次のとおりです。

File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
 codec_string: avc1.640028
 time_scale: 30000
 duration: 300300 (10.0 seconds)
 is_encrypted: false
 codec: H264
 width: 1920
 height: 1080
 pixel_aspect_ratio: 1:1
 trick_play_factor: 0
 nalu_length_size: 4

Stream [1] type: Audio
 codec_string: mp4a.40.2
 time_scale: 48000
 duration: 481280 (10.0 seconds)
 is_encrypted: false
 codec: AAC
 sample_bits: 16
 num_channels: 2
 sampling_frequency: 48000
 language: eng
 seek_preroll_ns: 20833

メディア ファイルの基本で説明されている特性を探します。 いくつか注目しましょう高さと幅はフル HD で正しく設定されており、 特に推奨のコーデックは、オーディオ コーデックと動画コーデックです。 音声には AAC、動画には H264 です。また、ストリームはラベル付きで識別され、 あります。これらは音声と動画を操作する操作に便利です。 個別に選択できます。

上記の出力にはビットレートが表示されていません。何か足りないものがあっても この出力は読みやすいので、できる限り使用します。必要なとき Shaka Packager が取得できない情報(ビットレートなど)には FFmpeg を使用します。

FFmpeg

FFmpeg は、録画、変換、ストリーミング用の無料アプリケーションでも提供されます。 作成します。その能力は、Shaka Packager の能力よりも劣ります。 違うだけです。

FFmpeg コマンドの基本的なパターンは次のようになります。

ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output

Shaka Packager と同様に、このアプリケーションは複数のストリームを処理できます。その一部 オプションが複数の場所で使用されており、ファイル出力の扱い方が異なる コマンドの場所によりますこの点に注意して Stack Overflow の FFmpeg 質問、および同様のサイトをご覧ください。

ここでも、基本的なパターンと、ファイルを表示するための例を比較します。 説明します。

    ffmpeg [GeneralOptions] [InputFileOptions] -i input        [OutputFileOptions] output

    ffmpeg                                     -i glocken.mp4

リクエストした情報に加えて、エラー メッセージも表示される 必要があります。なぜなら、これは技術的には正しくないからです。 使用しています。私たちにとって重要な情報を表示するため、これを使用しています。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.17.100
  Duration: 00:01:47.53, start: 0.000000, bitrate: 10715 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 10579 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified

Docker を使用したアプリケーションのインストール

引き続きコマンドを試してみる場合は、 必要なツールを手動で取得することも、Docker を使用して簡単な方法で取得することもできます。新しい P-MAX キャンペーンを 時間を大幅に節約できますそれに加え では、簡単な設定で手順を簡単に設定できます。

  1. まず、パソコンに media-tools という名前の新しいディレクトリを作成します。 名前は自由に指定できますが、以下の説明では ディレクトリ名として media-tools を使用していると仮定します。

  2. media-tools 内に docker ディレクトリと media ディレクトリを作成します。 これにより、media ディレクトリがビルド コンテキストに含まれなくなります。大事なことだぞ。 media は操作を実行する予定のファイルが保存される場所であるため、 非常に大きくなることがあります。Dockerfile を直接挿入する イメージを再ビルドすると、media-tools によってイメージのビルドが遅くなります。 インストールされているバージョンを変更するなど、

  3. /media-tools/docker/Dockerfile を作成し、次のビルド手順を追加します。

    FROM google/shaka-packager:release-v2.4.3 as packager
    FROM jrottenberg/ffmpeg:4.3.2-alpine38
    COPY --from=packager /usr/bin /usr/bin
    ENTRYPOINT  ["sh"]
    
  4. イメージをビルドします。

    docker build -t media-tools ./docker
    
  5. イメージをインタラクティブ シェルとして実行します。Linux の場合:

    docker run -w /media -v ${PWD}/media:/media -it --rm media-tools
    /media #
    

    Windows の場合:

    docker run -w /media -v %cd%/media:/media -it --rm media-tools
    /media #
    
で確認できます。

イメージの実行中に、FFmpeg と Shaka Packager のバージョンを確認できます。 ffmpeg -version を実行して、すべてが正常に完了したことを検証します。 packager --version。出力は次のようになります。

/media # ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil      56. 51.100 / 56. 51.100
libavcodec     58. 91.100 / 58. 91.100
libavformat    58. 45.100 / 58. 45.100
libavdevice    58. 10.100 / 58. 10.100
libavfilter     7. 85.100 /  7. 85.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  7.100 /  5.  7.100
libswresample   3.  7.100 /  3.  7.100
libpostproc    55.  7.100 / 55.  7.100
/media # packager --version
packager version v2.4.3-dd9870075f-release

Shaka Packager と FFmpeg の使用を試したら、次の手順に進んでください。 次のメディア ストリーミングの基本では、基本的なコンセプトを学べます。