【注意】 この記事は過去に別サイトで執筆したものを再掲載したものです。 内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。 |
VR180形式は、VR360形式の前方のみを抜き出した形式。視界後方のデータを省いてデータサイズを半分に。再生環境で要求されるリード速度も半分で済む(はず)。
しかし残念なことに世の中にはVR360形式しか対応していないプレイヤーもまだ存在していて、VR180形式のデータを再生すると180度→360度と解釈されて横方向に伸びてしまう。
そこで後方180度分の空間を付け加えることでVR360形式として再生できるようにしたい。
下記は、左右に並んでいる情報を上下に配置しなおしつつ、後方180度分のスペースを追加処理するオプション例。
$ ffmpeg.exe -i "input.mp4" \
-vf "split[left][right]; [left]crop=iw/2:ih:0:0,pad=iw*2:ih*2:iw/2:0[LEFT]; [right]crop=iw/2:ih:iw/2:0,pad=iw*2:ih:iw/2:0[RIGHT]; [LEFT][RIGHT]overlay=0:h" \
-acodec copy "output.mp4"
-vfコマンドは様々なエフェクトを追加するコマンド。
split[left][right]; | 入力ソースを[left]と[right]の2系統に分ける。名前を付けただけで同じデータ。 |
[left]crop=iw/2:ih:0:0, | [left]データから所定の部分を切抜く。引数は、切抜きサイズと切抜く場所の左上座標。 切抜きサイズは(iw/2:ih)なので、横方向に半分のサイズ。 切抜き場所は(0:0)なので左側半分のみのデータとなる。 |
pad=iw2:ih2:iw/2:0[LEFT]; | キャンパスサイズ変更して、結果を[LEFT]とする。引数は新しいキャンパスサイズと入力ソースの配置場所。 新キャンパスは(iw*2:ih)なので横方向に倍。 配置場所は(iw/2:0)なので新キャンパスの中央部分に配置される。 |
[right]crop=iw/2:ih:iw/2:0, | [right]データから所定の部分を切抜く。 切抜きサイズは(iw/2:ih)なので、横方向に半分のサイズ。 切抜き場所は(iw/2:0)なので右側半分のみのデータとなる。 |
pad=iw*2:ih:iw/2:0[RIGHT]; | キャンパスサイズ変更して、結果を[RIGHT]とする。[left]への処理と同じ。 |
[LEFT][RIGHT]overlay=0:h | [LEFT][RIGHT]として作成したソースを重ね合わせる。引数は[RIGHT]の左上を[LEFT]のどの位置に合わせるか。 (0:h)なので横方向は0なのでピッタリ重ね、縦方向はhなので[RIGHT]の縦サイズ。 重ね合わせとは言いつつ重なる部分はなく、[LEFT]を上、[RIGHT]を下に並べているイメージになる。 |
下記が、Intel HD graphicsの力を借りる版。-hwaccel qsv という部分と、 -c:v h264_qsv という部分がその指定です。
$ ffmpeg.exe -hwaccel qsv -i "input.mp4" -c:v h264_qsv \
-vf "split[left][right]; [left]crop=iw/2:ih:0:0,pad=iw*2:ih*2:iw/2:0[LEFT]; [right]crop=iw/2:ih:iw/2:0,pad=iw*2:ih:iw/2:0[RIGHT]; [LEFT][RIGHT]overlay=0:h" \
-acodec copy "output.mp4"
ffmpeg コマンドラインツール入門 第3回 – Morpho Tech Blog
https://techblog.morphoinc.com/entry/2020/07/21/100022