0

外部サービス (TokBox Archiving) によって WebRTC ストリームから記録された、VP8 トラックを含む .webm ファイルがあります。ストリームは適応型であるため、トラック内の各フレームは異なる解像度を持つ可能性があります。ほとんどのプレーヤー (Webkit ブラウザー内) は、トラックの説明 (常に 640x480) のビデオ解像度を使用し、フレームをこの解像度にスケーリングします。Firefox と VLC プレーヤーは実際のフレーム解像度を使用し、それぞれビデオ解像度を変更します。

私は2つの目標を達成したい:

  1. 追加のプラグインをインストールせずに、このビデオを Internet Explorer 9 以降で再生してください。
  2. フレームの解像度を 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

4

1 に答える 1

4

あなたが実行する場合

ffprobe -show_entries frame=width,height -of compact=p=0:nk=1 video.webm

次のような出力が得られます。

1254|800
1058|800
890|800
774|800
672|800

左の列は各フレームの実際の幅で、右の列は高さです。次に、各列の最大値を確認して、キャンバス サイズに使用できます。

次に実行します

ffmpeg -i video.webm -vf pad=MAXW:MAXH:(MAXW-iw)/2:(MAXH-ih)/2 out.mp4

ここで、MAXW と MAXH は、発見した値に置き換える必要があります。

于 2016-09-13T12:17:27.100 に答える