外部サービス (TokBox Archiving) によって WebRTC ストリームから記録された、VP8 トラックを含む .webm ファイルがあります。ストリームは適応型であるため、トラック内の各フレームは異なる解像度を持つ可能性があります。ほとんどのプレーヤー (Webkit ブラウザー内) は、トラックの説明 (常に 640x480) のビデオ解像度を使用し、フレームをこの解像度にスケーリングします。Firefox と VLC プレーヤーは実際のフレーム解像度を使用し、それぞれビデオ解像度を変更します。
私は2つの目標を達成したい:
- 追加のプラグインをインストールせずに、このビデオを Internet Explorer 9 以降で再生してください。
- フレームの解像度を 1 つの固定解像度に変更すると、ビデオが異なるブラウザーで同じように表示されます。
だから、私の計画は次のとおりです。
- ソース webm ファイルから実際のフレーム解像度 (PNG や BMP など) の画像にフレームを抽出します (どうすればそれができますか?)
- 画像の最大幅と最大高さを見つける
- 画像に黒いパディングを追加して、小さいフレームが新しいフレームの中央に来るようにします (サイズ MAX_WIDHTxMAX_HEIGHT)
- ffmpeg を使用して画像を h264 トラックに結合する
すべて正しいですか?どうすればこれを達成できますか?このアルゴリズムを何らかの方法で最適化できますか?
画像を抽出するために ffmpeg を試しましたが、トラック ヘッダーの解像度を使用して、実際のフレーム解像度を解析しません。いくつかの libwebm 関数が役立つと思います (フレーム ヘッダーを解析して画像を抽出するため)。多分誰かがこれを行うためのコードスニペットを持っていますか?
例 .webm (ソースをダウンロード、Google 変換バージョンは再生しない): https://drive.google.com/file/d/0BwFZRvYNn9CKcndhMzlVa0psX00/view?usp=sharing
TokBox サポートからのアダプティブ ストリームの公式説明: https://support.tokbox.com/hc/en-us/community/posts/206241666-Archived-video-resolution-is-supposed-to-be-720x1280-but-reports -as-640x480